cita-sdk-ruby 0.20.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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