stellar-base 0.22.0 → 0.23.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. checksums.yaml +4 -4
  2. data/{LICENSE.txt → LICENSE} +0 -0
  3. data/README.md +2 -3
  4. data/generated/stellar-base-generated.rb +10 -1
  5. data/generated/stellar/allow_trust_op.rb +3 -2
  6. data/generated/stellar/authenticated_message.rb +4 -4
  7. data/generated/stellar/authenticated_message/v0.rb +4 -4
  8. data/generated/stellar/change_trust_result_code.rb +1 -1
  9. data/generated/stellar/crypto_key_type.rb +8 -4
  10. data/generated/stellar/curve25519_public.rb +1 -1
  11. data/generated/stellar/curve25519_secret.rb +1 -1
  12. data/generated/stellar/envelope_type.rb +9 -5
  13. data/generated/stellar/fee_bump_transaction.rb +39 -0
  14. data/generated/stellar/fee_bump_transaction/ext.rb +24 -0
  15. data/generated/stellar/fee_bump_transaction/inner_tx.rb +25 -0
  16. data/generated/stellar/fee_bump_transaction_envelope.rb +22 -0
  17. data/generated/stellar/hmac_sha256_key.rb +1 -1
  18. data/generated/stellar/hmac_sha256_mac.rb +1 -1
  19. data/generated/stellar/inner_transaction_result.rb +56 -0
  20. data/generated/stellar/inner_transaction_result/ext.rb +24 -0
  21. data/generated/stellar/inner_transaction_result/result.rb +52 -0
  22. data/generated/stellar/inner_transaction_result_pair.rb +20 -0
  23. data/generated/stellar/ledger_close_meta.rb +1 -1
  24. data/generated/stellar/manage_buy_offer_result_code.rb +5 -4
  25. data/generated/stellar/manage_sell_offer_result_code.rb +12 -8
  26. data/generated/stellar/muxed_account.rb +35 -0
  27. data/generated/stellar/muxed_account/med25519.rb +22 -0
  28. data/generated/stellar/operation.rb +3 -3
  29. data/generated/stellar/operation/body.rb +2 -2
  30. data/generated/stellar/operation_result.rb +1 -1
  31. data/generated/stellar/operation_result/tr.rb +1 -1
  32. data/generated/stellar/operation_result_code.rb +3 -3
  33. data/generated/stellar/path_payment_strict_receive_op.rb +4 -4
  34. data/generated/stellar/path_payment_strict_receive_result_code.rb +21 -12
  35. data/generated/stellar/path_payment_strict_send_op.rb +6 -6
  36. data/generated/stellar/path_payment_strict_send_result_code.rb +20 -12
  37. data/generated/stellar/payment_op.rb +4 -4
  38. data/generated/stellar/survey_response_body.rb +2 -2
  39. data/generated/stellar/transaction.rb +2 -2
  40. data/generated/stellar/transaction_envelope.rb +17 -8
  41. data/generated/stellar/transaction_result.rb +3 -0
  42. data/generated/stellar/transaction_result/result.rb +9 -3
  43. data/generated/stellar/transaction_result_code.rb +21 -14
  44. data/generated/stellar/transaction_signature_payload.rb +3 -1
  45. data/generated/stellar/transaction_signature_payload/tagged_transaction.rb +7 -3
  46. data/generated/stellar/transaction_v0.rb +39 -0
  47. data/generated/stellar/transaction_v0/ext.rb +24 -0
  48. data/generated/stellar/transaction_v0_envelope.rb +22 -0
  49. data/generated/stellar/transaction_v1_envelope.rb +22 -0
  50. data/generated/stellar/trust_line_flags.rb +6 -2
  51. data/lib/stellar-base.rb +27 -25
  52. data/lib/stellar/account_flags.rb +2 -4
  53. data/lib/stellar/asset.rb +6 -6
  54. data/lib/stellar/base.rb +1 -1
  55. data/lib/stellar/{base/compat.rb → compat.rb} +6 -7
  56. data/lib/stellar/concerns/transaction.rb +49 -0
  57. data/lib/stellar/convert.rb +2 -2
  58. data/lib/stellar/factories.rb +1 -3
  59. data/lib/stellar/fee_bump_transaction.rb +21 -0
  60. data/lib/stellar/key_pair.rb +9 -6
  61. data/lib/stellar/networks.rb +5 -7
  62. data/lib/stellar/operation.rb +421 -416
  63. data/lib/stellar/path_payment_strict_receive_result.rb +1 -2
  64. data/lib/stellar/price.rb +2 -4
  65. data/lib/stellar/signer_key.rb +4 -8
  66. data/lib/stellar/thresholds.rb +5 -7
  67. data/lib/stellar/transaction.rb +154 -198
  68. data/lib/stellar/transaction_builder.rb +66 -23
  69. data/lib/stellar/transaction_envelope.rb +40 -8
  70. data/lib/stellar/transaction_v0.rb +39 -0
  71. data/lib/stellar/util/continued_fraction.rb +19 -19
  72. data/lib/stellar/util/strkey.rb +39 -14
  73. data/lib/stellar/{base/version.rb → version.rb} +1 -1
  74. metadata +33 -203
  75. data/.gitignore +0 -17
  76. data/.travis.yml +0 -16
  77. data/.yardopts +0 -8
  78. data/CHANGELOG.md +0 -149
  79. data/CONTRIBUTING.md +0 -48
  80. data/Gemfile +0 -9
  81. data/Guardfile +0 -5
  82. data/Rakefile +0 -4
  83. data/examples/allow_trust.rb +0 -51
  84. data/examples/create_account.rb +0 -26
  85. data/examples/low_level_transaction_post.rb +0 -46
  86. data/examples/mid_level_transaction_post.rb +0 -33
  87. data/examples/non_native_payment.rb +0 -60
  88. data/examples/offer.rb +0 -75
  89. data/examples/transaction_merge.rb +0 -23
  90. data/ruby-stellar-base.gemspec +0 -34
  91. data/spec/lib/stellar/account_flags_spec.rb +0 -19
  92. data/spec/lib/stellar/asset_spec.rb +0 -45
  93. data/spec/lib/stellar/convert_spec.rb +0 -61
  94. data/spec/lib/stellar/key_pair_spec.rb +0 -251
  95. data/spec/lib/stellar/networks_spec.rb +0 -77
  96. data/spec/lib/stellar/operation_spec.rb +0 -131
  97. data/spec/lib/stellar/path_payment_strict_receive_result_spec.rb +0 -95
  98. data/spec/lib/stellar/price_spec.rb +0 -34
  99. data/spec/lib/stellar/signer_key_spec.rb +0 -26
  100. data/spec/lib/stellar/thresholds_spec.rb +0 -62
  101. data/spec/lib/stellar/transaction_builder_spec.rb +0 -263
  102. data/spec/lib/stellar/transaction_envelope_spec.rb +0 -93
  103. data/spec/lib/stellar/transaction_spec.rb +0 -132
  104. data/spec/lib/stellar/util/strkey_spec.rb +0 -54
  105. data/spec/spec_helper.rb +0 -16
  106. data/spec/support/matchers/be_strkey.rb +0 -9
  107. data/spec/support/matchers/eq_bytes.rb +0 -5
  108. data/spec/support/matchers/have_length.rb +0 -5
  109. data/tasks/rspec.rake +0 -6
  110. data/tasks/travis.rake +0 -1
  111. data/tasks/xdr.rake +0 -45
  112. data/xdr/Stellar-SCP.x +0 -86
  113. data/xdr/Stellar-ledger-entries.x +0 -295
  114. data/xdr/Stellar-ledger.x +0 -372
  115. data/xdr/Stellar-overlay.x +0 -229
  116. data/xdr/Stellar-transaction.x +0 -901
  117. data/xdr/Stellar-types.x +0 -81
