stellar-base 0.24.0 → 0.28.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +79 -56
  3. data/README.md +7 -7
  4. data/generated/stellar-base-generated.rb +15 -0
  5. data/generated/stellar/account_flags.rb +9 -4
  6. data/generated/stellar/account_merge_result.rb +1 -1
  7. data/generated/stellar/allow_trust_op.rb +3 -18
  8. data/generated/stellar/asset_code.rb +30 -0
  9. data/generated/stellar/begin_sponsoring_future_reserves_result.rb +2 -1
  10. data/generated/stellar/claimable_balance_entry.rb +2 -0
  11. data/generated/stellar/claimable_balance_entry/ext.rb +4 -0
  12. data/generated/stellar/claimable_balance_entry_extension_v1.rb +30 -0
  13. data/generated/stellar/claimable_balance_entry_extension_v1/ext.rb +24 -0
  14. data/generated/stellar/claimable_balance_flags.rb +22 -0
  15. data/generated/stellar/clawback_claimable_balance_op.rb +18 -0
  16. data/generated/stellar/clawback_claimable_balance_result.rb +26 -0
  17. data/generated/stellar/clawback_claimable_balance_result_code.rb +29 -0
  18. data/generated/stellar/clawback_op.rb +22 -0
  19. data/generated/stellar/clawback_result.rb +25 -0
  20. data/generated/stellar/clawback_result_code.rb +31 -0
  21. data/generated/stellar/create_passive_sell_offer_op.rb +1 -1
  22. data/generated/stellar/end_sponsoring_future_reserves_result.rb +2 -1
  23. data/generated/stellar/operation.rb +6 -0
  24. data/generated/stellar/operation/body.rb +12 -0
  25. data/generated/stellar/operation_id.rb +1 -1
  26. data/generated/stellar/operation_id/id.rb +2 -2
  27. data/generated/stellar/operation_result.rb +6 -0
  28. data/generated/stellar/operation_result/tr.rb +12 -0
  29. data/generated/stellar/operation_type.rb +7 -1
  30. data/generated/stellar/payment_result_code.rb +1 -1
  31. data/generated/stellar/revoke_sponsorship_op.rb +1 -2
  32. data/generated/stellar/set_options_result_code.rb +14 -11
  33. data/generated/stellar/set_trust_line_flags_op.rb +25 -0
  34. data/generated/stellar/set_trust_line_flags_result.rb +25 -0
  35. data/generated/stellar/set_trust_line_flags_result_code.rb +31 -0
  36. data/generated/stellar/transaction_result_code.rb +1 -1
  37. data/generated/stellar/trust_line_flags.rb +5 -1
  38. data/lib/stellar-base.rb +6 -2
  39. data/lib/stellar/account.rb +59 -0
  40. data/lib/stellar/asset.rb +10 -0
  41. data/lib/stellar/compat.rb +6 -7
  42. data/lib/stellar/concerns/transaction.rb +5 -4
  43. data/lib/stellar/dsl.rb +32 -5
  44. data/lib/stellar/ext/xdr.rb +8 -7
  45. data/lib/stellar/key_pair.rb +22 -23
  46. data/lib/stellar/ledger_key.rb +4 -2
  47. data/lib/stellar/muxed_account.rb +16 -0
  48. data/lib/stellar/operation.rb +89 -19
  49. data/lib/stellar/transaction.rb +1 -1
  50. data/lib/stellar/transaction_builder.rb +20 -7
  51. data/lib/stellar/transaction_envelope.rb +6 -16
  52. data/lib/stellar/transaction_v0.rb +2 -10
  53. data/lib/stellar/trust_line_flags.rb +53 -0
  54. data/lib/stellar/util/strkey.rb +15 -7
  55. data/lib/stellar/version.rb +3 -0
  56. metadata +34 -16
  57. data/generated/stellar/allow_trust_op/asset.rb +0 -33
  58. data/lib/stellar/base/version.rb +0 -5
@@ -48,6 +48,12 @@ require 'xdr'
48
48
  # EndSponsoringFutureReservesResult endSponsoringFutureReservesResult;
