steem-ruby 0.9.2 → 0.9.3
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 +5 -5
- data/Gemfile.lock +3 -3
- data/lib/steem/api.rb +17 -2
- data/lib/steem/broadcast.rb +146 -0
- data/lib/steem/transaction_builder.rb +9 -2
- data/lib/steem/type/amount.rb +4 -0
- data/lib/steem/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 57f84dd9185bb2ad616730cb370450ff56816706a8ad5b26d452bf3a7921cd68
|
4
|
+
data.tar.gz: 59934f9af8d4e20da692c06b9d8b55b71c54aaead980bec892c400ef100cc77c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f909db06bc8e7db70da6180d385e0527e6153134b2535e275e6864f9c21511506bb93ae685fee51187024819dd9ad243939efa88213f29af8b51d28c6826290b
|
7
|
+
data.tar.gz: 1b9d47fbb3775b639c53fc767f4a71a7d19578ca848f9f196ce1fd53ffe09d2b4eabc90ce70404a9deb523b448d0e2c70ceff53f2058b708e1b9d6be7dd983a2
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
steem-ruby (0.9.
|
4
|
+
steem-ruby (0.9.3)
|
5
5
|
bitcoin-ruby (~> 0.0, >= 0.0.18)
|
6
6
|
ffi (~> 1.9, >= 1.9.23)
|
7
7
|
hashie (~> 3.5, >= 3.5.7)
|
@@ -21,7 +21,7 @@ GEM
|
|
21
21
|
docile (1.3.1)
|
22
22
|
ffi (1.9.25)
|
23
23
|
hashdiff (0.3.7)
|
24
|
-
hashie (3.
|
24
|
+
hashie (3.6.0)
|
25
25
|
json (2.1.0)
|
26
26
|
little-plugger (1.1.4)
|
27
27
|
logging (2.2.2)
|
@@ -70,4 +70,4 @@ DEPENDENCIES
|
|
70
70
|
yard (~> 0.9, >= 0.9.12)
|
71
71
|
|
72
72
|
BUNDLED WITH
|
73
|
-
1.16.
|
73
|
+
1.16.5
|
data/lib/steem/api.rb
CHANGED
@@ -70,9 +70,24 @@ module Steem
|
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
-
# Override this if you want to use your own client.
|
73
|
+
# Override this if you want to just use your own client. Otherwise, inject
|
74
|
+
# the default using:
|
75
|
+
#
|
76
|
+
# Steem::Api.register default_rpc_client_class: MyClient
|
74
77
|
def self.default_rpc_client_class
|
75
|
-
|
78
|
+
if !!@injected_dependencies && !!@injected_dependencies[:default_rpc_client_class]
|
79
|
+
@injected_dependencies[:default_rpc_client_class]
|
80
|
+
else
|
81
|
+
DEFAULT_RPC_CLIENT_CLASS
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
# Used for dependency injection. Currently, the only key supported is:
|
86
|
+
#
|
87
|
+
# `default_rpc_client_class`
|
88
|
+
def self.register(register)
|
89
|
+
@injected_dependencies ||= {}
|
90
|
+
@injected_dependencies = @injected_dependencies.merge register
|
76
91
|
end
|
77
92
|
|
78
93
|
def initialize(options = {})
|
data/lib/steem/broadcast.rb
CHANGED
@@ -31,6 +31,7 @@ module Steem
|
|
31
31
|
# For details on what to pass to these methods, check out the {https://developers.steem.io/apidefinitions/broadcast-ops Steem Developer Portal Broadcast Operations} page.
|
32
32
|
class Broadcast
|
33
33
|
extend Retriable
|
34
|
+
extend Utils
|
34
35
|
|
35
36
|
DEFAULT_MAX_ACCEPTED_PAYOUT = Type::Amount.new(amount: '1000000000', precision: 3, nai: '@@000000013')
|
36
37
|
|
@@ -509,6 +510,68 @@ module Steem
|
|
509
510
|
process(options.merge(ops: ops), &block)
|
510
511
|
end
|
511
512
|
|
513
|
+
# Create a claimed account.
|
514
|
+
# options = {
|
515
|
+
# wif: wif,
|
516
|
+
# params: {
|
517
|
+
# creator: creator_account_name,
|
518
|
+
# new_account_name: new_account_name,
|
519
|
+
# owner: {
|
520
|
+
# weight_threshold: 1,
|
521
|
+
# account_auths: [],
|
522
|
+
# key_auths: [[owner_public_key, 1]],
|
523
|
+
# },
|
524
|
+
# active: {
|
525
|
+
# weight_threshold: 1,
|
526
|
+
# account_auths: [],
|
527
|
+
# key_auths: [[active_public_key, 1]],
|
528
|
+
# },
|
529
|
+
# posting: {
|
530
|
+
# weight_threshold: 1,
|
531
|
+
# account_auths: [],
|
532
|
+
# key_auths: [[posting_public_key, 1]],
|
533
|
+
# },
|
534
|
+
# memo_key: memo_public_key,
|
535
|
+
# json_metadata: '{}'
|
536
|
+
# }
|
537
|
+
# }
|
538
|
+
#
|
539
|
+
# Steem::Broadcast.create_claimed_account(options)
|
540
|
+
#
|
541
|
+
# @param options [Hash] options
|
542
|
+
# @option options [String] :wif Active wif
|
543
|
+
# @option options [Hash] :params
|
544
|
+
# * :creator (String)
|
545
|
+
# * :new_account_name (String)
|
546
|
+
# * :owner (Hash)
|
547
|
+
# * :active (Hash)
|
548
|
+
# * :posting (Hash)
|
549
|
+
# * :memo_key (String)
|
550
|
+
# * :metadata (Hash) Metadata of the account, becomes `json_metadata`.
|
551
|
+
# * :json_metadata (String) String version of `metadata` (use one or the other).
|
552
|
+
# * :extensions (Array) (optional)
|
553
|
+
# @option options [Boolean] :pretend Just validate, do not broadcast.
|
554
|
+
# @see https://developers.steem.io/apidefinitions/broadcast-ops#broadcast_ops_create_claimed_account
|
555
|
+
def self.create_claimed_account(options, &block)
|
556
|
+
required_fields = %i(creator new_account_name owner active posting memo_key json_metadata)
|
557
|
+
params = options[:params]
|
558
|
+
|
559
|
+
if !!params[:metadata] && !!params[:json_metadata]
|
560
|
+
raise Steem::ArgumentError, 'Assign either metadata or json_metadata, not both.'
|
561
|
+
end
|
562
|
+
|
563
|
+
metadata = params.delete(:metadata) || {}
|
564
|
+
metadata ||= (JSON[params[:json_metadata]] || nil) || {}
|
565
|
+
params[:json_metadata] = metadata.to_json
|
566
|
+
|
567
|
+
check_required_fields(params, *required_fields)
|
568
|
+
|
569
|
+
params[:extensions] ||= []
|
570
|
+
ops = [[:account_create, params]]
|
571
|
+
|
572
|
+
process(options.merge(ops: ops), &block)
|
573
|
+
end
|
574
|
+
|
512
575
|
# Update an account.
|
513
576
|
# options = {
|
514
577
|
# wif: wif,
|
@@ -611,6 +674,65 @@ module Steem
|
|
611
674
|
process(options.merge(ops: ops), &block)
|
612
675
|
end
|
613
676
|
|
677
|
+
# Extensible replacement for #witness_update that supports additional
|
678
|
+
# properties added since HF20 and beyond.
|
679
|
+
#
|
680
|
+
# options = {
|
681
|
+
# wif: wif,
|
682
|
+
# params: {
|
683
|
+
# owner: witness_account_name,
|
684
|
+
# props: {
|
685
|
+
# account_creation_fee: '0.000 STEEM',
|
686
|
+
# maximum_block_size: 131072,
|
687
|
+
# sbd_interest_rate: 1000,
|
688
|
+
# account_subsidy_budget: 50000,
|
689
|
+
# account_subsidy_decay: 330782,
|
690
|
+
# sbd_exchange_rate: '1.000 STEEM',
|
691
|
+
# url: "https://steemit.com",
|
692
|
+
# new_signing_key: 'STM8LoQjQqJHvotqBo7HjnqmUbFW9oJ2theyqonzUd9DdJ7YYHsvD'
|
693
|
+
# }
|
694
|
+
# }
|
695
|
+
# }
|
696
|
+
#
|
697
|
+
# Steem::Broadcast.witness_set_properties(options)
|
698
|
+
#
|
699
|
+
# @param options [Hash] options
|
700
|
+
# @option options [String] :wif Active wif
|
701
|
+
# @option options [Hash] :params
|
702
|
+
# * :owner (String)
|
703
|
+
# * :props (String)
|
704
|
+
# @option options [Boolean] :pretend Just validate, do not broadcast.
|
705
|
+
# @see https://developers.steem.io/apidefinitions/broadcast-ops#broadcast_ops_witness_set_properties
|
706
|
+
# @see https://github.com/steemit/steem/blob/master/doc/witness_parameters.md
|
707
|
+
def self.witness_set_properties(options, &block)
|
708
|
+
required_fields = %i(owner props)
|
709
|
+
params = options[:params]
|
710
|
+
check_required_fields(params, *required_fields)
|
711
|
+
|
712
|
+
if !!(account_creation_fee = params[:props][:account_creation_fee] rescue nil)
|
713
|
+
params[:props][:account_creation_fee] = normalize_amount(options.merge amount: account_creation_fee, serialize: true)
|
714
|
+
end
|
715
|
+
|
716
|
+
if !!(sbd_exchange_rate = params[:props][:sbd_exchange_rate] rescue nil)
|
717
|
+
params[:props][:sbd_exchange_rate] = normalize_amount(options.merge amount: sbd_exchange_rate, serialize: true)
|
718
|
+
end
|
719
|
+
|
720
|
+
%i(account_creation_fee sbd_exchange_rate url new_signing_key).each do |key|
|
721
|
+
next unless !!params[:props][key]
|
722
|
+
|
723
|
+
val = params[:props][key]
|
724
|
+
|
725
|
+
params[:props][key] = hexlify val unless val =~ /^[0-9A-F]+$/i
|
726
|
+
end
|
727
|
+
|
728
|
+
params[:props] = params[:props].to_a
|
729
|
+
|
730
|
+
params[:extensions] ||= []
|
731
|
+
ops = [[:witness_set_properties, params]]
|
732
|
+
|
733
|
+
process(options.merge(ops: ops), &block)
|
734
|
+
end
|
735
|
+
|
614
736
|
# All accounts with a VFS (Vesting Fund Shares) can vote for or against any
|
615
737
|
# witness.
|
616
738
|
#
|
@@ -1084,6 +1206,28 @@ module Steem
|
|
1084
1206
|
process(options.merge(ops: ops), &block)
|
1085
1207
|
end
|
1086
1208
|
|
1209
|
+
# @param options [Hash] options
|
1210
|
+
# @option options [String] :wif Active wif
|
1211
|
+
# @option options [Hash] :params
|
1212
|
+
# * :creator (String)
|
1213
|
+
# * :fee (String)
|
1214
|
+
# * :extensions (Array)
|
1215
|
+
# @option options [Boolean] :pretend Just validate, do not broadcast.
|
1216
|
+
# @see https://developers.steem.io/apidefinitions/broadcast-ops#broadcast_ops_claim_account
|
1217
|
+
def self.claim_account(options, &block)
|
1218
|
+
required_fields = %i(creator fee)
|
1219
|
+
params = options[:params]
|
1220
|
+
|
1221
|
+
check_required_fields(params, *required_fields)
|
1222
|
+
|
1223
|
+
params[:fee] = normalize_amount(options.merge amount: params[:fee])
|
1224
|
+
params[:extensions] ||= []
|
1225
|
+
|
1226
|
+
ops = [[:claim_account, params]]
|
1227
|
+
|
1228
|
+
process(options.merge(ops: ops), &block)
|
1229
|
+
end
|
1230
|
+
|
1087
1231
|
# @param options [Hash] options
|
1088
1232
|
# @option options [Array<Array<Hash>] :ops Operations to process.
|
1089
1233
|
# @option options [Boolean] :pretend Just validate, do not broadcast.
|
@@ -1131,6 +1275,8 @@ module Steem
|
|
1131
1275
|
def self.normalize_amount(options)
|
1132
1276
|
if !!options[:app_base]
|
1133
1277
|
Type::Amount.to_h(options[:amount])
|
1278
|
+
elsif !!options[:serialize]
|
1279
|
+
Type::Amount.to_s(options[:amount])
|
1134
1280
|
else
|
1135
1281
|
Type::Amount.to_s(options[:amount])
|
1136
1282
|
end
|
@@ -28,9 +28,10 @@ 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
|
32
32
|
|
33
33
|
alias app_base? app_base
|
34
|
+
alias testnet? testnet
|
34
35
|
|
35
36
|
def initialize(options = {})
|
36
37
|
@app_base = !!options[:app_base] # default false
|
@@ -47,6 +48,7 @@ module Steem
|
|
47
48
|
|
48
49
|
@wif = [options[:wif]].flatten
|
49
50
|
@signed = false
|
51
|
+
@testnet = !!options[:testnet]
|
50
52
|
|
51
53
|
if !!(trx = options[:trx])
|
52
54
|
trx = case trx
|
@@ -78,11 +80,16 @@ module Steem
|
|
78
80
|
@signatures = options[:signatures] || []
|
79
81
|
@chain = options[:chain] || :steem
|
80
82
|
@error_pipe = options[:error_pipe] || STDERR
|
81
|
-
@chain_id =
|
83
|
+
@chain_id = options[:chain_id]
|
84
|
+
@chain_id ||= case @chain
|
82
85
|
when :steem then NETWORKS_STEEM_CHAIN_ID
|
83
86
|
when :test then NETWORKS_TEST_CHAIN_ID
|
84
87
|
else; raise UnsupportedChainError, "Unsupported chain: #{@chain}"
|
85
88
|
end
|
89
|
+
|
90
|
+
if testnet? && @chain_id == NETWORKS_STEEM_CHAIN_ID
|
91
|
+
raise UnsupportedChainError, "Unsupported testnet chain id: #{@chain_id}"
|
92
|
+
end
|
86
93
|
end
|
87
94
|
|
88
95
|
def inspect
|
data/lib/steem/type/amount.rb
CHANGED
data/lib/steem/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: steem-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anthony Martin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -385,7 +385,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
385
385
|
version: '0'
|
386
386
|
requirements: []
|
387
387
|
rubyforge_project:
|
388
|
-
rubygems_version: 2.
|
388
|
+
rubygems_version: 2.7.7
|
389
389
|
signing_key:
|
390
390
|
specification_version: 4
|
391
391
|
summary: Steem Ruby Client
|