stellar-base 0.22.0 → 0.23.1

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/CHANGELOG.md +12 -0
  3. data/{LICENSE.txt → LICENSE} +0 -0
  4. data/README.md +0 -4
  5. data/generated/stellar-base-generated.rb +10 -1
  6. data/generated/stellar/allow_trust_op.rb +3 -2
  7. data/generated/stellar/authenticated_message.rb +4 -4
  8. data/generated/stellar/authenticated_message/v0.rb +4 -4
  9. data/generated/stellar/change_trust_result_code.rb +1 -1
  10. data/generated/stellar/crypto_key_type.rb +8 -4
  11. data/generated/stellar/curve25519_public.rb +1 -1
  12. data/generated/stellar/curve25519_secret.rb +1 -1
  13. data/generated/stellar/envelope_type.rb +9 -5
  14. data/generated/stellar/fee_bump_transaction.rb +39 -0
  15. data/generated/stellar/fee_bump_transaction/ext.rb +24 -0
  16. data/generated/stellar/fee_bump_transaction/inner_tx.rb +25 -0
  17. data/generated/stellar/fee_bump_transaction_envelope.rb +22 -0
  18. data/generated/stellar/hmac_sha256_key.rb +1 -1
  19. data/generated/stellar/hmac_sha256_mac.rb +1 -1
  20. data/generated/stellar/inner_transaction_result.rb +56 -0
  21. data/generated/stellar/inner_transaction_result/ext.rb +24 -0
  22. data/generated/stellar/inner_transaction_result/result.rb +52 -0
  23. data/generated/stellar/inner_transaction_result_pair.rb +20 -0
  24. data/generated/stellar/ledger_close_meta.rb +1 -1
  25. data/generated/stellar/manage_buy_offer_result_code.rb +5 -4
  26. data/generated/stellar/manage_sell_offer_result_code.rb +12 -8
  27. data/generated/stellar/muxed_account.rb +35 -0
  28. data/generated/stellar/muxed_account/med25519.rb +22 -0
  29. data/generated/stellar/operation.rb +3 -3
  30. data/generated/stellar/operation/body.rb +2 -2
  31. data/generated/stellar/operation_result.rb +1 -1
  32. data/generated/stellar/operation_result/tr.rb +1 -1
  33. data/generated/stellar/operation_result_code.rb +3 -3
  34. data/generated/stellar/path_payment_strict_receive_op.rb +4 -4
  35. data/generated/stellar/path_payment_strict_receive_result_code.rb +21 -12
  36. data/generated/stellar/path_payment_strict_send_op.rb +6 -6
  37. data/generated/stellar/path_payment_strict_send_result_code.rb +20 -12
  38. data/generated/stellar/payment_op.rb +4 -4
  39. data/generated/stellar/survey_response_body.rb +2 -2
  40. data/generated/stellar/transaction.rb +2 -2
  41. data/generated/stellar/transaction_envelope.rb +17 -8
  42. data/generated/stellar/transaction_result.rb +3 -0
  43. data/generated/stellar/transaction_result/result.rb +9 -3
  44. data/generated/stellar/transaction_result_code.rb +21 -14
  45. data/generated/stellar/transaction_signature_payload.rb +3 -1
  46. data/generated/stellar/transaction_signature_payload/tagged_transaction.rb +7 -3
  47. data/generated/stellar/transaction_v0.rb +39 -0
  48. data/generated/stellar/transaction_v0/ext.rb +24 -0
  49. data/generated/stellar/transaction_v0_envelope.rb +22 -0
  50. data/generated/stellar/transaction_v1_envelope.rb +22 -0
  51. data/generated/stellar/trust_line_flags.rb +6 -2
  52. data/lib/stellar-base.rb +27 -25
  53. data/lib/stellar/account_flags.rb +2 -4
  54. data/lib/stellar/asset.rb +6 -6
  55. data/lib/stellar/base.rb +1 -1
  56. data/lib/stellar/{base/compat.rb → compat.rb} +6 -7
  57. data/lib/stellar/concerns/transaction.rb +49 -0
  58. data/lib/stellar/convert.rb +2 -2
  59. data/lib/stellar/factories.rb +1 -3
  60. data/lib/stellar/fee_bump_transaction.rb +21 -0
  61. data/lib/stellar/key_pair.rb +9 -6
  62. data/lib/stellar/networks.rb +5 -7
  63. data/lib/stellar/operation.rb +421 -416
  64. data/lib/stellar/path_payment_strict_receive_result.rb +1 -2
  65. data/lib/stellar/price.rb +2 -4
  66. data/lib/stellar/signer_key.rb +4 -8
  67. data/lib/stellar/thresholds.rb +5 -7
  68. data/lib/stellar/transaction.rb +169 -195
  69. data/lib/stellar/transaction_builder.rb +59 -25
  70. data/lib/stellar/transaction_envelope.rb +40 -8
  71. data/lib/stellar/transaction_v0.rb +51 -0
  72. data/lib/stellar/util/continued_fraction.rb +19 -19
  73. data/lib/stellar/util/strkey.rb +39 -14
  74. data/lib/stellar/{base/version.rb → version.rb} +1 -1
  75. metadata +35 -204
  76. data/.gitignore +0 -17
  77. data/.travis.yml +0 -16
  78. data/.yardopts +0 -8
  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
@@ -1,13 +1,12 @@
1
1
  module Stellar
2
2
  class TransactionBuilder
3
-
4
- attr_reader :source_account, :sequence_number, :base_fee, :time_bounds, :time_bounds, :memo, :operations
3
+ attr_reader :source_account, :sequence_number, :base_fee, :time_bounds, :memo, :operations
5
4
 
6
5
  def initialize(
7
- source_account:,
8
- sequence_number:,
9
- base_fee: 100,
10
- time_bounds: nil,
6
+ source_account:,
7
+ sequence_number:,
8
+ base_fee: 100,
9
+ time_bounds: nil,
11
10
  memo: nil
12
11
  )
13
12
  raise ArgumentError, "Bad :source_account" unless source_account.is_a?(Stellar::KeyPair)
@@ -19,8 +18,8 @@ module Stellar
19
18
  @sequence_number = sequence_number
20
19
  @base_fee = base_fee
21
20
  @time_bounds = time_bounds
22
- @memo = self.make_memo(memo)
23
- @operations = Array.new
21
+ @memo = make_memo(memo)
22
+ @operations = []
24
23
  end
25
24
 
26
25
  def build
@@ -31,17 +30,45 @@ module Stellar
31
30
  elsif @time_bounds.max_time != 0 && @time_bounds.min_time > @time_bounds.max_time
32
31
  raise "Timebounds.max_time must be greater than min_time"
33
32
  end
34
- tx = Stellar::Transaction.new(
35
- source_account: @source_account.account_id,
33
+
34
+ attrs = {
35
+ source_account: @source_account.muxed_account,
36
36
  fee: @base_fee * @operations.length,
37
37
  seq_num: @sequence_number,
38
38
  time_bounds: @time_bounds,
39
39
  memo: @memo,
40
40
  operations: @operations,
41
41
  ext: Stellar::Transaction::Ext.new(0)
42
- )
42
+ }
43
+
43
44
  @sequence_number += 1
44
- tx
45
+
46
+ Stellar::Transaction.new(attrs)
47
+ end
48
+
49
+ def build_fee_bump(inner_txe:)
50
+ p inner_txe.switch
51
+ if inner_txe.switch == Stellar::EnvelopeType.envelope_type_tx_v0
52
+ inner_txe = Stellar::TransactionEnvelope.v1(tx: inner_txe.tx.to_v1, signatures: inner_txe.signatures)
53
+ elsif inner_txe.switch != Stellar::EnvelopeType.envelope_type_tx
54
+ raise ArgumentError, "Invalid inner transaction type #{inner_txe.switch}"
55
+ end
56
+
57
+ inner_tx = inner_txe.tx
58
+ inner_ops = inner_tx.operations
59
+ inner_base_fee_rate = inner_tx.fee.fdiv(inner_ops.length)
60
+
61
+ # The fee rate for fee bump is at least the fee rate of the inner transaction
62
+ if @base_fee < inner_base_fee_rate
63
+ raise "Insufficient base_fee, it should be at least #{inner_base_fee_rate} stroops."
64
+ end
65
+
66
+ Stellar::FeeBumpTransaction.new(
67
+ fee_source: @source_account.muxed_account,
68
+ fee: @base_fee * (inner_ops.length + 1),
69
+ inner_tx: Stellar::FeeBumpTransaction::InnerTx.new(:envelope_type_tx, inner_txe.v1!),
70
+ ext: Stellar::FeeBumpTransaction::Ext.new(0)
71
+ )
45
72
  end
46
73
 
47
74
  def add_operation(operation)
@@ -50,11 +77,17 @@ module Stellar
50
77
  self
51
78
  end
52
79
 
53
- def clear_operations()
80
+ def clear_operations
54
81
  @operations.clear
55
82
  self
56
83
  end
57
84
 
85
+ def set_source_account(account_kp)
86
+ raise ArgumentError, "Bad source account" unless account_kp.is_a?(Stellar::KeyPair)
87
+ @source_account = account_kp
88
+ self
89
+ end
90
+
58
91
  def set_sequence_number(seq_num)
59
92
  raise ArgumentError, "Bad sequence number" unless seq_num.is_a?(Integer) && seq_num >= 0
60
93
  @sequence_number = seq_num
@@ -70,11 +103,7 @@ module Stellar
70
103
  @time_bounds = Stellar::TimeBounds.new(min_time: 0, max_time: nil)
71
104
  end
72
105
 
73
- if timeout == 0
74
- @time_bounds.max_time = timeout
75
- else
76
- @time_bounds.max_time = Time.now.to_i + timeout
77
- end
106
+ @time_bounds.max_time = timeout == 0 ? timeout : Time.now.to_i + timeout
78
107
 
79
108
  self
80
109
  end
@@ -84,23 +113,28 @@ module Stellar
84
113
  self
85
114
  end
86
115
 
116
+ def set_base_fee(base_fee)
117
+ raise ArgumentError, "Bad base fee" unless base_fee.is_a?(Integer) && base_fee >= 100
118
+ @base_fee = base_fee
119
+ self
120
+ end
121
+
87
122
  def make_memo(memo)
88
123
  case memo
89
- when Stellar::Memo ;
124
+ when Stellar::Memo
90
125
  memo
91
- when nil ;
126
+ when nil
92
127
  Memo.new(:memo_none)
93
- when Integer ;
128
+ when Integer
94
129
  Memo.new(:memo_id, memo)
95
- when String ;
130
+ when String
96
131
  Memo.new(:memo_text, memo)
97
- when Array ;
132
+ when Array
98
133
  t, val = *memo
99
134
  Memo.new(:"memo_#{t}", val)
100
135
  else
101
136
  raise ArgumentError, "Bad :memo"
102
137
  end
103
138
  end
104
-
105
139
  end
106
- end
140
+ end
@@ -1,23 +1,56 @@
1
1
  module Stellar
2
2
  class TransactionEnvelope
3
+ class << self
4
+ def v0(tx:, signatures:)
5
+ v0_envelope = TransactionV0Envelope.new(tx: tx, signatures: signatures)
6
+ new(:envelope_type_tx_v0, v0_envelope)
7
+ end
8
+
9
+ def v1(tx:, signatures:)
10
+ v1_envelope = TransactionV1Envelope.new(tx: tx, signatures: signatures)
11
+ new(:envelope_type_tx, v1_envelope)
12
+ end
13
+
14
+ def fee_bump(tx:, signatures:)
15
+ fee_bump_envelope = FeeBumpTransactionEnvelope.new(tx: tx, signatures: signatures)
16
+ new(:envelope_type_tx_fee_bump, fee_bump_envelope)
17
+ end
18
+ end
19
+
20
+ # Delegates any undefined method to the currently set arm
21
+ def method_missing(method, *args, &block)
22
+ case switch
23
+ when EnvelopeType.envelope_type_tx_v0
24
+ v0!.public_send(method, *args)
25
+ when EnvelopeType.envelope_type_tx
26
+ v1!.public_send(method, *args)
27
+ when EnvelopeType.envelope_type_tx_fee_bump
28
+ fee_bump!.public_send(method, *args)
29
+ else
30
+ super
31
+ end
32
+ end
33
+
34
+ def respond_to_missing?(method, include_private = false)
35
+ ["tx", "signatures"].include?(method) || super
36
+ end
3
37
 
4
- #
5
38
  # Checks to ensure that every signature for the envelope is
6
39
  # a valid signature of one of the provided `key_pairs`
7
- #
40
+ #
8
41
  # NOTE: this does not do any authorization checks, which requires access to
9
42
  # the current ledger state.
10
- #
43
+ #
11
44
  # @param *key_pairs [Array<Stellar::KeyPair>] The key pairs to check the envelopes signatures against
12
- #
45
+ #
13
46
  # @return [Boolean] true if all signatures are from the provided key_pairs and validly sign the tx's hash
14
47
  def signed_correctly?(*key_pairs)
15
48
  hash = tx.hash
16
49
  return false if signatures.empty?
17
50
 
18
51
  key_index = key_pairs.index_by(&:signature_hint)
19
-
20
- signatures.all? do |sig|
52
+
53
+ signatures.all? do |sig|
21
54
  key_pair = key_index[sig.hint]
22
55
  break false if key_pair.nil?
23
56
 
@@ -34,6 +67,5 @@ module Stellar
34
67
  merged_tx.signatures = [signatures, other.signatures]
35
68
  merged_tx
36
69
  end
37
-
38
70
  end
39
- end
71
+ end
@@ -0,0 +1,51 @@
1
+ module Stellar
2
+ class TransactionV0
3
+ include Stellar::Concerns::Transaction
4
+
5
+ def to_v1
6
+ Transaction.new(
7
+ source_account: Stellar::MuxedAccount.new(:key_type_ed25519, source_account),
8
+ seq_num: seq_num,
9
+ operations: operations,
10
+ fee: fee,
11
+ memo: memo,
12
+ time_bounds: time_bounds,
13
+ ext: ext
14
+ )
15
+ end
16
+
17
+ def to_envelope(*key_pairs)
18
+ signatures = (key_pairs || []).map(&method(:sign_decorated))
19
+
20
+ TransactionEnvelope.v0(signatures: signatures, tx: self)
21
+ end
22
+
23
+ def signature_base_prefix
24
+ val = Stellar::EnvelopeType.envelope_type_tx_v0
25
+
26
+ Stellar.current_network_id + Stellar::EnvelopeType.to_xdr(val)
27
+ end
28
+
29
+ # Backwards Compatibility: Use ENVELOPE_TYPE_TX to sign ENVELOPE_TYPE_TX_V0
30
+ # we need a Transaction to generate the signature base
31
+ def signature_base
32
+ tx = Stellar::Transaction.from_xdr(
33
+ # TransactionV0 is a transaction with the AccountID discriminant
34
+ # stripped off, we need to put it back to build a valid transaction
35
+ # which we can use to build a TransactionSignaturePayloadTaggedTransaction
36
+ Stellar::PublicKeyType.to_xdr(Stellar::PublicKeyType.public_key_type_ed25519) + to_xdr
37
+ )
38
+
39
+ tagged_tx = Stellar::TransactionSignaturePayload::TaggedTransaction.new(:envelope_type_tx, tx)
40
+
41
+ Stellar::TransactionSignaturePayload.new(
42
+ network_id: Stellar.current_network_id,
43
+ tagged_transaction: tagged_tx
44
+ ).to_xdr
45
+ end
46
+
47
+ def source_account
48
+ source_account_ed25519
49
+ end
50
+ end
51
+ end
@@ -5,13 +5,13 @@ module Stellar
5
5
  attr_reader :i
6
6
  attr_reader :f
7
7
 
8
- def self.best_r(number, max_precision=MAX_PRECISION)
8
+ def self.best_r(number, max_precision = MAX_PRECISION)
9
9
  cur_cf = new(number)
10
10
 
11
11
  loop do
12
- next_cf = cur_cf.extend()
13
- cur_r = cur_cf.to_r(max_precision)
14
- next_r = next_cf.to_r(max_precision)
12
+ next_cf = cur_cf.extend
13
+ cur_r = cur_cf.to_r(max_precision)
14
+ next_r = next_cf.to_r(max_precision)
15
15
 
16
16
  break cur_r if cur_cf.done? || cur_r == next_r
17
17
 
@@ -21,9 +21,9 @@ module Stellar
21
21
  cur_cf.to_r(max_precision)
22
22
  end
23
23
 
24
- def initialize(val, parents=[])
25
- @i = val.floor
26
- @f = val - @i
24
+ def initialize(val, parents = [])
25
+ @i = val.floor
26
+ @f = val - @i
27
27
  @parents = parents
28
28
  end
29
29
 
@@ -43,22 +43,22 @@ module Stellar
43
43
  def convergents
44
44
  return @convergents if defined? @convergents
45
45
 
46
- c = [Fraction.new(0,1), Fraction.new(1,0)]
46
+ c = [Fraction.new(0, 1), Fraction.new(1, 0)]
47
47
  to_a.each_with_index do |a, i|
48
- i = i + 2
48
+ i += 2
49
49
 
50
- h = a * c[i-1].n + c[i-2].n
51
- k = a * c[i-1].d + c[i-2].d
52
- c << Fraction.new(h,k)
50
+ h = a * c[i - 1].n + c[i - 2].n
51
+ k = a * c[i - 1].d + c[i - 2].d
52
+ c << Fraction.new(h, k)
53
53
  end
54
54
 
55
55
  @converegents = c[2..-1]
56
56
  end
57
57
 
58
- def to_r(max_precision=MAX_PRECISION)
59
- fraction = convergents.take_while do |c|
58
+ def to_r(max_precision = MAX_PRECISION)
59
+ fraction = convergents.take_while { |c|
60
60
  c.n <= max_precision && c.d <= max_precision
61
- end.last
61
+ }.last
62
62
 
63
63
  Rational(fraction.n, fraction.d)
64
64
  end
@@ -67,7 +67,7 @@ module Stellar
67
67
  @f == 0
68
68
  end
69
69
 
70
- def extend(count=1)
70
+ def extend(count = 1)
71
71
  result = self
72
72
 
73
73
  count.times do
@@ -78,11 +78,11 @@ module Stellar
78
78
  result
79
79
  end
80
80
 
81
- class Fraction
81
+ class Fraction
82
82
  attr_reader :n
83
83
  attr_reader :d
84
84
 
85
- def initialize(n,d)
85
+ def initialize(n, d)
86
86
  @n = n
87
87
  @d = d
88
88
  end
@@ -93,4 +93,4 @@ module Stellar
93
93
  end
94
94
  end
95
95
  end
96
- end
96
+ end
@@ -1,33 +1,59 @@
1
1
  module Stellar
2
2
  module Util
3
-
4
- require 'base32'
5
- require 'digest/crc16_xmodem'
3
+ require "base32"
4
+ require "digest/crc16_xmodem"
6
5
 
7
6
  class StrKey
8
-
9
7
  VERSION_BYTES = {
10
- account_id: [ 6 << 3].pack("C"), # Base32-encodes to 'G...'
11
- seed: [18 << 3].pack("C"), # Base32-encodes to 'S...'
8
+ account_id: [6 << 3].pack("C"), # Base32-encodes to 'G...'
9
+ seed: [18 << 3].pack("C"), # Base32-encodes to 'S...'
12
10
  pre_auth_tx: [19 << 3].pack("C"), # Base32-encodes to 'T...'
13
- hash_x: [23 << 3].pack("C") # Base32-encodes to 'X...'
11
+ hash_x: [23 << 3].pack("C") # Base32-encodes to 'X...'
14
12
  }
15
13
 
16
14
  def self.check_encode(version, byte_str)
17
15
  version_byte = VERSION_BYTES[version]
18
16
  raise ArgumentError, "Invalid version: #{version}" if version_byte.blank?
19
17
  payload = version_byte + byte_str.dup.force_encoding("BINARY")
20
- check = checksum(payload)
21
- Base32.encode(payload + check)
18
+ check = checksum(payload)
19
+ # TODO: sort out, is it 100% safe to remove padding
20
+ # SEP-23 says yes, but shit happens
21
+ Base32.encode(payload + check).tr("=", "")
22
+ end
23
+
24
+ # Converts an Stellar::MuxedAccount to its string representation, forcing the ed25519 representation.
25
+ # @param [Stellar::MuxedAccount] muxed account
26
+ # @return [String] "G.."-like address
27
+ def self.encode_muxed_account(muxed_account)
28
+ ed25519 = if muxed_account.switch == Stellar::CryptoKeyType.key_type_ed25519
29
+ muxed_account.ed25519!
30
+ else
31
+ muxed_account.med25519!.ed25519
32
+ end
33
+
34
+ check_encode(:account_id, ed25519)
35
+ end
36
+
37
+ # Returns a Stellar::MuxedAccount, forcing the ed25519 discriminant
38
+ #
39
+ # @param [String] address to decode to XDR
40
+ # @return [Stellar::MuxedAccount] MuxedAccount with ed25519 discriminant
41
+ def self.decode_muxed_account(strkey)
42
+ Stellar::MuxedAccount.new(:key_type_ed25519, check_decode(:account_id, strkey))
22
43
  end
23
44
 
24
45
  def self.check_decode(expected_version, str)
25
- decoded = Base32.decode(str) rescue (raise ArgumentError, "Invalid base32 string")
46
+ decoded = begin
47
+ Base32.decode(str)
48
+ rescue
49
+ raise ArgumentError, "Invalid base32 string"
50
+ end
26
51
  version_byte = decoded[0]
27
- payload = decoded[1...-2]
28
- check = decoded[-2..-1]
29
- version = VERSION_BYTES.key(version_byte)
52
+ payload = decoded[1...-2]
53
+ check = decoded[-2..-1]
54
+ version = VERSION_BYTES.key(version_byte)
30
55
 
56
+ raise ArgumentError, "invalid encoded string" if str != Base32.encode(decoded).tr("=", "")
31
57
  raise ArgumentError, "Unexpected version: #{version.inspect}" if version != expected_version
32
58
  raise ArgumentError, "Invalid checksum" if check != checksum(decoded[0...-2])
33
59
  payload
@@ -39,7 +65,6 @@ module Stellar
39
65
  crc = Digest::CRC16XModem.checksum(bytes)
40
66
  [crc].pack("S<")
41
67
  end
42
-
43
68
  end
44
69
  end
45
70
  end
@@ -1,5 +1,5 @@
1
1
  module Stellar
2
2
  module Base
3
- VERSION = "0.22.0"
3
+ VERSION = "0.23.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stellar-base
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.22.0
4
+ version: 0.23.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Fleckenstein
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-26 00:00:00.000000000 Z
11
+ date: 2020-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xdr
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 3.0.0
19
+ version: 3.0.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 3.0.0
26
+ version: 3.0.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: digest-crc
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '0.5'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '0.5'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: base32
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '0.3'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '0.3'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rbnacl
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -80,156 +80,16 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: 5.0.0
83
- - !ruby/object:Gem::Dependency
84
- name: bundler
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '2.0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '2.0'
97
- - !ruby/object:Gem::Dependency
98
- name: rake
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '12.0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '12.0'
111
- - !ruby/object:Gem::Dependency
112
- name: xdrgen
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: rspec
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '3.1'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '3.1'
139
- - !ruby/object:Gem::Dependency
140
- name: guard-rspec
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
- - !ruby/object:Gem::Dependency
154
- name: simplecov
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- version: '0'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ">="
165
- - !ruby/object:Gem::Version
166
- version: '0'
167
- - !ruby/object:Gem::Dependency
168
- name: octokit
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - ">="
172
- - !ruby/object:Gem::Version
173
- version: '0'
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - ">="
179
- - !ruby/object:Gem::Version
180
- version: '0'
181
- - !ruby/object:Gem::Dependency
182
- name: netrc
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - ">="
186
- - !ruby/object:Gem::Version
187
- version: '0'
188
- type: :development
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - ">="
193
- - !ruby/object:Gem::Version
194
- version: '0'
195
- - !ruby/object:Gem::Dependency
196
- name: yard
197
- requirement: !ruby/object:Gem::Requirement
198
- requirements:
199
- - - ">="
200
- - !ruby/object:Gem::Version
201
- version: '0'
202
- type: :development
203
- prerelease: false
204
- version_requirements: !ruby/object:Gem::Requirement
205
- requirements:
206
- - - ">="
207
- - !ruby/object:Gem::Version
208
- version: '0'
209
- description:
83
+ description:
210
84
  email:
211
85
  - scott@stellar.org
212
86
  executables: []
213
87
  extensions: []
214
88
  extra_rdoc_files: []
215
89
  files:
216
- - ".gitignore"
217
- - ".travis.yml"
218
- - ".yardopts"
219
90
  - CHANGELOG.md
220
- - CONTRIBUTING.md
221
- - Gemfile
222
- - Guardfile
223
- - LICENSE.txt
91
+ - LICENSE
224
92
  - README.md
225
- - Rakefile
226
- - examples/allow_trust.rb
227
- - examples/create_account.rb
228
- - examples/low_level_transaction_post.rb
229
- - examples/mid_level_transaction_post.rb
230
- - examples/non_native_payment.rb
231
- - examples/offer.rb
232
- - examples/transaction_merge.rb
233
93
  - generated/stellar-base-generated.rb
234
94
  - generated/stellar/account_entry.rb
235
95
  - generated/stellar/account_entry/ext.rb
@@ -275,12 +135,20 @@ files:
275
135
  - generated/stellar/envelope_type.rb
276
136
  - generated/stellar/error.rb
277
137
  - generated/stellar/error_code.rb
138
+ - generated/stellar/fee_bump_transaction.rb
139
+ - generated/stellar/fee_bump_transaction/ext.rb
140
+ - generated/stellar/fee_bump_transaction/inner_tx.rb
141
+ - generated/stellar/fee_bump_transaction_envelope.rb
278
142
  - generated/stellar/hello.rb
279
143
  - generated/stellar/hmac_sha256_key.rb
280
144
  - generated/stellar/hmac_sha256_mac.rb
281
145
  - generated/stellar/inflation_payout.rb
282
146
  - generated/stellar/inflation_result.rb
283
147
  - generated/stellar/inflation_result_code.rb
148
+ - generated/stellar/inner_transaction_result.rb
149
+ - generated/stellar/inner_transaction_result/ext.rb
150
+ - generated/stellar/inner_transaction_result/result.rb
151
+ - generated/stellar/inner_transaction_result_pair.rb
284
152
  - generated/stellar/ip_addr_type.rb
285
153
  - generated/stellar/ledger_close_meta.rb
286
154
  - generated/stellar/ledger_close_meta_v0.rb
@@ -319,6 +187,8 @@ files:
319
187
  - generated/stellar/memo.rb
320
188
  - generated/stellar/memo_type.rb
321
189
  - generated/stellar/message_type.rb
190
+ - generated/stellar/muxed_account.rb
191
+ - generated/stellar/muxed_account/med25519.rb
322
192
  - generated/stellar/offer_entry.rb
323
193
  - generated/stellar/offer_entry/ext.rb
324
194
  - generated/stellar/offer_entry_flags.rb
@@ -398,6 +268,10 @@ files:
398
268
  - generated/stellar/transaction_set.rb
399
269
  - generated/stellar/transaction_signature_payload.rb
400
270
  - generated/stellar/transaction_signature_payload/tagged_transaction.rb
271
+ - generated/stellar/transaction_v0.rb
272
+ - generated/stellar/transaction_v0/ext.rb
273
+ - generated/stellar/transaction_v0_envelope.rb
274
+ - generated/stellar/transaction_v1_envelope.rb
401
275
  - generated/stellar/trust_line_entry.rb
402
276
  - generated/stellar/trust_line_entry/ext.rb
403
277
  - generated/stellar/trust_line_entry/ext/v1.rb
@@ -408,10 +282,11 @@ files:
408
282
  - lib/stellar/account_flags.rb
409
283
  - lib/stellar/asset.rb
410
284
  - lib/stellar/base.rb
411
- - lib/stellar/base/compat.rb
412
- - lib/stellar/base/version.rb
285
+ - lib/stellar/compat.rb
286
+ - lib/stellar/concerns/transaction.rb
413
287
  - lib/stellar/convert.rb
414
288
  - lib/stellar/factories.rb
289
+ - lib/stellar/fee_bump_transaction.rb
415
290
  - lib/stellar/key_pair.rb
416
291
  - lib/stellar/networks.rb
417
292
  - lib/stellar/operation.rb
@@ -422,41 +297,15 @@ files:
422
297
  - lib/stellar/transaction.rb
423
298
  - lib/stellar/transaction_builder.rb
424
299
  - lib/stellar/transaction_envelope.rb
300
+ - lib/stellar/transaction_v0.rb
425
301
  - lib/stellar/util/continued_fraction.rb
426
302
  - lib/stellar/util/strkey.rb
427
- - ruby-stellar-base.gemspec
428
- - spec/lib/stellar/account_flags_spec.rb
429
- - spec/lib/stellar/asset_spec.rb
430
- - spec/lib/stellar/convert_spec.rb
431
- - spec/lib/stellar/key_pair_spec.rb
432
- - spec/lib/stellar/networks_spec.rb
433
- - spec/lib/stellar/operation_spec.rb
434
- - spec/lib/stellar/path_payment_strict_receive_result_spec.rb
435
- - spec/lib/stellar/price_spec.rb
436
- - spec/lib/stellar/signer_key_spec.rb
437
- - spec/lib/stellar/thresholds_spec.rb
438
- - spec/lib/stellar/transaction_builder_spec.rb
439
- - spec/lib/stellar/transaction_envelope_spec.rb
440
- - spec/lib/stellar/transaction_spec.rb
441
- - spec/lib/stellar/util/strkey_spec.rb
442
- - spec/spec_helper.rb
443
- - spec/support/matchers/be_strkey.rb
444
- - spec/support/matchers/eq_bytes.rb
445
- - spec/support/matchers/have_length.rb
446
- - tasks/rspec.rake
447
- - tasks/travis.rake
448
- - tasks/xdr.rake
449
- - xdr/Stellar-SCP.x
450
- - xdr/Stellar-ledger-entries.x
451
- - xdr/Stellar-ledger.x
452
- - xdr/Stellar-overlay.x
453
- - xdr/Stellar-transaction.x
454
- - xdr/Stellar-types.x
303
+ - lib/stellar/version.rb
455
304
  homepage: https://github.com/stellar/ruby-stellar-base
456
305
  licenses:
457
- - Apache 2.0
306
+ - Apache-2.0
458
307
  metadata: {}
459
- post_install_message:
308
+ post_install_message:
460
309
  rdoc_options: []
461
310
  require_paths:
462
311
  - generated
@@ -472,26 +321,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
472
321
  - !ruby/object:Gem::Version
473
322
  version: '0'
474
323
  requirements: []
475
- rubygems_version: 3.0.3
476
- signing_key:
324
+ rubygems_version: 3.1.4
325
+ signing_key:
477
326
  specification_version: 4
478
327
  summary: 'Stellar client library: XDR'
479
- test_files:
480
- - spec/lib/stellar/account_flags_spec.rb
481
- - spec/lib/stellar/asset_spec.rb
482
- - spec/lib/stellar/convert_spec.rb
483
- - spec/lib/stellar/key_pair_spec.rb
484
- - spec/lib/stellar/networks_spec.rb
485
- - spec/lib/stellar/operation_spec.rb
486
- - spec/lib/stellar/path_payment_strict_receive_result_spec.rb
487
- - spec/lib/stellar/price_spec.rb
488
- - spec/lib/stellar/signer_key_spec.rb
489
- - spec/lib/stellar/thresholds_spec.rb
490
- - spec/lib/stellar/transaction_builder_spec.rb
491
- - spec/lib/stellar/transaction_envelope_spec.rb
492
- - spec/lib/stellar/transaction_spec.rb
493
- - spec/lib/stellar/util/strkey_spec.rb
494
- - spec/spec_helper.rb
495
- - spec/support/matchers/be_strkey.rb
496
- - spec/support/matchers/eq_bytes.rb
497
- - spec/support/matchers/have_length.rb
328
+ test_files: []