49
49
  # case REVOKE_SPONSORSHIP:
50
50
  # RevokeSponsorshipResult revokeSponsorshipResult;
51
+ # case CLAWBACK:
52
+ # ClawbackResult clawbackResult;
53
+ # case CLAWBACK_CLAIMABLE_BALANCE:
54
+ # ClawbackClaimableBalanceResult clawbackClaimableBalanceResult;
55
+ # case SET_TRUST_LINE_FLAGS:
56
+ # SetTrustLineFlagsResult setTrustLineFlagsResult;
51
57
  # }
52
58
  # tr;
53
59
  # default:
@@ -45,6 +45,12 @@ require 'xdr'
45
45
  # EndSponsoringFutureReservesResult endSponsoringFutureReservesResult;
46
46
  # case REVOKE_SPONSORSHIP:
47
47
  # RevokeSponsorshipResult revokeSponsorshipResult;
48
+ # case CLAWBACK:
49
+ # ClawbackResult clawbackResult;
50
+ # case CLAWBACK_CLAIMABLE_BALANCE:
51
+ # ClawbackClaimableBalanceResult clawbackClaimableBalanceResult;
52
+ # case SET_TRUST_LINE_FLAGS:
53
+ # SetTrustLineFlagsResult setTrustLineFlagsResult;
48
54
  # }
49
55
  #
50
56
  # ===========================================================================
@@ -72,6 +78,9 @@ module Stellar
72
78
  switch :begin_sponsoring_future_reserves, :begin_sponsoring_future_reserves_result
73
79
  switch :end_sponsoring_future_reserves, :end_sponsoring_future_reserves_result
74
80
  switch :revoke_sponsorship, :revoke_sponsorship_result
81
+ switch :clawback, :clawback_result
82
+ switch :clawback_claimable_balance, :clawback_claimable_balance_result
83
+ switch :set_trust_line_flags, :set_trust_line_flags_result
75
84
 
76
85
  attribute :create_account_result, CreateAccountResult
77
86
  attribute :payment_result, PaymentResult
@@ -92,6 +101,9 @@ module Stellar
92
101
  attribute :begin_sponsoring_future_reserves_result, BeginSponsoringFutureReservesResult
93
102
  attribute :end_sponsoring_future_reserves_result, EndSponsoringFutureReservesResult
94
103
  attribute :revoke_sponsorship_result, RevokeSponsorshipResult
104
+ attribute :clawback_result, ClawbackResult
105
+ attribute :clawback_claimable_balance_result, ClawbackClaimableBalanceResult
106
+ attribute :set_trust_line_flags_result, SetTrustLineFlagsResult
95
107
  end
96
108
  end
97
109
  end
@@ -25,7 +25,10 @@ require 'xdr'
25
25
  # CLAIM_CLAIMABLE_BALANCE = 15,
26
26
  # BEGIN_SPONSORING_FUTURE_RESERVES = 16,
27
27
  # END_SPONSORING_FUTURE_RESERVES = 17,
28
- # REVOKE_SPONSORSHIP = 18
28
+ # REVOKE_SPONSORSHIP = 18,
29
+ # CLAWBACK = 19,
30
+ # CLAWBACK_CLAIMABLE_BALANCE = 20,
31
+ # SET_TRUST_LINE_FLAGS = 21
29
32
  # };
30
33
  #
31
34
  # ===========================================================================
@@ -50,6 +53,9 @@ module Stellar
50
53
  member :begin_sponsoring_future_reserves, 16
51
54
  member :end_sponsoring_future_reserves, 17
52
55
  member :revoke_sponsorship, 18
56
+ member :clawback, 19
57
+ member :clawback_claimable_balance, 20
58
+ member :set_trust_line_flags, 21
53
59
 
54
60
  seal
55
61
  end
@@ -8,7 +8,7 @@ require 'xdr'
8
8
  # enum PaymentResultCode
9
9
  # {
10
10
  # // codes considered as "success" for the operation
