steem-ruby 0.9.1 → 0.9.6

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.
Files changed (67) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +1 -1
  3. data/README.md +83 -10
  4. data/Rakefile +128 -31
  5. data/lib/steem.rb +49 -0
  6. data/lib/steem/api.rb +38 -36
  7. data/lib/steem/base_error.rb +32 -11
  8. data/lib/steem/block_api.rb +23 -3
  9. data/lib/steem/broadcast.rb +165 -2
  10. data/lib/steem/marshal.rb +231 -0
  11. data/lib/steem/mixins/jsonable.rb +37 -0
  12. data/lib/steem/mixins/retriable.rb +22 -13
  13. data/lib/steem/mixins/serializable.rb +45 -0
  14. data/lib/steem/operation.rb +141 -0
  15. data/lib/steem/operation/account_create.rb +10 -0
  16. data/lib/steem/operation/account_create_with_delegation.rb +12 -0
  17. data/lib/steem/operation/account_update.rb +8 -0
  18. data/lib/steem/operation/account_witness_proxy.rb +4 -0
  19. data/lib/steem/operation/account_witness_vote.rb +5 -0
  20. data/lib/steem/operation/cancel_transfer_from_savings.rb +4 -0
  21. data/lib/steem/operation/challenge_authority.rb +5 -0
  22. data/lib/steem/operation/change_recovery_account.rb +5 -0
  23. data/lib/steem/operation/claim_account.rb +5 -0
  24. data/lib/steem/operation/claim_reward_balance.rb +6 -0
  25. data/lib/steem/operation/comment.rb +9 -0
  26. data/lib/steem/operation/comment_options.rb +10 -0
  27. data/lib/steem/operation/convert.rb +5 -0
  28. data/lib/steem/operation/create_claimed_account.rb +10 -0
  29. data/lib/steem/operation/custom.rb +5 -0
  30. data/lib/steem/operation/custom_binary.rb +8 -0
  31. data/lib/steem/operation/custom_json.rb +6 -0
  32. data/lib/steem/operation/decline_voting_rights.rb +4 -0
  33. data/lib/steem/operation/delegate_vesting_shares.rb +5 -0
  34. data/lib/steem/operation/delete_comment.rb +4 -0
  35. data/lib/steem/operation/escrow_approve.rb +8 -0
  36. data/lib/steem/operation/escrow_dispute.rb +7 -0
  37. data/lib/steem/operation/escrow_release.rb +10 -0
  38. data/lib/steem/operation/escrow_transfer.rb +12 -0
  39. data/lib/steem/operation/feed_publish.rb +4 -0
  40. data/lib/steem/operation/limit_order_cancel.rb +4 -0
  41. data/lib/steem/operation/limit_order_create.rb +8 -0
  42. data/lib/steem/operation/limit_order_create2.rb +8 -0
  43. data/lib/steem/operation/prove_authority.rb +4 -0
  44. data/lib/steem/operation/recover_account.rb +6 -0
  45. data/lib/steem/operation/report_over_production.rb +5 -0
  46. data/lib/steem/operation/request_account_recovery.rb +6 -0
  47. data/lib/steem/operation/reset_account.rb +5 -0
  48. data/lib/steem/operation/set_reset_account.rb +5 -0
  49. data/lib/steem/operation/set_withdraw_vesting_route.rb +6 -0
  50. data/lib/steem/operation/transfer.rb +6 -0
  51. data/lib/steem/operation/transfer_from_savings.rb +7 -0
  52. data/lib/steem/operation/transfer_to_savings.rb +6 -0
  53. data/lib/steem/operation/transfer_to_vesting.rb +5 -0
  54. data/lib/steem/operation/vote.rb +6 -0
  55. data/lib/steem/operation/withdraw_vesting.rb +4 -0
  56. data/lib/steem/operation/witness_set_properties.rb +5 -0
  57. data/lib/steem/operation/witness_update.rb +7 -0
  58. data/lib/steem/rpc/base_client.rb +14 -2
  59. data/lib/steem/rpc/http_client.rb +17 -1
  60. data/lib/steem/stream.rb +385 -0
  61. data/lib/steem/transaction.rb +96 -0
  62. data/lib/steem/transaction_builder.rb +77 -70
  63. data/lib/steem/type/amount.rb +6 -0
  64. data/lib/steem/version.rb +1 -1
  65. data/steem-ruby.gemspec +9 -4
  66. metadata +203 -56
  67. data/Gemfile.lock +0 -73