@@ -7,6 +7,9 @@ require 'xdr'
7
7
  #
8
8
  # union switch (TransactionResultCode code)
9
9
  # {
10
+ # case txFEE_BUMP_INNER_SUCCESS:
11
+ # case txFEE_BUMP_INNER_FAILED:
12
+ # InnerTransactionResultPair innerResultPair;
10
13
  # case txSUCCESS:
11
14
  # case txFAILED:
12
15
  # OperationResult results<>;
@@ -20,11 +23,14 @@ module Stellar
20
23
  class Result < XDR::Union
21
24
  switch_on TransactionResultCode, :code
22
25
 
23
- switch :tx_success, :results
24
- switch :tx_failed, :results
26
+ switch :tx_fee_bump_inner_success, :inner_result_pair
27
+ switch :tx_fee_bump_inner_failed, :inner_result_pair
28
+ switch :tx_success, :results
29
+ switch :tx_failed, :results
25
30
  switch :default
26
31
 
27
- attribute :results, XDR::VarArray[OperationResult]
32
+ attribute :inner_result_pair, InnerTransactionResultPair
33
+ attribute :results, XDR::VarArray[OperationResult]
28
34
  end
29
35
  end
30
36
  end
@@ -7,7 +7,8 @@ require 'xdr'
7
7
  #