11
- # PAYMENT_SUCCESS = 0, // payment successfuly completed
11
+ # PAYMENT_SUCCESS = 0, // payment successfully completed
12
12
  #
13
13
  # // codes considered as "failure" for the operation
14
14
  # PAYMENT_MALFORMED = -1, // bad input
@@ -14,8 +14,7 @@ require 'xdr'
14
14
  # {
15
15
  # AccountID accountID;
16
16
  # SignerKey signerKey;
17
- # }
18
- # signer;
17
+ # } signer;
19
18
  # };
20
19
  #
21
20
  # ===========================================================================
@@ -18,22 +18,25 @@ require 'xdr'
18
18
  # SET_OPTIONS_UNKNOWN_FLAG = -6, // can't set an unknown flag
19
19
  # SET_OPTIONS_THRESHOLD_OUT_OF_RANGE = -7, // bad value for weight/threshold
20
20
  # SET_OPTIONS_BAD_SIGNER = -8, // signer cannot be masterkey
21
- # SET_OPTIONS_INVALID_HOME_DOMAIN = -9 // malformed home domain
21
+ # SET_OPTIONS_INVALID_HOME_DOMAIN = -9, // malformed home domain
22
+ # SET_OPTIONS_AUTH_REVOCABLE_REQUIRED =
23
+ # -10 // auth revocable is required for clawback
22
24
  # };
23
25
  #
24
26
  # ===========================================================================
25
27
  module Stellar
26
28
  class SetOptionsResultCode < XDR::Enum
27
- member :set_options_success, 0
28
- member :set_options_low_reserve, -1
29
- member :set_options_too_many_signers, -2
30
- member :set_options_bad_flags, -3
31
- member :set_options_invalid_inflation, -4
32
- member :set_options_cant_change, -5
33
- member :set_options_unknown_flag, -6
34
- member :set_options_threshold_out_of_range, -7
35
- member :set_options_bad_signer, -8
36
- member :set_options_invalid_home_domain, -9
29
+ member :set_options_success, 0
30
+ member :set_options_low_reserve, -1
31
+ member :set_options_too_many_signers, -2
32
+ member :set_options_bad_flags, -3
33
+ member :set_options_invalid_inflation, -4
34
+ member :set_options_cant_change, -5
35
+ member :set_options_unknown_flag, -6
36
+ member :set_options_threshold_out_of_range, -7
37
+ member :set_options_bad_signer, -8
38
+ member :set_options_invalid_home_domain, -9
39
+ member :set_options_auth_revocable_required, -10
37
40
 
38
41
  seal
39
42
  end
@@ -0,0 +1,25 @@
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
+ # struct SetTrustLineFlagsOp
9
+ # {
10
+ # AccountID trustor;
11
+ # Asset asset;
12
+ #
13
+ # uint32 clearFlags; // which flags to clear
14
+ # uint32 setFlags; // which flags to set
15
+ # };
16
+ #
17
+ # ===========================================================================
18
+ module Stellar
19
+ class SetTrustLineFlagsOp < XDR::Struct
20
+ attribute :trustor, AccountID
21
+ attribute :asset, Asset
22
+ attribute :clear_flags, Uint32
23
+ attribute :set_flags, Uint32
24
+ end
25
+ end
@@ -0,0 +1,25 @@
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
+ # union SetTrustLineFlagsResult switch (SetTrustLineFlagsResultCode code)
9
+ # {
10
+ # case SET_TRUST_LINE_FLAGS_SUCCESS:
11
+ # void;
12
+ # default:
13
+ # void;
14
+ # };
15
+ #
16
+ # ===========================================================================
17
+ module Stellar
18
+ class SetTrustLineFlagsResult < XDR::Union
19
+ switch_on SetTrustLineFlagsResultCode, :code
20
+
21
+ switch :set_trust_line_flags_success
22
+ switch :default
23
+
24
+ end
25
+ end
@@ -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 SetTrustLineFlagsResultCode
9
+ # {
10
+ # // codes considered as "success" for the operation
11
+ # SET_TRUST_LINE_FLAGS_SUCCESS = 0,
12
+ #
13
+ # // codes considered as "failure" for the operation
14
+ # SET_TRUST_LINE_FLAGS_MALFORMED = -1,
15
+ # SET_TRUST_LINE_FLAGS_NO_TRUST_LINE = -2,
16
+ # SET_TRUST_LINE_FLAGS_CANT_REVOKE = -3,
17
+ # SET_TRUST_LINE_FLAGS_INVALID_STATE = -4
18
+ # };
19
+ #
20
+ # ===========================================================================
21
+ module Stellar
22
+ class SetTrustLineFlagsResultCode < XDR::Enum
23
+ member :set_trust_line_flags_success, 0
24
+ member :set_trust_line_flags_malformed, -1
25
+ member :set_trust_line_flags_no_trust_line, -2
26
+ member :set_trust_line_flags_cant_revoke, -3
27
+ member :set_trust_line_flags_invalid_state, -4
28
+
29
+ seal
30
+ end
31
+ end
@@ -22,7 +22,7 @@ require 'xdr'
22
22
  # txNO_ACCOUNT = -8, // source account not found