@@ -0,0 +1,96 @@
1
+ module Steem
2
+ class Transaction
3
+ include JSONable
4
+ include Utils
5
+
6
+ ATTRIBUTES = %i(id ref_block_num ref_block_prefix expiration operations
7
+ extensions signatures)
8
+
9
+ attr_accessor *ATTRIBUTES
10
+
11
+ def initialize(options = {})
12
+ if !!(hex = options.delete(:hex))
13
+ marshal = Marshal.new(hex: hex)
14
+ marshal.transaction(trx: self)
15
+ end
16
+
17
+ options.each do |k, v|
18
+ raise Steem::ArgumentError, "Invalid option specified: #{k}" unless ATTRIBUTES.include?(k.to_sym)
19
+
20
+ send("#{k}=", v)
21
+ end
22
+
23
+ self.operations ||= []
24
+ self.extensions ||= []
25
+ self.signatures ||= []
26
+
27
+ self.expiration = case @expiration
28
+ when String then Time.parse(@expiration + 'Z')
29
+ else; @expiration
30
+ end
31
+ end
32
+
33
+ def inspect
34
+ properties = ATTRIBUTES.map do |prop|
35
+ unless (v = instance_variable_get("@#{prop}")).nil?
36
+ v = if v.respond_to? :strftime
37
+ v.strftime('%Y-%m-%dT%H:%M:%S')
38
+ else
39
+ v
40
+ end
41
+
42
+ "@#{prop}=#{v}"
43
+ end
44
+ end.compact.join(', ')
45
+
46
+ "#<#{self.class.name} [#{properties}]>"
47
+ end
48
+
49
+ def expiration
50
+ if @expiration.respond_to? :strftime
51
+ @expiration.strftime('%Y-%m-%dT%H:%M:%S')
52
+ else
53
+ @expiration
54
+ end
55
+ end
56
+
57
+ def expired?
58
+ @expiration.nil? || @expiration < Time.now
59
+ end
60
+
61
+ def [](key)
62
+ key = key.to_sym
63
+ send(key) if self.class.attributes.include?(key)
64
+ end
65
+
66
+ def []=(key, value)
67
+ key = key.to_sym
68
+ send("#{key}=", value) if self.class.attributes.include?(key)
69
+ end
70
+
71
+ def ==(other_trx)
72
+ return true if self.equal? other_trx
73
+ return false unless self.class == other_trx.class
74
+
75
+ begin
76
+ return false if self[:ref_block_num].to_i != other_trx[:ref_block_num].to_i
77
+ return false if self[:ref_block_prefix].to_i != other_trx[:ref_block_prefix].to_i
78
+ return false if self[:expiration].to_i != other_trx[:expiration].to_i
79
+ return false if self[:operations].size != other_trx[:operations].size
80
+
81
+ op_values = self[:operations].map do |type, value|
82
+ [type.to_s, value.values.map{|v| v.to_s.gsub(/[^a-zA-Z0-9-]/, '')}]
83
+ end.flatten.sort
84
+
85
+ other_op_values = other_trx[:operations].map do |type, value|
86
+ [type.to_s, value.values.map{|v| v.to_s.gsub(/[^a-zA-Z0-9-]/, '')}]
87
+ end.flatten.sort
88
+ # binding.pry unless op_values == other_op_values
89
+ op_values == other_op_values
90
+ rescue => e
91
+ # binding.pry
92
+ false
93
+ end
94
+ end
95
+ end
96
+ end
@@ -28,9 +28,11 @@ module Steem
28
28
 
29
29
  attr_accessor :app_base, :database_api, :block_api, :expiration, :operations
30
30
  attr_writer :wif
31
- attr_reader :signed
31
+ attr_reader :signed, :testnet, :force_serialize
32
32
 
33
33
  alias app_base? app_base
34
+ alias testnet? testnet
35
+ alias force_serialize? force_serialize
34
36
 
35
37
  def initialize(options = {})
36
38
  @app_base = !!options[:app_base] # default false
@@ -47,6 +49,8 @@ module Steem
47
49
 
48
50
  @wif = [options[:wif]].flatten
49
51
  @signed = false
52
+ @testnet = !!options[:testnet]
53
+ @force_serialize = !!options[:force_serialize]
50
54
 
51
55
  if !!(trx = options[:trx])
52
56
  trx = case trx
@@ -54,44 +58,28 @@ module Steem
54
58
  else; trx
55
59
  end
56
60
 
57
- trx_options = {
58
- ref_block_num: trx['ref_block_num'],
59
- ref_block_prefix: trx['ref_block_prefix'],
60
- extensions: (trx['extensions']),
61
- operations: trx['operations'],
62
- signatures: (trx['signatures']),
63
- }
64
-
65
- trx_options[:expiration] = case trx['expiration']
66
- when String then Time.parse(trx['expiration'] + 'Z')
67
- else; trx['expiration']
68
- end
69
-
70
- options = options.merge(trx_options)
61
+ @trx = Transaction.new(trx)
71
62
  end