8
8
  # enum TransactionResultCode
9
9
  # {
10
- # txSUCCESS = 0, // all operations succeeded
10
+ # txFEE_BUMP_INNER_SUCCESS = 1, // fee bump inner transaction succeeded
11
+ # txSUCCESS = 0, // all operations succeeded
11
12
  #
12
13
  # txFAILED = -1, // one of the operations failed (none were applied)
13
14
  #
@@ -21,24 +22,30 @@ require 'xdr'
21
22
  # txNO_ACCOUNT = -8, // source account not found
22
23
  # txINSUFFICIENT_FEE = -9, // fee is too small
23
24
  # txBAD_AUTH_EXTRA = -10, // unused signatures attached to transaction
24
- # txINTERNAL_ERROR = -11 // an unknown error occured
25
+ # txINTERNAL_ERROR = -11, // an unknown error occured
26
+ #
27
+ # txNOT_SUPPORTED = -12, // transaction type not supported
28
+ # txFEE_BUMP_INNER_FAILED = -13 // fee bump inner transaction failed
25
29
  # };
26
30
  #
27
31
  # ===========================================================================
28
32
  module Stellar
29
33
  class TransactionResultCode < XDR::Enum
30
- member :tx_success, 0
31
- member :tx_failed, -1
32
- member :tx_too_early, -2
33
- member :tx_too_late, -3
34
- member :tx_missing_operation, -4
35
- member :tx_bad_seq, -5
36
- member :tx_bad_auth, -6
37
- member :tx_insufficient_balance, -7
38
- member :tx_no_account, -8
39
- member :tx_insufficient_fee, -9
40
- member :tx_bad_auth_extra, -10
41
- member :tx_internal_error, -11
34
+ member :tx_fee_bump_inner_success, 1
35
+ member :tx_success, 0
36
+ member :tx_failed, -1
37
+ member :tx_too_early, -2
38
+ member :tx_too_late, -3
39
+ member :tx_missing_operation, -4
40
+ member :tx_bad_seq, -5
41
+ member :tx_bad_auth, -6
42
+ member :tx_insufficient_balance, -7
43
+ member :tx_no_account, -8
44
+ member :tx_insufficient_fee, -9
45
+ member :tx_bad_auth_extra, -10
46
+ member :tx_internal_error, -11
47
+ member :tx_not_supported, -12
48
+ member :tx_fee_bump_inner_failed, -13
42
49
 
43
50
  seal
44
51
  end
@@ -10,9 +10,11 @@ require 'xdr'
10
10
  # Hash networkId;
11
11
  # union switch (EnvelopeType type)
12
12
  # {
13
+ # // Backwards Compatibility: Use ENVELOPE_TYPE_TX to sign ENVELOPE_TYPE_TX_V0
13
14
  # case ENVELOPE_TYPE_TX:
14
15
  # Transaction tx;
15
- # /* All other values of type are invalid */
16
+ # case ENVELOPE_TYPE_TX_FEE_BUMP:
17
+ # FeeBumpTransaction feeBump;
16
18
  # }
17
19
  # taggedTransaction;
18
20
  # };
@@ -7,9 +7,11 @@ require 'xdr'
7
7
  #
8
8
  # union switch (EnvelopeType type)
9
9
  # {
10
+ # // Backwards Compatibility: Use ENVELOPE_TYPE_TX to sign ENVELOPE_TYPE_TX_V0
10
11
  # case ENVELOPE_TYPE_TX:
11
12
  # Transaction tx;
12
- # /* All other values of type are invalid */
13
+ # case ENVELOPE_TYPE_TX_FEE_BUMP:
14
+ # FeeBumpTransaction feeBump;
13
15
  # }
14
16
  #
15
17
  # ===========================================================================