23
23
  # txINSUFFICIENT_FEE = -9, // fee is too small
24
24
  # txBAD_AUTH_EXTRA = -10, // unused signatures attached to transaction
25
- # txINTERNAL_ERROR = -11, // an unknown error occured
25
+ # txINTERNAL_ERROR = -11, // an unknown error occurred
26
26
  #
27
27
  # txNOT_SUPPORTED = -12, // transaction type not supported
28
28
  # txFEE_BUMP_INNER_FAILED = -13, // fee bump inner transaction failed
@@ -11,7 +11,10 @@ require 'xdr'
11
11
  # AUTHORIZED_FLAG = 1,
12
12
  # // issuer has authorized account to maintain and reduce liabilities for its
13
13
  # // credit
14
- # AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG = 2
14
+ # AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG = 2,
15
+ # // issuer has specified that it may clawback its credit, and that claimable
16
+ # // balances created with its credit may also be clawed back
17
+ # TRUSTLINE_CLAWBACK_ENABLED_FLAG = 4
15
18
  # };
16
19
  #
17
20
  # ===========================================================================
@@ -19,6 +22,7 @@ module Stellar
19
22
  class TrustLineFlags < XDR::Enum
20
23
  member :authorized_flag, 1
21
24
  member :authorized_to_maintain_liabilities_flag, 2
25
+ member :trustline_clawback_enabled_flag, 4
22
26
 
23
27
  seal
24
28
  end
data/lib/stellar-base.rb CHANGED
@@ -5,6 +5,8 @@ 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
7
  require "active_support/core_ext/module/attribute_accessors_per_thread"
8
+ require "active_support/core_ext/module/delegation"
9
+ require "active_support/deprecation"
8
10
 
9
11
  require_relative "stellar/ext/xdr"
10
12
 
@@ -14,13 +16,14 @@ silence_warnings do
14
16
  end
15
17
  Stellar.load_all!
16
18
 
17
- require_relative "stellar/base/version"
18
- Stellar::VERSION = Stellar::Base::VERSION
19
+ require_relative "stellar/version"
19
20
 
20
21
  Stellar::ONE = 1_0000000
22
+ Stellar::Deprecation = ActiveSupport::Deprecation.new("next release", "stellar-base")
21
23
 
22
24
  # extensions onto the generated files must be loaded manually, below
23
25
 
26
+ require_relative "./stellar/account"
24
27
  require_relative "./stellar/account_flags"
25
28
  require_relative "./stellar/asset"
26
29
  require_relative "./stellar/claim_predicate"
@@ -32,6 +35,7 @@ require_relative "./stellar/path_payment_strict_receive_result"
32
35
  require_relative "./stellar/price"
33
36
  require_relative "./stellar/signer_key"
34
37
  require_relative "./stellar/thresholds"
38
+ require_relative "./stellar/trust_line_flags"
35
39
 