72
63
 
73
- @ref_block_num = options[:ref_block_num]
74
- @ref_block_prefix = options[:ref_block_prefix]
75
- @operations = options[:operations] || []
76
- @expiration = options[:expiration]
77
- @extensions = options[:extensions] || []
78
- @signatures = options[:signatures] || []
64
+ @trx ||= Transaction.new
79
65
  @chain = options[:chain] || :steem
80
66
  @error_pipe = options[:error_pipe] || STDERR
81
- @chain_id = case @chain
67
+ @chain_id = options[:chain_id]
68
+ @chain_id ||= case @chain
82
69
  when :steem then NETWORKS_STEEM_CHAIN_ID
83
70
  when :test then NETWORKS_TEST_CHAIN_ID
84
71
  else; raise UnsupportedChainError, "Unsupported chain: #{@chain}"
85
72
  end
73
+
74
+ if testnet? && @chain_id == NETWORKS_STEEM_CHAIN_ID
75
+ raise UnsupportedChainError, "Unsupported testnet chain id: #{@chain_id}"
76
+ end
86
77
  end
87
78
 
88
79
  def inspect
89
- properties = %w(
90
- ref_block_num ref_block_prefix expiration operations extensions
91
- signatures
92
- ).map do |prop|
80
+ properties = %w(trx).map do |prop|
93
81
  if !!(v = instance_variable_get("@#{prop}"))
94
- "@#{prop}=#{v}"
82
+ "@#{prop}=#{v.inspect}"
95
83
  end
96
84
  end.compact.join(', ')
97
85
 
@@ -99,21 +87,12 @@ module Steem
99
87
  end
100
88
 
101
89
  def reset
102
- @ref_block_num = nil
103
- @ref_block_prefix = nil
104
- @expiration = nil
105
- @operations = []
106
- @extensions = []
107
- @signatures = []
90
+ @trx = Transaction.new
108
91
  @signed = false
109
92
 
110
93
  self
111
94
  end
112
95
 
113
- def expired?
114
- @expiration.nil? || @expiration < Time.now
115
- end
116
-
117
96
  # If the transaction can be prepared, this method will do so and set the
118
97
  # expiration. Once the expiration is set, it will not re-prepare. If you
119
98
  # call {#put}, the expiration is set {::Nil} so that it can be re-prepared.
@@ -122,7 +101,7 @@ module Steem
122
101
  #
123
102
  # @return {TransactionBuilder}
124
103
  def prepare
125
- if expired?
104
+ if @trx.expired?
126
105
  catch :prepare_header do; begin
127
106
  @database_api.get_dynamic_global_properties do |properties|
128
107
  block_number = properties.last_irreversible_block_num
@@ -139,9 +118,9 @@ module Steem
139
118
  result
140
119
  end
141
120
 
142
- @ref_block_num = (block_number - 1) & 0xFFFF
143
- @ref_block_prefix = unhexlify(header.previous[8..-1]).unpack('V*')[0]
144
- @expiration ||= (Time.parse(properties.time + 'Z') + EXPIRE_IN_SECS).utc
121
+ @trx.ref_block_num = (block_number - 1) & 0xFFFF
122
+ @trx.ref_block_prefix = unhexlify(header.previous[8..-1]).unpack('V*')[0]
123
+ @trx.expiration ||= (Time.parse(properties.time + 'Z') + EXPIRE_IN_SECS).utc
145
124
  end
146
125
  end
147
126
  rescue => e
@@ -159,9 +138,9 @@ module Steem
159
138
 
160
139
  # Sets operations all at once, then prepares.
161
140
  def operations=(operations)
162
- @operations = operations.map{ |op| normalize_operation(op) }
141
+ @trx.operations = operations.map{ |op| normalize_operation(op) }
163
142
  prepare
164
- @operations
143
+ @trx.operations
165
144
  end
166
145
 
167
146
  # A quick and flexible way to append a new operation to the transaction.
@@ -187,8 +166,8 @@ module Steem
187
166
  # builder.put(vote: vote1).put(vote: vote2)
188
167
  # @return {TransactionBuilder}
189
168
  def put(type, op = nil)
190
- @expiration = nil
191
- @operations << normalize_operation(type, op)
169
+ @trx.expiration = nil
170
+ @trx.operations << normalize_operation(type, op)
192
171
  prepare
193
172
  self
194
173
  end
@@ -211,9 +190,17 @@ module Steem
211
190
  # ]],
