cita-sdk-ruby 0.20.0 → 0.21.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 191e6e673e063a855ab3d9bff925ed99d88cb211d3a6600fbead317c5059ca87
4
- data.tar.gz: 320fb2ce7b5b1fdec68fa20f1b68d171599bf682caaaa539e4f1d3b18750a57b
3
+ metadata.gz: 13fa5f39c9959e2ad5e9ac909e53abd2b28e9a4622c2e6308092dc7d973b4689
4
+ data.tar.gz: 7e1cfdbf8c05e9c0505d563d5ffd7141894b9ef23b878623d863066b50e18087
5
5
  SHA512:
6
- metadata.gz: cda5eb17355ba2889eeb10faed7cd1755f62a7c19fd0981b03447c2dacbb04ed009488dcacaeff314bf59dce6cee241d8493b76551f2345e6afc793bb3fb33a5
7
- data.tar.gz: eb19a729cb48b60b23890925955b5839c7f2ac31983e9de6e4779eac22fadd8621d8cd264ef2974c6b833663d1c789b4f1f987ea6a3804f44551fdce6c40e6a3
6
+ metadata.gz: a6a162dd52d2c41de0c2b62126b36a1094fdd25d0e1f063f46ecf3e2cd33dc3fba44532ce2f49eddb4130c4f5276b2788282b51a79303a3a7ab071ef0146dea1
7
+ data.tar.gz: c02e438621c191e2d9eadd074e6c95a409334dee6e914b139e6df8662d00b707659ce4856c3f1b3ffe56453f3c970b9f3eeccc771969cb3107091a82676893f4
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cita-sdk-ruby (0.20.0)
4
+ cita-sdk-ruby (0.21.0)
5
5
  activesupport (~> 5.2.1)
6
6
  ciri-crypto (= 0.1.1)
7
7
  faraday (~> 0.15.3)
data/README.md CHANGED
@@ -54,6 +54,8 @@ content = CITA::TransactionSigner.encode(transaction, "you private key")
54
54
 
55
55
  # you can unsign content by `decode` method
56
56
  CITA::TransactionSigner.decode(content)
57
+ # you can set `recover` to false if you don't want to recover from address and public key
58
+ CITA::TransactionSigner.decode(content, recover: false)
57
59
  ```
58
60
 
59
61
  send transaction
@@ -63,7 +65,7 @@ cita.rpc.send_transaction(transaction, private_key)
63
65
 
64
66
  transfer tokens
65
67
  ```ruby