@@ -18,9 +20,11 @@ module Stellar
18
20
  class TaggedTransaction < XDR::Union
19
21
  switch_on EnvelopeType, :type
20
22
 
21
- switch :envelope_type_tx, :tx
23
+ switch :envelope_type_tx, :tx
24
+ switch :envelope_type_tx_fee_bump, :fee_bump
22
25
 
23
- attribute :tx, Transaction
26
+ attribute :tx, Transaction
27
+ attribute :fee_bump, FeeBumpTransaction
24
28
  end
25
29
  end
26
30
  end
@@ -0,0 +1,39 @@
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 TransactionV0
9
+ # {
10
+ # uint256 sourceAccountEd25519;
11
+ # uint32 fee;
12
+ # SequenceNumber seqNum;
13
+ # TimeBounds* timeBounds;
14
+ # Memo memo;
15
+ # Operation operations<MAX_OPS_PER_TX>;
16
+ # union switch (int v)
17
+ # {
18
+ # case 0:
19
+ # void;
20
+ # }
21
+ # ext;
22
+ # };
23
+ #
24
+ # ===========================================================================
25
+ module Stellar
26
+ class TransactionV0 < XDR::Struct
27
+ include XDR::Namespace
28
+
29
+ autoload :Ext
30
+
31
+ attribute :source_account_ed25519, Uint256
32
+ attribute :fee, Uint32
33
+ attribute :seq_num, SequenceNumber
34
+ attribute :time_bounds, XDR::Option[TimeBounds]
35
+ attribute :memo, Memo
36
+ attribute :operations, XDR::VarArray[Operation, MAX_OPS_PER_TX]
37
+ attribute :ext, Ext
38
+ end
39
+ end
@@ -0,0 +1,24 @@
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 switch (int v)
9
+ # {
10
+ # case 0:
11
+ # void;
12
+ # }
13
+ #
14
+ # ===========================================================================
15
+ module Stellar
16
+ class TransactionV0
17
+ class Ext < XDR::Union
18
+ switch_on XDR::Int, :v
19
+
20
+ switch 0
21
+
22
+ end
23
+ end
24
+ 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
+ # struct TransactionV0Envelope
9
+ # {
10
+ # TransactionV0 tx;
11
+ # /* Each decorated signature is a signature over the SHA256 hash of
12
+ # * a TransactionSignaturePayload */
13
+ # DecoratedSignature signatures<20>;
14
+ # };
15
+ #
16
+ # ===========================================================================
17
+ module Stellar
18
+ class TransactionV0Envelope < XDR::Struct
19
+ attribute :tx, TransactionV0
20
+ attribute :signatures, XDR::VarArray[DecoratedSignature, 20]
21
+ end
22
+ 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
+ # struct TransactionV1Envelope
9
+ # {
10
+ # Transaction tx;
11
+ # /* Each decorated signature is a signature over the SHA256 hash of
12
+ # * a TransactionSignaturePayload */
13
+ # DecoratedSignature signatures<20>;
14
+ # };
15
+ #
16
+ # ===========================================================================
17
+ module Stellar
18
+ class TransactionV1Envelope < XDR::Struct
19
+ attribute :tx, Transaction
20
+ attribute :signatures, XDR::VarArray[DecoratedSignature, 20]
21
+ end
22
+ end
@@ -8,13 +8,17 @@ require 'xdr'
8
8
  # enum TrustLineFlags
9
9
  # {
10
10
  # // issuer has authorized account to perform transactions with its credit
11
- # AUTHORIZED_FLAG = 1
11
+ # AUTHORIZED_FLAG = 1,
12
+ # // issuer has authorized account to maintain and reduce liabilities for its
13
+ # // credit
14
+ # AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG = 2
12
15
  # };
13
16
  #
14
17
  # ===========================================================================
15
18
  module Stellar
16
19
  class TrustLineFlags < XDR::Enum
17
- member :authorized_flag, 1
20
+ member :authorized_flag, 1
21
+ member :authorized_to_maintain_liabilities_flag, 2
18
22
 
19
23
  seal
20
24
  end