212
191
  # :signatures => ["1c45b65740b4b2c17c4bcf6bcc3f8d90ddab827d50532729fc3b8f163f2c465a532b0112ae4bf388ccc97b7c2e0bc570caadda78af48cf3c261037e65eefcd941e"]
213
192
  # }
214
- def transaction
215
- prepare
216
- sign
193
+ def transaction(options = {prepare: true, sign: true})
194
+ options[:prepare] = true unless options.has_key? :prepare
195
+ options[:sign] = true unless options.has_key? :sign
196
+
197
+ prepare if !!options[:prepare]
198
+
199
+ if !!options[:sign]
200
+ sign
201
+ else
202
+ @trx
203
+ end
217
204
  end
218
205
 
219
206
  # Appends to the `signatures` array of the transaction, built from a
@@ -222,39 +209,42 @@ module Steem
222
209
  # @return {Hash | TransactionBuilder} The fully signed transaction if a `wif` is provided or the instance of the {TransactionBuilder} if a `wif` has not yet been provided.
223
210
  def sign
224
211
  return self if @wif.empty?
225
- return self if expired?
226
-
227
- trx = {
228
- ref_block_num: @ref_block_num,
229
- ref_block_prefix: @ref_block_prefix,
230
- expiration: @expiration.strftime('%Y-%m-%dT%H:%M:%S'),
231
- operations: @operations,
232
- extensions: @extensions,
233
- signatures: @signatures
234
- }
212
+ return self if @trx.expired?
235
213
 
236
214
  unless @signed
237
215
  catch :serialize do; begin
238
- transaction_hex_args = if app_base?
239
- {trx: trx}
240
- else
241
- trx
242
- end
243
-
244
- @database_api.get_transaction_hex(transaction_hex_args) do |result|
216
+ transaction_hex.tap do |result|
245
217
  hex = if app_base?
246
218
  result.hex
247
219
  else
248
220
  result
249
221
  end
222
+
223
+ unless force_serialize?
224
+ derrived_trx = Transaction.new(hex: hex)
225
+ derrived_ops = derrived_trx.operations
226
+ derrived_trx.operations = derrived_ops.map do |op|
227
+ op_name = if app_base?
228
+ op[:type].to_sym
229
+ else
230
+ op[:type].to_s.sub(/_operation$/, '').to_sym
231
+ end
232
+
233
+ normalize_operation op_name, JSON[op[:value].to_json]
234
+ end
235
+
236
+ raise SerializationMismatchError unless @trx == derrived_trx
237
+ end
250
238
 
251
- hex = @chain_id + hex[0..-4] # Why do we have to chop the last two bytes?
239
+ hex = hex[0..-4] # drop empty signature array
240
+ @trx.id = Digest::SHA256.hexdigest(unhexlify(hex))[0..39]
241
+
242
+ hex = @chain_id + hex
252
243
  digest = unhexlify(hex)
253
244
  digest_hex = Digest::SHA256.digest(digest)
254
245
  private_keys = @wif.map{ |wif| Bitcoin::Key.from_base58 wif }
255
246
  ec = Bitcoin::OpenSSL_EC
256
247
  count = 0
257
- sigs = []
258
248
 
259
249
  private_keys.each do |private_key|
260
250
  sig = nil
@@ -269,11 +259,10 @@ module Steem
269
259
  break if canonical? sig
270
260
  end
271
261
 
272
- @signatures << hexlify(sig)
262
+ @trx.signatures << hexlify(sig)
273
263
  end
274
264
 
275
265
  @signed = true
276
- trx[:signatures] = @signatures
277
266
  end
278
267
  rescue => e
279
268
  if can_retry? e
@@ -285,7 +274,25 @@ module Steem
285
274
  end; end
286
275
  end
287
276
 
288
- Hashie::Mash.new trx
277
+ @trx
278
+ end
279
+
280
+ def transaction_hex
281
+ trx = transaction(prepare: true, sign: false)
282
+
283
+ transaction_hex_args = if app_base?
284
+ {trx: trx}
285
+ else
286
+ trx
287
+ end
288
+
289
+ @database_api.get_transaction_hex(transaction_hex_args) do |result|
290
+ if app_base?
291
+ result[:hex]
292
+ else
293
+ result
294
+ end
295
+ end
289
296
  end
290
297
 
291
298
  # @return [Array] All public keys that could possibly sign for a given transaction.
@@ -13,6 +13,10 @@ module Steem
13
13
  new(amount).to_s
14
14
  end
15
15
 
16
+ def self.to_bytes(amount)
17
+ new(amount).to_bytes
18
+ end
19
+
16
20
  def initialize(value)