36
40
  require_relative "./stellar/concerns/transaction"
37
41
  require_relative "./stellar/fee_bump_transaction"
@@ -0,0 +1,59 @@
1
+ module Stellar
2
+ class Account
3
+ delegate :address, to: :keypair
4
+
5
+ def self.random
6
+ keypair = Stellar::KeyPair.random
7
+ new(keypair)
8
+ end
9
+
10
+ def self.from_seed(seed)
11
+ keypair = Stellar::KeyPair.from_seed(seed)
12
+ new(keypair)
13
+ end
14
+
15
+ def self.from_address(address)
16
+ muxed_xdr = Util::StrKey.decode_muxed_account(address)
17
+
18
+ if muxed_xdr.ed25519
19
+ new(KeyPair.from_public_key(muxed_xdr.ed25519))
20
+ else
21
+ muxed_xdr = muxed_xdr.med25519!
22
+ new(KeyPair.from_public_key(muxed_xdr.ed25519), muxed_xdr.id)
23
+ end
24
+ end
25
+
26
+ def self.master
27
+ keypair = Stellar::KeyPair.from_raw_seed("allmylifemyhearthasbeensearching")
28
+ new(keypair)
29
+ end
30
+
31
+ attr_reader :keypair, :id
32
+
33
+ # @param [Stellar::KeyPair] keypair
34
+ # @param [Integer] id
35
+ def initialize(keypair, id = nil)
36
+ @keypair = keypair
37
+ @id = id
38
+ end
39
+
40
+ def base_account
41
+ Stellar::MuxedAccount.ed25519(keypair.raw_public_key)
42
+ end
43
+
44
+ def muxed_account
45
+ return base_account unless id
46
+ Stellar::MuxedAccount.med25519(ed25519: keypair.raw_public_key, id: id)
47
+ end
48
+
49
+ def address(force_account_id: true)
50
+ return keypair.address if force_account_id
51
+
52
+ Util::StrKey.check_encode(:muxed, keypair.raw_public_key + [id].pack("Q>"))
53
+ end
54
+
55
+ def to_keypair
56
+ keypair
57
+ end
58
+ end
59
+ end
data/lib/stellar/asset.rb CHANGED
@@ -6,14 +6,24 @@ module Stellar
6
6
  new(:asset_type_native)
7
7
  end
8
8
 
9
+ # @param code [String] asset code
10
+ # @param issuer [#to_keypair] asset issuer
11
+ #
12
+ # @return [Stellar::Asset::AlphaNum4] asset4 representation
9
13
  def self.alphanum4(code, issuer)
14
+ issuer = issuer.to_keypair if issuer.respond_to?(:to_keypair)
10
15
  raise ArgumentError, "Bad :issuer" unless issuer.is_a?(KeyPair)
11
16
  code = normalize_code(code, 4)
12
17
  an = AlphaNum4.new({asset_code: code, issuer: issuer.account_id})
13
18
  new(:asset_type_credit_alphanum4, an)
14
19
  end
15
20
 
21
+ # @param code [String] asset code
22
+ # @param issuer [#to_keypair] asset issuer
23
+ #
24
+ # @return [Stellar::Asset::AlphaNum4] asset4 representation
16
25
  def self.alphanum12(code, issuer)
26
+ issuer = issuer.to_keypair if issuer.respond_to?(:to_keypair)
17
27
  raise ArgumentError, "Bad :issuer" unless issuer.is_a?(KeyPair)
18
28
  code = normalize_code(code, 12)
19
29
  an = AlphaNum12.new({asset_code: code, issuer: issuer.account_id})
@@ -1,12 +1,11 @@
1
- require "active_support/deprecation"
2
-
3
- Stellar::Deprecation ||= ActiveSupport::Deprecation.new("next release", "stellar-base")
4
-
5
1
  class << Stellar::Operation
6
2
  alias_method :manage_offer, :manage_sell_offer
7
3
  alias_method :create_passive_offer, :create_passive_sell_offer
8
4
 