@@ -1,36 +1,38 @@
1
- require 'xdr'
2
- require 'rbnacl'
3
- require 'digest/sha2'
4
- require 'active_support/core_ext/object/blank'
5
- require 'active_support/core_ext/enumerable'
6
- require 'active_support/core_ext/kernel/reporting'
1
+ require "xdr"
2
+ require "rbnacl"
3
+ require "digest/sha2"
4
+ require "active_support/core_ext/object/blank"
5
+ require "active_support/core_ext/enumerable"
6
+ require "active_support/core_ext/kernel/reporting"
7
7
 
8
8
  # See ../generated for code-gen'ed files
9
9
  silence_warnings do
10
- require 'stellar-base-generated'
10
+ require "stellar-base-generated"
11
11
  end
12
12
  Stellar.load_all!
13
13
 
14
14
  Stellar::ONE = 1_0000000
15
15
 
16
-
17
16
  # extensions onto the generated files must be loaded manually, below
18
17
 
19
- require_relative './stellar/account_flags'
20
- require_relative './stellar/asset'
21
- require_relative './stellar/key_pair'
22
- require_relative './stellar/operation'
23
- require_relative './stellar/path_payment_strict_receive_result'
24
- require_relative './stellar/price'
25
- require_relative './stellar/signer_key'
26
- require_relative './stellar/thresholds'
27
- require_relative './stellar/transaction'
28
- require_relative './stellar/transaction_builder'
29
- require_relative './stellar/transaction_envelope'
30
- require_relative './stellar/util/strkey'
31
- require_relative './stellar/util/continued_fraction'
32
- require_relative './stellar/convert'
33
- require_relative './stellar/networks'
34
- require_relative './stellar/base/version'
18
+ require_relative "./stellar/account_flags"
19
+ require_relative "./stellar/asset"
20
+ require_relative "./stellar/key_pair"
21
+ require_relative "./stellar/operation"
22
+ require_relative "./stellar/path_payment_strict_receive_result"
23
+ require_relative "./stellar/price"
24
+ require_relative "./stellar/signer_key"
25
+ require_relative "./stellar/thresholds"
26
+ require_relative "./stellar/concerns/transaction"
27
+ require_relative "./stellar/transaction"
28
+ require_relative "./stellar/transaction_v0"
29
+ require_relative "./stellar/fee_bump_transaction"
30
+ require_relative "./stellar/transaction_builder"
31
+ require_relative "./stellar/transaction_envelope"
32
+ require_relative "./stellar/util/strkey"
33
+ require_relative "./stellar/util/continued_fraction"
34
+ require_relative "./stellar/convert"
35
+ require_relative "./stellar/networks"
36
+ require_relative "./stellar/version"
35
37
 
36
- require_relative './stellar/base/compat'
38
+ require_relative "./stellar/compat"
@@ -1,7 +1,5 @@
1
1
  module Stellar
2
2
  class AccountFlags
3
-
4
-
5
3
  #
6
4
  # Converts an array of Stellar::AccountFlags members into
7
5
  # an Integer suitable for use in a SetOptionsOp.
@@ -9,7 +7,7 @@ module Stellar
9
7
  # @param flags=nil [Array<Stellar::AccountFlags>] the flags to combine
10
8
  #
11
9
  # @return [Fixnum] the combined result
12
- def self.make_mask(flags=nil)
10
+ def self.make_mask(flags = nil)
13
11
  flags ||= []
14
12
 
15
13
  flags.map(&:value).inject(&:|) || 0
@@ -22,7 +20,7 @@ module Stellar
22
20
  # @param combined [Fixnum]
23
21
  # @return [Array<Stellar::AccountFlags>]
24
22
  def self.parse_mask(combined)
25
- members.values.select{|m| (m.value & combined) != 0}
23
+ members.values.select { |m| (m.value & combined) != 0 }
26
24
  end
27
25
  end
28
26
  end
@@ -1,6 +1,6 @@
1
1
  module Stellar
2
2
  class Asset
3
- TYPES = %i(native alphanum4 alphanum12)
3
+ TYPES = %i[native alphanum4 alphanum12]
4
4
 
5
5
  def self.native
6
6
  new(:asset_type_native)
@@ -9,14 +9,14 @@ module Stellar
9
9
  def self.alphanum4(code, issuer)
10
10
  raise ArgumentError, "Bad :issuer" unless issuer.is_a?(KeyPair)
11
11
  code = normalize_code(code, 4)
12
- an = AlphaNum4.new({asset_code:code, issuer:issuer.account_id})
12
+ an = AlphaNum4.new({asset_code: code, issuer: issuer.account_id})
13
13
  new(:asset_type_credit_alphanum4, an)