17
21
  super(:amount, value)
18
22
 
@@ -51,6 +55,8 @@ module Steem
51
55
  when 'STEEM' then 3
52
56
  when 'VESTS' then 6
53
57
  when 'SBD' then 3
58
+ when 'TESTS' then 3
59
+ when 'TBD' then 3
54
60
  else; raise TypeError, "Asset #{@asset} unknown."
55
61
  end
56
62
  end
data/lib/steem/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Steem
2
- VERSION = '0.9.1'
2
+ VERSION = '0.9.6'
3
3
  AGENT_ID = "steem-ruby/#{VERSION}"
4
4
  end
data/steem-ruby.gemspec CHANGED
@@ -17,21 +17,26 @@ Gem::Specification.new do |spec|
17
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test)/}) }
18
18
  spec.require_paths = ['lib']
19
19
 
20
- spec.add_development_dependency 'bundler', '~> 1.16', '>= 1.16.1'
21
- spec.add_development_dependency 'rake', '~> 12.3', '>= 12.3.0'
20
+ spec.add_development_dependency 'bundler', '~> 2.1', '>= 1.16.1'
21
+ spec.add_development_dependency 'rake', '~> 13.0', '>= 12.3.0'
22
22
  spec.add_development_dependency 'minitest', '~> 5.10', '>= 5.10.3'
23
23
  spec.add_development_dependency 'minitest-line', '~> 0.6', '>= 0.6.4'
24
24
  spec.add_development_dependency 'minitest-proveit', '~> 1.0', '>= 1.0.0'
25
25
  spec.add_development_dependency 'webmock', '~> 3.3', '>= 3.3.0'
26
26
  spec.add_development_dependency 'simplecov', '~> 0.15', '>= 0.15.1'
27
- spec.add_development_dependency 'vcr', '~> 4.0', '>= 4.0.0'
27
+ spec.add_development_dependency 'vcr', '~> 6.0', '>= 4.0.0'
28
28
  spec.add_development_dependency 'yard', '~> 0.9', '>= 0.9.12'
29
29
  spec.add_development_dependency 'pry', '~> 0.11', '>= 0.11.3'
30
30
  spec.add_development_dependency 'awesome_print', '~> 1.8', '>= 1.8.0'
31
+ spec.add_development_dependency 'rb-readline', '~> 0.5', '>= 0.5.5'
32
+ spec.add_development_dependency 'irb', '~> 1.0', '>= 1.0.0'
33
+ spec.add_development_dependency 'highline', '~> 2.0', '>= 2.0.3'
31
34
 
32
35
  spec.add_dependency 'json', '~> 2.1', '>= 2.1.0'
33
36
  spec.add_dependency 'logging', '~> 2.2', '>= 2.2.0'
34
- spec.add_dependency 'hashie', '~> 3.5', '>= 3.5.7'
37
+ spec.add_dependency 'hashie', '~> 4.1', '>= 3.5.7'
35
38
  spec.add_dependency 'bitcoin-ruby', '~> 0.0', '>= 0.0.18'
36
39
  spec.add_dependency 'ffi', '~> 1.9', '>= 1.9.23'
40
+ spec.add_dependency 'bindata', '~> 2.4', '>= 2.4.4'
41
+ spec.add_dependency 'base58', '~> 0.2', '>= 0.2.3'
37
42
  end
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: steem-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anthony Martin
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-28 00:00:00.000000000 Z
11
+ date: 2021-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.16'
20
17
  - - ">="
21
18
  - !ruby/object:Gem::Version
22
19
  version: 1.16.1
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: '2.1'
23
23
  type: :development
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '1.16'
30
27
  - - ">="
31
28
  - !ruby/object:Gem::Version
32
29
  version: 1.16.1
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '2.1'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rake
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '12.3'
40
37
  - - ">="
41
38
  - !ruby/object:Gem::Version
42
39
  version: 12.3.0
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '13.0'
43
43
  type: :development
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: '12.3'
50
47
  - - ">="
51
48
  - !ruby/object:Gem::Version
52
49
  version: 12.3.0
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '13.0'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: minitest
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -94,42 +94,42 @@ dependencies:
94
94
  name: minitest-proveit
95
95
  requirement: !ruby/object:Gem::Requirement
96
96
  requirements:
97
- - - "~>"
98
- - !ruby/object:Gem::Version
99
- version: '1.0'
100
97
  - - ">="
101
98
  - !ruby/object:Gem::Version
102
99
  version: 1.0.0
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '1.0'
103
103
  type: :development
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: '1.0'
110
107
  - - ">="