66
- cita.rpc.transfer(to: "to address", value: 1000, private_key)
68
+ cita.rpc.transfer(to: "to address", value: 1000, private_key: "your private key")
67
69
  ```
68
70
 
69
71
  contract
@@ -93,6 +95,10 @@ response = contract.send_func(tx: tx, private_key: private_key, method: :transfe
93
95
  * rename to `cita-sdk-ruby`
94
96
  * rename top module name to `CITA`
95
97
 
98
+ ### v0.21.0
99
+ * add `recover` option for decode transaction, for CITA v0.21 provide `from` in `getTransaction` rpc call
100
+ * rename protobuf `Crypto` enum
101
+
96
102
  ## Contributing
97
103
 
98
104
  Bug reports and pull requests are welcome on GitHub at https://github.com/cryptape/cita-sdk-ruby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
@@ -61,11 +61,19 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
61
61
  add_message "BlockBody" do
62
62
  repeated :transactions, :message, 1, "SignedTransaction"
63
63
  end
64
+ add_message "CompactBlockBody" do
65
+ repeated :tx_hashes, :bytes, 1
66
+ end
64
67
  add_message "Block" do
65
68
  optional :version, :uint32, 1
66
69
  optional :header, :message, 2, "BlockHeader"
67
70
  optional :body, :message, 3, "BlockBody"
68
71
  end
72
+ add_message "CompactBlock" do
73
+ optional :version, :uint32, 1
74
+ optional :header, :message, 2, "BlockHeader"
75
+ optional :body, :message, 3, "CompactBlockBody"
76
+ end
69
77
  add_message "BlockWithProof" do
70
78
  optional :blk, :message, 1, "Block"
71
79
  optional :proof, :message, 2, "Proof"
@@ -87,8 +95,8 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
87
95
  value :Bft, 2
88
96
  end
89
97
  add_enum "Crypto" do
90
- value :SECP, 0
91
- value :SM2, 1
98
+ value :DEFAULT, 0
99
+ value :RESERVED, 1
92
100
  end
93
101
  end
94
102
 
@@ -102,7 +110,9 @@ module CITA::Protos
102
110
  UnverifiedTransaction = Google::Protobuf::DescriptorPool.generated_pool.lookup("UnverifiedTransaction").msgclass
103
111
  SignedTransaction = Google::Protobuf::DescriptorPool.generated_pool.lookup("SignedTransaction").msgclass
104
112
  BlockBody = Google::Protobuf::DescriptorPool.generated_pool.lookup("BlockBody").msgclass
113
+ CompactBlockBody = Google::Protobuf::DescriptorPool.generated_pool.lookup("CompactBlockBody").msgclass
105
114
  Block = Google::Protobuf::DescriptorPool.generated_pool.lookup("Block").msgclass
115
+ CompactBlock = Google::Protobuf::DescriptorPool.generated_pool.lookup("CompactBlock").msgclass
106
116
  BlockWithProof = Google::Protobuf::DescriptorPool.generated_pool.lookup("BlockWithProof").msgclass
107
117
  BlockTxs = Google::Protobuf::DescriptorPool.generated_pool.lookup("BlockTxs").msgclass
108
118
  BlackList = Google::Protobuf::DescriptorPool.generated_pool.lookup("BlackList").msgclass
@@ -45,13 +45,11 @@ module CITA
45
45
  CITA::Utils.from_bytes(encoded_unverified_tx)
46
46
  end
47
47
 
48
- # unsign transaction
48
+ # get sender info (from address & public key)
49
49
  #
50
- # @param tx_content [String] hex string
51
- def simple_decode(tx_content)
52
- content_bytes = CITA::Utils.to_bytes(tx_content)
53
- unverified_transaction = Protos::UnverifiedTransaction.decode(content_bytes)
54
-
50
+ # @param unverified_transaction [Hash]
51
+ # @return [Hash] address & public_key
52
+ def sender_info(unverified_transaction)
55
53
  signature = unverified_transaction["signature"]
56
54
 
57
55
  transaction = unverified_transaction["transaction"]
@@ -63,23 +61,40 @@ module CITA
63
61
  from_address = Utils.keccak256(pubkey[1..-1])[-20..-1]
64
62
  from_address_hex = Utils.from_bytes(from_address)
65
63
 
66
- sender = {
64
+ {
67
65
  address: from_address_hex,
68
66
  public_key: pubkey_hex
69
67
  }
68
+ end
70
69
 
71
- {
72
- unverified_transaction: unverified_transaction.to_h,
73
- sender: sender
70
+ # decode transaction, CITA v0.21 returns the `from` address in `getTransaction` RPC call
71
+ # so you can not to recover `from` address from context
72
+ #
73
+ # @param tx_content [String] hex string
74
+ # @param recover [Boolean] set to false if you don't want to recover from address, default is true
75
+ def simple_decode(tx_content, recover: true)
76
+ content_bytes = CITA::Utils.to_bytes(tx_content)
77
+ unverified_transaction = Protos::UnverifiedTransaction.decode(content_bytes)
78
+
79
+ info = {
80
+ unverified_transaction: unverified_transaction.to_h
74
81
  }
82
+
83
+ if recover
84
+ sender = sender_info(unverified_transaction)
85
+ info[:sender] = sender
86
+ end
87
+
88
+ info
75
89
  end
76
90
 
77
91
  # decode and support forks
78
92
  #
79
93
  # @param tx_content [String] hex string
94
+ # @param recover [Boolean] set to false if you don't want to recover from address, default is true
80
95
  # @return [Hash]
81
- def original_decode(tx_content)
82
- data = simple_decode(tx_content)
96
+ def original_decode(tx_content, recover: true)
97
+ data = simple_decode(tx_content, recover: recover)
83
98
  utx = data[:unverified_transaction]
84
99
  tx = utx[:transaction]
85
100
  version = tx[:version]
@@ -100,9 +115,10 @@ module CITA
100
115
  # decode and parse bytes to hex string
101
116
  #
102
117
  # @param tx_content [String] hex string
118
+ # @param recover [Boolean] set to false if you don't want to recover from address, default is true
103
119
  # @return [Hash]
104
- def decode(tx_content)
105
- data = original_decode(tx_content)
120
+ def decode(tx_content, recover: true)
121
+ data = original_decode(tx_content, recover: recover)
106
122
  utx = data[:unverified_transaction]
107
123
  tx = utx[:transaction]
108
124
  version = tx[:version]
data/lib/cita/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CITA
4
- VERSION = "0.20.0"
4
+ VERSION = "0.21.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cita-sdk-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.0
4
+ version: 0.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - classicalliu
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-21 00:00:00.000000000 Z
11
+ date: 2019-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler