stellar-base 0.23.0.rc1 → 0.24.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.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +249 -0
  3. data/README.md +0 -3
  4. data/generated/stellar-base-generated.rb +29 -1
  5. data/generated/stellar/account_entry.rb +3 -13
  6. data/generated/stellar/account_entry/ext.rb +2 -16
  7. data/generated/stellar/account_entry_extension_v1.rb +32 -0
  8. data/generated/stellar/account_entry_extension_v1/ext.rb +28 -0
  9. data/generated/stellar/account_entry_extension_v2.rb +34 -0
  10. data/generated/stellar/{account_entry/ext/v1 → account_entry_extension_v2}/ext.rb +8 -12
  11. data/generated/stellar/account_merge_result_code.rb +3 -1
  12. data/generated/stellar/begin_sponsoring_future_reserves_op.rb +18 -0
  13. data/generated/stellar/begin_sponsoring_future_reserves_result.rb +25 -0
  14. data/generated/stellar/begin_sponsoring_future_reserves_result_code.rb +29 -0
  15. data/generated/stellar/claim_claimable_balance_op.rb +18 -0
  16. data/generated/stellar/claim_claimable_balance_result.rb +25 -0
  17. data/generated/stellar/claim_claimable_balance_result_code.rb +31 -0
  18. data/generated/stellar/claim_predicate.rb +43 -0
  19. data/generated/stellar/claim_predicate_type.rb +30 -0
  20. data/generated/stellar/claimable_balance_entry.rb +44 -0
  21. data/generated/stellar/claimable_balance_entry/ext.rb +24 -0
  22. data/generated/stellar/claimable_balance_id.rb +23 -0
  23. data/generated/stellar/claimable_balance_id_type.rb +20 -0
  24. data/generated/stellar/claimant.rb +31 -0
  25. data/generated/stellar/claimant/v0.rb +22 -0
  26. data/generated/stellar/claimant_type.rb +20 -0
  27. data/generated/stellar/create_claimable_balance_op.rb +22 -0
  28. data/generated/stellar/create_claimable_balance_result.rb +27 -0
  29. data/generated/stellar/create_claimable_balance_result_code.rb +30 -0
  30. data/generated/stellar/end_sponsoring_future_reserves_result.rb +25 -0
  31. data/generated/stellar/end_sponsoring_future_reserves_result_code.rb +25 -0
  32. data/generated/stellar/envelope_type.rb +3 -1
  33. data/generated/stellar/inner_transaction_result.rb +2 -1
  34. data/generated/stellar/inner_transaction_result/result.rb +3 -1
  35. data/generated/stellar/ledger_entry.rb +4 -0
  36. data/generated/stellar/ledger_entry/data.rb +12 -8
  37. data/generated/stellar/ledger_entry/ext.rb +4 -0
  38. data/generated/stellar/ledger_entry_extension_v1.rb +30 -0
  39. data/generated/stellar/ledger_entry_extension_v1/ext.rb +24 -0
  40. data/generated/stellar/ledger_entry_type.rb +7 -5
  41. data/generated/stellar/ledger_key.rb +17 -8
  42. data/generated/stellar/ledger_key/claimable_balance.rb +20 -0
  43. data/generated/stellar/operation.rb +10 -0
  44. data/generated/stellar/operation/body.rb +45 -26
  45. data/generated/stellar/operation_id.rb +32 -0
  46. data/generated/stellar/operation_id/id.rb +24 -0
  47. data/generated/stellar/operation_result.rb +10 -0
  48. data/generated/stellar/operation_result/tr.rb +48 -28
  49. data/generated/stellar/operation_result_code.rb +3 -1
  50. data/generated/stellar/operation_type.rb +25 -15
  51. data/generated/stellar/path_payment_strict_receive_result.rb +2 -1
  52. data/generated/stellar/revoke_sponsorship_op.rb +36 -0
  53. data/generated/stellar/revoke_sponsorship_op/signer.rb +22 -0
  54. data/generated/stellar/revoke_sponsorship_result.rb +25 -0
  55. data/generated/stellar/revoke_sponsorship_result_code.rb +31 -0
  56. data/generated/stellar/revoke_sponsorship_type.rb +22 -0
  57. data/generated/stellar/transaction_result_code.rb +4 -2
  58. data/lib/stellar-base.rb +15 -5
  59. data/lib/stellar/account_flags.rb +1 -1
  60. data/lib/stellar/{version.rb → base/version.rb} +1 -1
  61. data/lib/stellar/claim_predicate.rb +198 -0
  62. data/lib/stellar/compat.rb +2 -11
  63. data/lib/stellar/dsl.rb +85 -0
  64. data/lib/stellar/ext/xdr.rb +49 -0
  65. data/lib/stellar/key_pair.rb +43 -35
  66. data/lib/stellar/ledger_key.rb +30 -0
  67. data/lib/stellar/networks.rb +12 -12
  68. data/lib/stellar/operation.rb +58 -1
  69. data/lib/stellar/price.rb +11 -2
  70. data/lib/stellar/transaction.rb +16 -166
  71. data/lib/stellar/transaction_builder.rb +35 -18
  72. data/lib/stellar/transaction_envelope.rb +3 -29
  73. data/lib/stellar/transaction_v0.rb +12 -0
  74. data/lib/stellar/util/strkey.rb +6 -6
  75. metadata +166 -35
  76. data/generated/stellar/account_entry/ext/v1.rb +0 -34
  77. data/lib/stellar/util/continued_fraction.rb +0 -96
@@ -0,0 +1,31 @@
1
+ # This code was automatically generated using xdrgen
2
+ # DO NOT EDIT or your changes may be overwritten
3
+
4
+ require 'xdr'
5
+
6
+ # === xdr source ============================================================
7
+ #
8
+ # enum RevokeSponsorshipResultCode
9
+ # {
10
+ # // codes considered as "success" for the operation
11
+ # REVOKE_SPONSORSHIP_SUCCESS = 0,
12
+ #
13
+ # // codes considered as "failure" for the operation
14
+ # REVOKE_SPONSORSHIP_DOES_NOT_EXIST = -1,
15
+ # REVOKE_SPONSORSHIP_NOT_SPONSOR = -2,
16
+ # REVOKE_SPONSORSHIP_LOW_RESERVE = -3,
17
+ # REVOKE_SPONSORSHIP_ONLY_TRANSFERABLE = -4
18
+ # };
19
+ #
20
+ # ===========================================================================
21
+ module Stellar
22
+ class RevokeSponsorshipResultCode < XDR::Enum
23
+ member :revoke_sponsorship_success, 0
24
+ member :revoke_sponsorship_does_not_exist, -1
25
+ member :revoke_sponsorship_not_sponsor, -2
26
+ member :revoke_sponsorship_low_reserve, -3
27
+ member :revoke_sponsorship_only_transferable, -4
28
+
29
+ seal
30
+ end
31
+ end
@@ -0,0 +1,22 @@
1
+ # This code was automatically generated using xdrgen
2
+ # DO NOT EDIT or your changes may be overwritten
3
+
4
+ require 'xdr'
5
+
6
+ # === xdr source ============================================================
7
+ #
8
+ # enum RevokeSponsorshipType
9
+ # {
10
+ # REVOKE_SPONSORSHIP_LEDGER_ENTRY = 0,
11
+ # REVOKE_SPONSORSHIP_SIGNER = 1
12
+ # };
13
+ #
14
+ # ===========================================================================
15
+ module Stellar
16
+ class RevokeSponsorshipType < XDR::Enum
17
+ member :revoke_sponsorship_ledger_entry, 0
18
+ member :revoke_sponsorship_signer, 1
19
+
20
+ seal
21
+ end
22
+ end
@@ -24,8 +24,9 @@ require 'xdr'
24
24
  # txBAD_AUTH_EXTRA = -10, // unused signatures attached to transaction
25
25
  # txINTERNAL_ERROR = -11, // an unknown error occured
26
26
  #
27
- # txNOT_SUPPORTED = -12, // transaction type not supported
28
- # txFEE_BUMP_INNER_FAILED = -13 // fee bump inner transaction failed
27
+ # txNOT_SUPPORTED = -12, // transaction type not supported
28
+ # txFEE_BUMP_INNER_FAILED = -13, // fee bump inner transaction failed
29
+ # txBAD_SPONSORSHIP = -14 // sponsorship not confirmed
29
30
  # };
30
31
  #
31
32
  # ===========================================================================
@@ -46,6 +47,7 @@ module Stellar
46
47
  member :tx_internal_error, -11
47
48
  member :tx_not_supported, -12
48
49
  member :tx_fee_bump_inner_failed, -13
50
+ member :tx_bad_sponsorship, -14
49
51
 
50
52
  seal
51
53
  end
@@ -4,6 +4,9 @@ require "digest/sha2"
4
4
  require "active_support/core_ext/object/blank"
5
5
  require "active_support/core_ext/enumerable"
6
6
  require "active_support/core_ext/kernel/reporting"
7
+ require "active_support/core_ext/module/attribute_accessors_per_thread"
8
+
9
+ require_relative "stellar/ext/xdr"
7
10
 
8
11
  # See ../generated for code-gen'ed files
9
12
  silence_warnings do
@@ -11,28 +14,35 @@ silence_warnings do
11
14
  end
12
15
  Stellar.load_all!
13
16
 
17
+ require_relative "stellar/base/version"
18
+ Stellar::VERSION = Stellar::Base::VERSION
19
+
14
20
  Stellar::ONE = 1_0000000
15
21
 
16
22
  # extensions onto the generated files must be loaded manually, below
17
23
 
18
24
  require_relative "./stellar/account_flags"
19
25
  require_relative "./stellar/asset"
26
+ require_relative "./stellar/claim_predicate"
20
27
  require_relative "./stellar/key_pair"
28
+ require_relative "./stellar/ledger_key"
29
+ require_relative "./stellar/networks"
21
30
  require_relative "./stellar/operation"
22
31
  require_relative "./stellar/path_payment_strict_receive_result"
23
32
  require_relative "./stellar/price"
24
33
  require_relative "./stellar/signer_key"
25
34
  require_relative "./stellar/thresholds"
35
+
26
36
  require_relative "./stellar/concerns/transaction"
27
- require_relative "./stellar/transaction"
28
- require_relative "./stellar/transaction_v0"
29
37
  require_relative "./stellar/fee_bump_transaction"
38
+ require_relative "./stellar/transaction"
30
39
  require_relative "./stellar/transaction_builder"
31
40
  require_relative "./stellar/transaction_envelope"
41
+ require_relative "./stellar/transaction_v0"
42
+
32
43
  require_relative "./stellar/util/strkey"
33
- require_relative "./stellar/util/continued_fraction"
34
44
  require_relative "./stellar/convert"
35
- require_relative "./stellar/networks"
36
- require_relative "./stellar/version"
45
+
46
+ require_relative "./stellar/dsl"
37
47
 
38
48
  require_relative "./stellar/compat"
@@ -4,7 +4,7 @@ module Stellar
4
4
  # Converts an array of Stellar::AccountFlags members into
5
5
  # an Integer suitable for use in a SetOptionsOp.
6
6
  #
7
- # @param flags=nil [Array<Stellar::AccountFlags>] the flags to combine
7
+ # @param flags [Array<Stellar::AccountFlags>] the flags to combine
8
8
  #
9
9
  # @return [Fixnum] the combined result
10
10
  def self.make_mask(flags = nil)
@@ -1,5 +1,5 @@
1
1
  module Stellar
2
2
  module Base
3
- VERSION = "0.23.0.rc1"
3
+ VERSION = "0.24.0"
4
4
  end
5
5
  end
@@ -0,0 +1,198 @@
1
+ # frozen_string_literals: true
2
+ require "active_support/core_ext/integer/time"
3
+ require "active_support/core_ext/string/conversions"
4
+
5
+ module Stellar
6
+ # Represents claim predicate on Stellar network.
7
+ #
8
+ # @see https://developers.stellar.org/docs/glossary/claimable-balance/
9
+ class ClaimPredicate
10
+ module FactoryMethods
11
+ # Constructs an `unconditional` claim predicate.
12
+ #
13
+ # This predicate will be always fulfilled.
14
+ #
15
+ # @return [ClaimPredicate] `unconditional` claim predicate
16
+ def unconditional
17
+ ClaimPredicate.new(ClaimPredicateType::UNCONDITIONAL)
18
+ end
19
+
20
+ # Constructs a `before_relative_time` claim predicate.
21
+ #
22
+ # This predicate will be fulfilled if the closing time of the ledger that includes
23
+ # the Stellar::CreateClaimableBalance operation plus this relative time delta (in seconds)
24
+ # is less than the current time.
25
+ #
26
+ # @param seconds [#to_int|#to_i] seconds since `closeTime` of the ledger in which
27
+ # the ClaimableBalanceEntry was created.
28
+ # @return [ClaimPredicate] `before_relative_time` claim predicate
29
+ def before_relative_time(seconds)
30
+ ClaimPredicate.new(ClaimPredicateType::BEFORE_RELATIVE_TIME, Integer(seconds))
31
+ end
32
+
33
+ # Constructs an `before_absolute_time` claim predicate.
34
+ #
35
+ # This predicate will be fulfilled if the closing time of the ledger that includes
36
+ # the Stellar::CreateClaimableBalance operation is less than provided timestamp.
37
+ #
38
+ # @param timestamp [#to_time|#to_int|#to_i] time value or timestamp
39
+ #
40
+ # @return [ClaimPredicate] `before_absolute_time` claim predicate.
41
+ def before_absolute_time(timestamp)
42
+ timestamp = timestamp.to_time if timestamp.respond_to?(:to_time)
43
+
44
+ ClaimPredicate.new(ClaimPredicateType::BEFORE_ABSOLUTE_TIME, Integer(timestamp))
45
+ end
46
+
47
+ # Constructs either relative or absolute time predicate based on the type of the input.
48
+ #
49
+ # If input is an instance of `ActiveSupport::Duration` class it will be handled as a relative time
50
+ # (seconds since close time of the ledger), otherwise it will be treated as an absolute time.
51
+ #
52
+ # It is intended to work with time helpers provided by ActiveSupport, like `1.day` (relative)
53
+ # or `2.weeks.from_now` (absolute).
54
+ #
55
+ # @example relative time
56
+ # ClaimPredicate.before(2.days + 15.seconds)
57
+ #
58
+ # @example absolute time
59
+ # ClaimPredicate.before(5.hours.from_now)
60
+ #
61
+ # @param time [ActiveSupport::Duration|#to_time|#to_i] duration since ledger close time or absolute time value
62
+ #
63
+ # @return [ClaimPredicate] `before_relative_time` or `before_absolute_time` claim predicate.
64
+ def before(time)
65
+ ActiveSupport::Duration === time ? before_relative_time(time.to_i) : before_absolute_time(time)
66
+ end
67
+
68
+ # Constructs a negated predicate from either relative or absolute time based on the type of the input.
69
+ #
70
+ # @see #before
71
+ # @param (see #before)
72
+ # @return (see #before)
73
+ def after(time)
74
+ ~before(time)
75
+ end
76
+
77
+ # Compose a complex predicate by calling DSL methods from the block.
78
+ #
79
+ # @example
80
+ # ClaimPredicate.compose {
81
+ # after(15.minutes) & before(1.day) | after(1.week.from_now) & before(1.week.from_now + 1.day)
82
+ # }
83
+ #
84
+ # @yieldreturn [ClaimPredicate|nil]
85
+ # @return [ClaimPredicate] `not(before_relative_time)` or `not(before_absolute_time)` claim predicate.
86
+ def compose(&block)
87
+ result = instance_eval(&block)
88
+ result.nil? ? unconditional : result
89
+ end
90
+ end
91
+
92
+ extend FactoryMethods
93
+
94
+ # Constructs an `and` claim predicate.
95
+ #
96
+ # This predicate will be fulfilled if both `self` and `other` predicates are fulfilled.
97
+ #
98
+ # @param other [ClaimPredicate] another predicate
99
+ #
100
+ # @return [ClaimPredicate] `and` claim predicate
101
+ def and(other)
102
+ raise TypeError, "no conversion from #{other.class.name} to ClaimPredicate" unless ClaimPredicate === other
103
+ ClaimPredicate.new(ClaimPredicateType::AND, [self, other])
104
+ end
105
+ alias_method :&, :and
106
+
107
+ # Constructs an `or` claim predicate.
108
+ #
109
+ # This predicate will be fulfilled if either of `self` or `other` predicates is fulfilled.
110
+ #
111
+ # @param other [ClaimPredicate] another predicate.
112
+ #
113
+ # @return [ClaimPredicate] `or` claim predicate
114
+ def or(other)
115
+ raise TypeError, "no conversion from #{other.class.name} to ClaimPredicate" unless ClaimPredicate === other
116
+ ClaimPredicate.new(ClaimPredicateType::OR, [self, other])
117
+ end
118
+ alias_method :|, :or
119
+
120
+ # Constructs a `not` claim predicate.
121
+ #
122
+ # This predicate will be fulfilled if `self` is not fulfilled.
123
+ #
124
+ # @return [ClaimPredicate] `not` claim predicate
125
+ def not
126
+ ClaimPredicate.new(ClaimPredicateType::NOT, self)
127
+ end
128
+ alias_method :~@, :not
129
+
130
+ # Evaluates the predicate value for provided inputs.
131
+ #
132
+ # @param created_at [#to_time|#to_int] closing time of the ledger containing CreateClaimableBalance operation
133
+ # @param claiming_at [#to_time|#to_int|ActiveSupport::Duration] time point to evaluate predicate at, either
134
+ # absolute time or duration relative to `created_at`. In reality predicate will be evaluated by stellar-core
135
+ # using the closing time of a ledger containing ClaimClaimableBalance operation, in either successful
136
+ # or failed state.
137
+ #
138
+ # @return [Boolean] `true` if this predicate would allow claiming the balance, `false` otherwise
139
+ def evaluate(created_at, claiming_at)
140
+ created_at = created_at.to_time if created_at.respond_to?(:to_time)
141
+ claiming_at = created_at + claiming_at if claiming_at.is_a?(ActiveSupport::Duration)
142
+ claiming_at = claiming_at.to_time if claiming_at.respond_to?(:to_time)
143
+
144
+ return false if claiming_at < created_at
145
+
146
+ case switch
147
+ when ClaimPredicateType::UNCONDITIONAL
148
+ true
149
+ when ClaimPredicateType::BEFORE_RELATIVE_TIME
150
+ Integer(claiming_at) < Integer(created_at) + value
151
+ when ClaimPredicateType::BEFORE_ABSOLUTE_TIME
152
+ Integer(claiming_at).to_i < value
153
+ when ClaimPredicateType::AND
154
+ value[0].evaluate(created_at, claiming_at) && value[1].evaluate(created_at, claiming_at)
155
+ when ClaimPredicateType::OR
156
+ value[0].evaluate(created_at, claiming_at) || value[1].evaluate(created_at, claiming_at)
157
+ when ClaimPredicateType::NOT
158
+ !value.evaluate(created_at, claiming_at)
159
+ else
160
+ raise ArgumentError, "evaluation is not implemented for #{switch.name} predicate"
161
+ end
162
+ end
163
+
164
+ def describe
165
+ case switch
166
+ when ClaimPredicateType::UNCONDITIONAL
167
+ "always"
168
+ when ClaimPredicateType::BEFORE_RELATIVE_TIME
169
+ dur = ActiveSupport::Duration.build(value)
170
+ "less than #{dur.inspect} since creation"
171
+ when ClaimPredicateType::BEFORE_ABSOLUTE_TIME
172
+ "before #{Time.at(value).to_formatted_s(:db)}"
173
+ when ClaimPredicateType::AND
174
+ value.map(&:describe).join(" and ")
175
+ when ClaimPredicateType::OR
176
+ "(" << value.map(&:describe).join(" or ") << ")"
177
+ when ClaimPredicateType::NOT
178
+ case value.switch
179
+ when ClaimPredicateType::UNCONDITIONAL
180
+ "never"
181
+ when ClaimPredicateType::BEFORE_RELATIVE_TIME
182
+ dur = ActiveSupport::Duration.build(value.value)
183
+ "#{dur.inspect} or more since creation"
184
+ when ClaimPredicateType::BEFORE_ABSOLUTE_TIME
185
+ "after #{Time.at(value.value).to_formatted_s(:db)}"
186
+ else
187
+ "not (#{value.describe})"
188
+ end
189
+ else
190
+ raise ArgumentError, "evaluation is not implemented for #{switch.name} predicate"
191
+ end
192
+ end
193
+
194
+ def inspect
195
+ "#<ClaimPredicate: #{describe}>"
196
+ end
197
+ end
198
+ end
@@ -3,17 +3,8 @@ require "active_support/deprecation"
3
3
  Stellar::Deprecation ||= ActiveSupport::Deprecation.new("next release", "stellar-base")
4
4
 
5
5
  class << Stellar::Operation
6
- alias manage_offer manage_sell_offer
7
- alias create_passive_offer create_passive_sell_offer
8
-
9
- deprecate deprecator: Stellar::Deprecation,
10
- manage_offer: :manage_sell_offer,
11
- create_passive_offer: :create_passive_sell_offer
12
- end
13
-
14
- class << Stellar::Transaction
15
- alias manage_offer manage_sell_offer
16
- alias create_passive_offer create_passive_sell_offer
6
+ alias_method :manage_offer, :manage_sell_offer
7
+ alias_method :create_passive_offer, :create_passive_sell_offer
17
8
 
18
9
  deprecate deprecator: Stellar::Deprecation,
19
10
  manage_offer: :manage_sell_offer,
@@ -0,0 +1,85 @@
1
+ module Stellar
2
+ module DSL
3
+ # Constructs a new ClaimPredicate using DSL
4
+ #
5
+ # @example fulfilled during [T+5min, T+60min] period, where T refers to claimable balance entry creation time
6
+ # Stellar::ClaimPredicate { before_relative_time(1.hour) & ~before_relative_time(5.minutes) }
7
+ #
8
+ # @example not fulfilled starting from today midnight until tomorrow midnight,
9
+ # Stellar::ClaimPredicate { before_absolute_time(Date.today.end_of_day) | ~before_absolute_time(Date.tomorrow.end_of_day) }
10
+ #
11
+ # @example always fulfilled
12
+ # Stellar::ClaimPredicate { }
13
+ def ClaimPredicate(&block)
14
+ return ClaimPredicate.unconditional unless block
15
+ ClaimPredicate.compose(&block)
16
+ end
17
+
18
+ def Claimant(destination, &block)
19
+ Claimant.new(
20
+ ClaimantType.claimant_type_v0,
21
+ Claimant::V0.new(
22
+ destination: KeyPair(destination).account_id,
23
+ predicate: ClaimPredicate(&block)
24
+ )
25
+ )
26
+ end
27
+
28
+ def Asset(subject = nil)
29
+ case subject
30
+ when Asset
31
+ subject
32
+ when nil, /^(XLM[-:])?native$/
33
+ Asset.native
34
+ when /^([0-9A-Z]{1,4})[-:](G[A-Z0-9]{55})$/
35
+ Asset.alphanum4($1, KeyPair($2))
36
+ when /^([0-9A-Z]{5,12})[-:](G[A-Z0-9]{55})$/
37
+ Asset.alphanum12($1, KeyPair($2))
38
+ else
39
+ raise TypeError, "Cannot convert #{subject.inspect} to Stellar::Asset"
40
+ end
41
+ end
42
+
43
+ # Generates Stellar::Keypair from subject, use Stellar::Client.to_keypair as shortcut.
44
+ # @param subject [String|Stellar::Account|Stellar::PublicKey|Stellar::SignerKey|Stellar::Keypair] subject.
45
+ # @return [Stellar::Keypair] Stellar::Keypair instance.
46
+ def KeyPair(subject = nil)
47
+ case subject
48
+ when ->(subj) { subj.respond_to?(:to_keypair) }
49
+ subject.to_keypair
50
+ when /G[A-Z0-9]{55}/
51
+ KeyPair.from_address(subject)
52
+ when /S[A-Z0-9]{55}/
53
+ KeyPair.from_seed(subject)
54
+ when PublicKey
55
+ KeyPair.from_public_key(subject.value)
56
+ when SignerKey
57
+ KeyPair.from_raw_seed(subject.value)
58
+ when nil
59
+ KeyPair.random
60
+ else
61
+ raise TypeError, "cannot convert #{subject.inspect} to Stellar::KeyPair"
62
+ end
63
+ end
64
+
65
+ # Provides conversion from different input types into the SignerKey to use in ManageData operation.
66
+ # @param input [String|zStellar::Account|Stellar::PublicKey|Stellar::SignerKey|Stellar::Keypair] subject.
67
+ # @return [Stellar::SignerKey] Stellar::Keypair instance.
68
+ def SignerKey(input = nil)
69
+ case input
70
+ when Transaction
71
+ SignerKey.pre_auth_tx(input.hash)
72
+ when /^[0-9A-Za-z+\/=]{44}$/
73
+ SignerKey.hash_x(Stellar::Convert.from_base64(input))
74
+ when /^[0-9a-f]{64}$/
75
+ SignerKey.hash_x(Stellar::Convert.from_hex(input))
76
+ when /^.{32}$/
77
+ SignerKey.hash_x(input)
78
+ else
79
+ SignerKey.ed25519(KeyPair(input))
80
+ end
81
+ end
82
+ end
83
+
84
+ extend DSL
85
+ end