14
14
  end
15
15
 
16
16
  def self.alphanum12(code, issuer)
17
17
  raise ArgumentError, "Bad :issuer" unless issuer.is_a?(KeyPair)
18
18
  code = normalize_code(code, 12)
19
- an = AlphaNum12.new({asset_code:code, issuer:issuer.account_id})
19
+ an = AlphaNum12.new({asset_code: code, issuer: issuer.account_id})
20
20
  new(:asset_type_credit_alphanum12, an)
21
21
  end
22
22
 
@@ -36,8 +36,8 @@ module Stellar
36
36
  end
37
37
 
38
38
  def inspect
39
- label = switch.to_s
40
- "#<Stellar::Asset #{to_s}>"
39
+ # label = switch.to_s
40
+ "#<Stellar::Asset #{self}>"
41
41
  end
42
42
 
43
43
  def code
@@ -50,7 +50,7 @@ module Stellar
50
50
  raise "#{switch} assets do not have a code"
51
51
  end
52
52
  end
53
-
53
+
54
54
  def issuer
55
55
  case switch
56
56
  when AssetType.asset_type_credit_alphanum4
@@ -1 +1 @@
1
- require "stellar-base"
1
+ require "stellar-base"
@@ -1,10 +1,10 @@
1
- require 'active_support/deprecation'
1
+ require "active_support/deprecation"
2
2
 
3
- Stellar::Deprecation ||= ActiveSupport::Deprecation.new('next release', 'stellar-base')
3
+ Stellar::Deprecation ||= ActiveSupport::Deprecation.new("next release", "stellar-base")
4
4
 
5
5
  class << Stellar::Operation
6
- alias_method :manage_offer, :manage_sell_offer
7
- alias_method :create_passive_offer, :create_passive_sell_offer
6
+ alias manage_offer manage_sell_offer
7
+ alias create_passive_offer create_passive_sell_offer
8
8
 
9
9
  deprecate deprecator: Stellar::Deprecation,
10
10
  manage_offer: :manage_sell_offer,
@@ -12,11 +12,10 @@ class << Stellar::Operation
12
12
  end
13
13
 
14
14
  class << Stellar::Transaction
15
- alias_method :manage_offer, :manage_sell_offer
16
- alias_method :create_passive_offer, :create_passive_sell_offer
15
+ alias manage_offer manage_sell_offer
16
+ alias create_passive_offer create_passive_sell_offer
17
17
 
18
18
  deprecate deprecator: Stellar::Deprecation,
19
19
  manage_offer: :manage_sell_offer,
20
20
  create_passive_offer: :create_passive_sell_offer
21
21
  end
22
-
@@ -0,0 +1,49 @@
1
+ module Stellar::Concerns
2
+ module Transaction
3
+ # Returns the string of bytes that, when hashed, provide the value which
4
+ # should be signed to create a valid stellar transaction signature
5
+ def signature_base
6
+ signature_base_prefix + to_xdr
7
+ end
8
+
9
+ def sign(key_pair)
10
+ key_pair.sign(hash)
11
+ end
12
+
13
+ def sign_decorated(key_pair)
14
+ key_pair.sign_decorated(hash)
15
+ end
16
+
17
+ def hash
18
+ Digest::SHA256.digest(signature_base)
19
+ end
20
+
21
+ def merge(other)
22
+ cloned = Marshal.load Marshal.dump(self)
23
+ cloned.operations += other.to_operations
24
+ cloned
25
+ end
26
+
27
+ #
28
+ # Extracts the operations from this single transaction,
29
+ # setting the source account on the extracted operations.
30
+ #
31
+ # Useful for merging transactions.
32
+ #
33
+ # @return [Array<Operation>] the operations
34
+ def to_operations
35
+ # FIXME: what was the purpose of this?
36
+ # cloned = Marshal.load Marshal.dump(operations)
37
+ operations.each do |op|
38
+ op.source_account ||= source_account
39
+ end
40
+ end
41
+
42
+ def apply_defaults
43
+ self.operations ||= []
44
+ self.fee ||= 100
45
+ self.memo ||= Stellar::Memo.new(:memo_none)
46
+ self.ext ||= Stellar::Transaction::Ext.new 0
47
+ end
48
+ end
49
+ end