111
108
  - !ruby/object:Gem::Version
112
109
  version: 1.0.0
110
+ - - "~>"
111
+ - !ruby/object:Gem::Version
112
+ version: '1.0'
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: webmock
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
- - - "~>"
118
- - !ruby/object:Gem::Version
119
- version: '3.3'
120
117
  - - ">="
121
118
  - !ruby/object:Gem::Version
122
119
  version: 3.3.0
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '3.3'
123
123
  type: :development
124
124
  prerelease: false
125
125
  version_requirements: !ruby/object:Gem::Requirement
126
126
  requirements:
127
- - - "~>"
128
- - !ruby/object:Gem::Version
129
- version: '3.3'
130
127
  - - ">="
131
128
  - !ruby/object:Gem::Version
132
129
  version: 3.3.0
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: '3.3'
133
133
  - !ruby/object:Gem::Dependency
134
134
  name: simplecov
135
135
  requirement: !ruby/object:Gem::Requirement
@@ -154,22 +154,22 @@ dependencies:
154
154
  name: vcr
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '4.0'
160
157
  - - ">="
161
158
  - !ruby/object:Gem::Version
162
159
  version: 4.0.0
160
+ - - "~>"
161
+ - !ruby/object:Gem::Version
162
+ version: '6.0'
163
163
  type: :development
164
164
  prerelease: false
165
165
  version_requirements: !ruby/object:Gem::Requirement
166
166
  requirements:
167
- - - "~>"
168
- - !ruby/object:Gem::Version
169
- version: '4.0'
170
167
  - - ">="
171
168
  - !ruby/object:Gem::Version
172
169
  version: 4.0.0
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '6.0'
173
173
  - !ruby/object:Gem::Dependency
174
174
  name: yard
175
175
  requirement: !ruby/object:Gem::Requirement
@@ -214,82 +214,142 @@ dependencies:
214
214
  name: awesome_print
215
215
  requirement: !ruby/object:Gem::Requirement
216
216
  requirements:
217
+ - - ">="
218
+ - !ruby/object:Gem::Version
219
+ version: 1.8.0
217
220
  - - "~>"
218
221
  - !ruby/object:Gem::Version
219
222
  version: '1.8'
223
+ type: :development
224
+ prerelease: false
225
+ version_requirements: !ruby/object:Gem::Requirement
226
+ requirements:
220
227
  - - ">="
221
228
  - !ruby/object:Gem::Version
222
229
  version: 1.8.0
230
+ - - "~>"
231
+ - !ruby/object:Gem::Version
232
+ version: '1.8'
233
+ - !ruby/object:Gem::Dependency
234
+ name: rb-readline
235
+ requirement: !ruby/object:Gem::Requirement
236
+ requirements:
237
+ - - "~>"
238
+ - !ruby/object:Gem::Version
239
+ version: '0.5'
240
+ - - ">="
241
+ - !ruby/object:Gem::Version
242
+ version: 0.5.5
223
243
  type: :development
224
244
  prerelease: false
225
245
  version_requirements: !ruby/object:Gem::Requirement
226
246
  requirements:
227
247
  - - "~>"
228
248
  - !ruby/object:Gem::Version
229
- version: '1.8'
249
+ version: '0.5'
230
250
  - - ">="
231
251
  - !ruby/object:Gem::Version
232
- version: 1.8.0
252
+ version: 0.5.5
233
253
  - !ruby/object:Gem::Dependency
234
- name: json
254
+ name: irb
235
255
  requirement: !ruby/object:Gem::Requirement
236
256
  requirements:
257
+ - - ">="
258
+ - !ruby/object:Gem::Version
259
+ version: 1.0.0
237
260
  - - "~>"
238
261
  - !ruby/object:Gem::Version
239
- version: '2.1'
262
+ version: '1.0'
263
+ type: :development
264
+ prerelease: false
265
+ version_requirements: !ruby/object:Gem::Requirement
266
+ requirements:
240
267
  - - ">="
241
268
  - !ruby/object:Gem::Version
242
- version: 2.1.0
243
- type: :runtime
269
+ version: 1.0.0
270
+ - - "~>"
271
+ - !ruby/object:Gem::Version
272
+ version: '1.0'
273
+ - !ruby/object:Gem::Dependency
274
+ name: highline
275
+ requirement: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - "~>"
278
+ - !ruby/object:Gem::Version
279
+ version: '2.0'
280
+ - - ">="
281
+ - !ruby/object:Gem::Version
282
+ version: 2.0.3
283
+ type: :development
244
284
  prerelease: false
245
285
  version_requirements: !ruby/object:Gem::Requirement
246
286
  requirements:
287
+ - - "~>"
288
+ - !ruby/object:Gem::Version
289
+ version: '2.0'
290
+ - - ">="
291
+ - !ruby/object:Gem::Version
292
+ version: 2.0.3
293
+ - !ruby/object:Gem::Dependency
294
+ name: json
295
+ requirement: !ruby/object:Gem::Requirement
296
+ requirements:
297
+ - - ">="
298
+ - !ruby/object:Gem::Version
299
+ version: 2.1.0
247
300
  - - "~>"
248
301
  - !ruby/object:Gem::Version
249
302
  version: '2.1'
303
+ type: :runtime
304
+ prerelease: false
305
+ version_requirements: !ruby/object:Gem::Requirement
306
+ requirements:
250
307
  - - ">="
251
308
  - !ruby/object:Gem::Version
252
309
  version: 2.1.0
310
+ - - "~>"
311
+ - !ruby/object:Gem::Version
312
+ version: '2.1'
253
313
  - !ruby/object:Gem::Dependency
254
314
  name: logging
255
315
  requirement: !ruby/object:Gem::Requirement
256
316
  requirements:
257
- - - "~>"
258
- - !ruby/object:Gem::Version
259
- version: '2.2'
260
317
  - - ">="
261
318
  - !ruby/object:Gem::Version
262
319
  version: 2.2.0
320
+ - - "~>"
321
+ - !ruby/object:Gem::Version
322
+ version: '2.2'
263
323
  type: :runtime
264
324
  prerelease: false
265
325
  version_requirements: !ruby/object:Gem::Requirement
266
326
  requirements:
267
- - - "~>"
268
- - !ruby/object:Gem::Version
269
- version: '2.2'
270
327
  - - ">="
271
328
  - !ruby/object:Gem::Version
272
329
  version: 2.2.0
330
+ - - "~>"
331
+ - !ruby/object:Gem::Version
332
+ version: '2.2'
273
333
  - !ruby/object:Gem::Dependency
274
334
  name: hashie
275
335
  requirement: !ruby/object:Gem::Requirement
276
336
  requirements:
277
- - - "~>"
278
- - !ruby/object:Gem::Version
279
- version: '3.5'
280
337
  - - ">="
281
338
  - !ruby/object:Gem::Version
282
339
  version: 3.5.7
340
+ - - "~>"
341
+ - !ruby/object:Gem::Version
342
+ version: '4.1'
283
343
  type: :runtime
284
344
  prerelease: false
285
345
  version_requirements: !ruby/object:Gem::Requirement
286
346
  requirements:
287
- - - "~>"
288
- - !ruby/object:Gem::Version
289
- version: '3.5'
290
347
  - - ">="
291
348
  - !ruby/object:Gem::Version
292
349
  version: 3.5.7
350
+ - - "~>"
351
+ - !ruby/object:Gem::Version
352
+ version: '4.1'
293
353
  - !ruby/object:Gem::Dependency
294
354
  name: bitcoin-ruby
295
355
  requirement: !ruby/object:Gem::Requirement
@@ -330,6 +390,46 @@ dependencies:
330
390
  - - ">="
331
391
  - !ruby/object:Gem::Version
332
392
  version: 1.9.23
393
+ - !ruby/object:Gem::Dependency
394
+ name: bindata
395
+ requirement: !ruby/object:Gem::Requirement
396
+ requirements:
397
+ - - "~>"
398
+ - !ruby/object:Gem::Version
399
+ version: '2.4'
400
+ - - ">="
401
+ - !ruby/object:Gem::Version
402
+ version: 2.4.4
403
+ type: :runtime
404
+ prerelease: false
405
+ version_requirements: !ruby/object:Gem::Requirement
406
+ requirements:
407
+ - - "~>"
408
+ - !ruby/object:Gem::Version
409
+ version: '2.4'
410
+ - - ">="
411
+ - !ruby/object:Gem::Version
412
+ version: 2.4.4
413
+ - !ruby/object:Gem::Dependency
414
+ name: base58
415
+ requirement: !ruby/object:Gem::Requirement
416
+ requirements:
417
+ - - "~>"
418
+ - !ruby/object:Gem::Version
419
+ version: '0.2'
420
+ - - ">="
421
+ - !ruby/object:Gem::Version
422
+ version: 0.2.3
423
+ type: :runtime
424
+ prerelease: false
425
+ version_requirements: !ruby/object:Gem::Requirement
426
+ requirements:
427
+ - - "~>"
428
+ - !ruby/object:Gem::Version
429
+ version: '0.2'
430
+ - - ">="
431
+ - !ruby/object:Gem::Version
432
+ version: 0.2.3
333
433
  description: Client for accessing the Steem blockchain.