9
- deprecate deprecator: Stellar::Deprecation,
10
- manage_offer: :manage_sell_offer,
11
- create_passive_offer: :create_passive_sell_offer
5
+ deprecate(
6
+ deprecator: Stellar::Deprecation,
7
+ manage_offer: :manage_sell_offer,
8
+ create_passive_offer: :create_passive_sell_offer,
9
+ allow_trust: :set_trust_line_flags
10
+ )
12
11
  end
@@ -19,7 +19,7 @@ module Stellar::Concerns
19
19
  end
20
20
 
21
21
  def merge(other)
22
- cloned = Marshal.load Marshal.dump(self)
22
+ cloned = from_xdr(to_xdr)
23
23
  cloned.operations += other.to_operations
24
24
  cloned
25
25
  end
@@ -32,9 +32,10 @@ module Stellar::Concerns
32
32
  #
33
33
  # @return [Array<Operation>] the operations
34
34
  def to_operations
35
- # FIXME: what was the purpose of this?
36
- # cloned = Marshal.load Marshal.dump(operations)
37
- operations.each do |op|
35
+ codec = XDR::VarArray[Stellar::Operation]
36
+ ops = respond_to?(:operations) ? operations : inner_tx.value.tx.operations
37
+ cloned = codec.from_xdr(codec.to_xdr(ops))
38
+ cloned.each do |op|
38
39
  op.source_account ||= source_account
39
40
  end
40
41
  end
data/lib/stellar/dsl.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  module Stellar
2
2
  module DSL
3
+ module_function
4
+
3
5
  # Constructs a new ClaimPredicate using DSL
4
6
  #
5
7
  # @example fulfilled during [T+5min, T+60min] period, where T refers to claimable balance entry creation time
@@ -25,6 +27,28 @@ module Stellar
25
27
  )
26
28
  end
27
29
 
30
+ def Account(subject = nil)
31
+ case subject
32
+ when Account
33
+ subject
34
+ when /^M[A-Z0-9]{68}$/
35
+ Account.from_address(subject.to_str)
36
+ when nil
37
+ Account.random
38
+ else
39
+ begin
40
+ keypair = KeyPair(subject)
41
+
42
+ Account.new(keypair)
43
+ rescue TypeError
44
+ raise TypeError, "Cannot convert #{subject.inspect} to Stellar::Account"
45
+ end
46
+ end
47
+ end
48
+
49
+ # @param [Asset, String, nil] subject
50
+ # @return [Stellar::Asset] instance of the Stellar::Asset
51
+ # @raise [TypeError] if subject cannot be converted to Stellar::Asset
28
52
  def Asset(subject = nil)
29
53
  case subject
30
54
  when Asset
@@ -43,18 +67,21 @@ module Stellar
43
67
  # Generates Stellar::Keypair from subject, use Stellar::Client.to_keypair as shortcut.
44
68
  # @param subject [String|Stellar::Account|Stellar::PublicKey|Stellar::SignerKey|Stellar::Keypair] subject.
45
69
  # @return [Stellar::Keypair] Stellar::Keypair instance.
70
+ # @raise [TypeError] if subject cannot be converted to Stellar::KeyPair
46
71
  def KeyPair(subject = nil)
47
72
  case subject
48
73
  when ->(subj) { subj.respond_to?(:to_keypair) }
49
74
  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
75
  when PublicKey
55
76
  KeyPair.from_public_key(subject.value)
56
77
  when SignerKey
57
78
  KeyPair.from_raw_seed(subject.value)
79
+ when /^G[A-Z0-9]{55}$/
80
+ KeyPair.from_address(subject.to_str)
81
+ when /^S[A-Z0-9]{55}$/
82
+ KeyPair.from_seed(subject.to_str)
83
+ when /^.{32}$/
84
+ KeyPair.from_raw_seed(subject.to_str)
58
85
  when nil
59
86
  KeyPair.random
60
87
  else
@@ -81,5 +108,5 @@ module Stellar
81
108
  end
82
109
  end
83
110
 
84
- extend DSL
111
+ include DSL
85
112
  end