334
434
  email:
335
435
  - anthony@steem.com
@@ -340,7 +440,6 @@ files:
340
440
  - ".gitignore"
341
441
  - CONTRIBUTING.md
342
442
  - Gemfile
343
- - Gemfile.lock
344
443
  - LICENSE
345
444
  - README.md
346
445
  - Rakefile
@@ -354,10 +453,59 @@ files:
354
453
  - lib/steem/chain_config.rb
355
454
  - lib/steem/formatter.rb
356
455
  - lib/steem/jsonrpc.rb
456
+ - lib/steem/marshal.rb
457
+ - lib/steem/mixins/jsonable.rb
357
458
  - lib/steem/mixins/retriable.rb
459
+ - lib/steem/mixins/serializable.rb
460
+ - lib/steem/operation.rb
461
+ - lib/steem/operation/account_create.rb
462
+ - lib/steem/operation/account_create_with_delegation.rb
463
+ - lib/steem/operation/account_update.rb
464
+ - lib/steem/operation/account_witness_proxy.rb
465
+ - lib/steem/operation/account_witness_vote.rb
466
+ - lib/steem/operation/cancel_transfer_from_savings.rb
467
+ - lib/steem/operation/challenge_authority.rb
468
+ - lib/steem/operation/change_recovery_account.rb
469
+ - lib/steem/operation/claim_account.rb
470
+ - lib/steem/operation/claim_reward_balance.rb
471
+ - lib/steem/operation/comment.rb
472
+ - lib/steem/operation/comment_options.rb
473
+ - lib/steem/operation/convert.rb
474
+ - lib/steem/operation/create_claimed_account.rb
475
+ - lib/steem/operation/custom.rb
476
+ - lib/steem/operation/custom_binary.rb
477
+ - lib/steem/operation/custom_json.rb
478
+ - lib/steem/operation/decline_voting_rights.rb
479
+ - lib/steem/operation/delegate_vesting_shares.rb
480
+ - lib/steem/operation/delete_comment.rb
481
+ - lib/steem/operation/escrow_approve.rb
482
+ - lib/steem/operation/escrow_dispute.rb
483
+ - lib/steem/operation/escrow_release.rb
484
+ - lib/steem/operation/escrow_transfer.rb
485
+ - lib/steem/operation/feed_publish.rb
486
+ - lib/steem/operation/limit_order_cancel.rb
487
+ - lib/steem/operation/limit_order_create.rb
488
+ - lib/steem/operation/limit_order_create2.rb
489
+ - lib/steem/operation/prove_authority.rb
490
+ - lib/steem/operation/recover_account.rb
491
+ - lib/steem/operation/report_over_production.rb
492
+ - lib/steem/operation/request_account_recovery.rb
493
+ - lib/steem/operation/reset_account.rb
494
+ - lib/steem/operation/set_reset_account.rb
495
+ - lib/steem/operation/set_withdraw_vesting_route.rb
496
+ - lib/steem/operation/transfer.rb
497
+ - lib/steem/operation/transfer_from_savings.rb
498
+ - lib/steem/operation/transfer_to_savings.rb
499
+ - lib/steem/operation/transfer_to_vesting.rb
500
+ - lib/steem/operation/vote.rb
501
+ - lib/steem/operation/withdraw_vesting.rb
502
+ - lib/steem/operation/witness_set_properties.rb
503
+ - lib/steem/operation/witness_update.rb
358
504
  - lib/steem/rpc/base_client.rb
359
505
  - lib/steem/rpc/http_client.rb
360
506
  - lib/steem/rpc/thread_safe_http_client.rb
507
+ - lib/steem/stream.rb
508
+ - lib/steem/transaction.rb
361
509
  - lib/steem/transaction_builder.rb
362
510
  - lib/steem/type/amount.rb
363
511
  - lib/steem/type/base_type.rb
@@ -368,7 +516,7 @@ homepage: https://github.com/steem/steem-ruby
368
516
  licenses:
369
517
  - MIT
370
518
  metadata: {}
371
- post_install_message:
519
+ post_install_message:
372
520
  rdoc_options: []
373
521
  require_paths:
374
522
  - lib
@@ -383,9 +531,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
383
531
  - !ruby/object:Gem::Version
384
532
  version: '0'
385
533
  requirements: []
386
- rubyforge_project:
387
- rubygems_version: 2.6.14
388
- signing_key:
534
+ rubygems_version: 3.0.8
535
+ signing_key:
389
536
  specification_version: 4
390
537
  summary: Steem Ruby Client
391
538
  test_files: []