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
@@ -1,14 +1,14 @@
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,
11
- memo: nil
6
+ source_account:,
7
+ sequence_number:,
8
+ base_fee: 100,
9
+ time_bounds: nil,
10
+ memo: nil,
11
+ v1: false
12
12
  )
13
13
  raise ArgumentError, "Bad :source_account" unless source_account.is_a?(Stellar::KeyPair)
14
14
  raise ArgumentError, "Bad :sequence_number" unless sequence_number.is_a?(Integer) && sequence_number >= 0
@@ -19,8 +19,9 @@ module Stellar
19
19
  @sequence_number = sequence_number
20
20
  @base_fee = base_fee
21
21
  @time_bounds = time_bounds
22
- @memo = self.make_memo(memo)
23
- @operations = Array.new
22
+ @memo = make_memo(memo)
23
+ @operations = []
24
+ @v1 = v1
24
25
  end
25
26
 
26
27
  def build
@@ -31,30 +32,67 @@ module Stellar
31
32
  elsif @time_bounds.max_time != 0 && @time_bounds.min_time > @time_bounds.max_time
32
33
  raise "Timebounds.max_time must be greater than min_time"
33
34
  end
34
- tx = Stellar::Transaction.new(
35
- source_account: @source_account.account_id,
35
+
36
+ attrs = {
36
37
  fee: @base_fee * @operations.length,
37
38
  seq_num: @sequence_number,
38
39
  time_bounds: @time_bounds,
39
40
  memo: @memo,
40
41
  operations: @operations,
41
42
  ext: Stellar::Transaction::Ext.new(0)
42
- )
43
+ }
44
+
45
+ tx = if @v1
46
+ attrs[:source_account] = @source_account.muxed_account
47
+ Stellar::Transaction.new(attrs)
48
+ else
49
+ attrs[:source_account_ed25519] = @source_account.raw_public_key
50
+ Stellar::TransactionV0.new(attrs)
51
+ end
52
+
43
53
  @sequence_number += 1
44
54
  tx
45
55
  end
46
56
 
57
+ def build_fee_bump(inner_txe:)
58
+ if inner_txe.switch != Stellar::EnvelopeType.envelope_type_tx
59
+ raise "Invalid inner transaction type, it should be a `envelope_type_tx` but received a #{inner_tx.to_envelope.switch}."
60
+ end
61
+
62
+ inner_tx = inner_txe.tx
63
+ inner_ops = inner_tx.operations
64
+ inner_base_fee_rate = inner_tx.fee.fdiv(inner_ops.length)
65
+
66
+ # The fee rate for fee bump is at least the fee rate of the inner transaction
67
+ if @base_fee < inner_base_fee_rate
68
+ raise "Insufficient base_fee, it should be at least #{inner_base_fee_rate} stroops."
69
+ end
70
+
71
+ Stellar::FeeBumpTransaction.new(
72
+ fee_source: @source_account.muxed_account,
73
+ fee: @base_fee * (inner_ops.length + 1),
74
+ inner_tx: Stellar::FeeBumpTransaction::InnerTx.new(:envelope_type_tx, inner_txe.v1!),
75
+ ext: Stellar::FeeBumpTransaction::Ext.new(0)
76
+ )
77
+ end
78
+
47
79
  def add_operation(operation)
48
80
  raise ArgumentError, "Bad operation" unless operation.is_a? Stellar::Operation
49
81
  @operations.push(operation)
50
82
  self
51
83
  end
52
84
 
53
- def clear_operations()
85
+ def clear_operations
54
86
  @operations.clear
55
87
  self
56
88
  end
57
89
 
90
+ def set_source_account(account_kp)
91
+ raise ArgumentError, "Bad source account" unless account_kp.is_a?(Stellar::KeyPair)
92
+ @source_account = account_kp
93
+ self
94
+ end
95
+
58
96
  def set_sequence_number(seq_num)
59
97
  raise ArgumentError, "Bad sequence number" unless seq_num.is_a?(Integer) && seq_num >= 0
60
98
  @sequence_number = seq_num
@@ -70,10 +108,10 @@ module Stellar
70
108
  @time_bounds = Stellar::TimeBounds.new(min_time: 0, max_time: nil)
71
109
  end
72
110
 
73
- if timeout == 0
74
- @time_bounds.max_time = timeout
111
+ @time_bounds.max_time = if timeout == 0
112
+ timeout
75
113
  else
76
- @time_bounds.max_time = Time.now.to_i + timeout
114
+ Time.now.to_i + timeout
77
115
  end
78
116
 
79
117
  self
@@ -84,23 +122,28 @@ module Stellar
84
122
  self
85
123
  end
86
124
 
125
+ def set_base_fee(base_fee)
126
+ raise ArgumentError, "Bad base fee" unless base_fee.is_a?(Integer) && base_fee >= 100
127
+ @base_fee = base_fee
128
+ self
129
+ end
130
+
87
131
  def make_memo(memo)
88
132
  case memo
89
- when Stellar::Memo ;
133
+ when Stellar::Memo
90
134
  memo
91
- when nil ;
135
+ when nil
92
136
  Memo.new(:memo_none)
93
- when Integer ;
137
+ when Integer
94
138
  Memo.new(:memo_id, memo)
95
- when String ;
139
+ when String
96
140
  Memo.new(:memo_text, memo)
97
- when Array ;
141
+ when Array
98
142
  t, val = *memo
99
143
  Memo.new(:"memo_#{t}", val)
100
144
  else
101
145
  raise ArgumentError, "Bad :memo"
102
146
  end
103
147
  end
104
-
105
148
  end
106
- end
149
+ 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,39 @@
1
+ module Stellar
2
+ class TransactionV0
3
+ include Stellar::Concerns::Transaction
4
+
5
+ def to_envelope(*key_pairs)
6
+ signatures = (key_pairs || []).map(&method(:sign_decorated))
7
+
8
+ TransactionEnvelope.v0(signatures: signatures, tx: self)
9
+ end
10
+
11
+ def signature_base_prefix
12
+ val = Stellar::EnvelopeType.envelope_type_tx_v0
13
+
14
+ Stellar.current_network_id + Stellar::EnvelopeType.to_xdr(val)
15
+ end
16
+
17
+ # Backwards Compatibility: Use ENVELOPE_TYPE_TX to sign ENVELOPE_TYPE_TX_V0
18
+ # we need a Transaction to generate the signature base
19
+ def signature_base
20
+ tx = Stellar::Transaction.from_xdr(
21
+ # TransactionV0 is a transaction with the AccountID discriminant
22
+ # stripped off, we need to put it back to build a valid transaction
23
+ # which we can use to build a TransactionSignaturePayloadTaggedTransaction
24
+ Stellar::PublicKeyType.to_xdr(Stellar::PublicKeyType.public_key_type_ed25519) + to_xdr
25
+ )
26
+
27
+ tagged_tx = Stellar::TransactionSignaturePayload::TaggedTransaction.new(:envelope_type_tx, tx)
28
+
29
+ Stellar::TransactionSignaturePayload.new(
30
+ network_id: Stellar.current_network_id,
31
+ tagged_transaction: tagged_tx
32
+ ).to_xdr
33
+ end
34
+
35
+ def source_account
36
+ source_account_ed25519
37
+ end
38
+ end
39
+ 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.0.pre1"
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.0.pre1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Fleckenstein
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-26 00:00:00.000000000 Z
11
+ date: 2020-05-29 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,132 +80,6 @@ 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
83
  description:
210
84
  email:
211
85
  - scott@stellar.org
@@ -213,23 +87,8 @@ executables: []
213
87
  extensions: []
214
88
  extra_rdoc_files: []
215
89
  files:
216
- - ".gitignore"
217
- - ".travis.yml"
218
- - ".yardopts"
219
- - CHANGELOG.md
220
- - CONTRIBUTING.md
221
- - Gemfile
222
- - Guardfile
223
- - LICENSE.txt
90
+ - LICENSE
224
91
  - 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
92
  - generated/stellar-base-generated.rb
234
93
  - generated/stellar/account_entry.rb
235
94
  - generated/stellar/account_entry/ext.rb
@@ -275,12 +134,20 @@ files:
275
134
  - generated/stellar/envelope_type.rb
276
135
  - generated/stellar/error.rb
277
136
  - generated/stellar/error_code.rb
137
+ - generated/stellar/fee_bump_transaction.rb
138
+ - generated/stellar/fee_bump_transaction/ext.rb
139
+ - generated/stellar/fee_bump_transaction/inner_tx.rb
140
+ - generated/stellar/fee_bump_transaction_envelope.rb
278
141
  - generated/stellar/hello.rb
279
142
  - generated/stellar/hmac_sha256_key.rb
280
143
  - generated/stellar/hmac_sha256_mac.rb
281
144
  - generated/stellar/inflation_payout.rb
282
145
  - generated/stellar/inflation_result.rb
283
146
  - generated/stellar/inflation_result_code.rb
147
+ - generated/stellar/inner_transaction_result.rb
148
+ - generated/stellar/inner_transaction_result/ext.rb
149
+ - generated/stellar/inner_transaction_result/result.rb
150
+ - generated/stellar/inner_transaction_result_pair.rb
284
151
  - generated/stellar/ip_addr_type.rb
285
152
  - generated/stellar/ledger_close_meta.rb
286
153
  - generated/stellar/ledger_close_meta_v0.rb
@@ -319,6 +186,8 @@ files:
319
186
  - generated/stellar/memo.rb
320
187
  - generated/stellar/memo_type.rb
321
188
  - generated/stellar/message_type.rb
189
+ - generated/stellar/muxed_account.rb
190
+ - generated/stellar/muxed_account/med25519.rb
322
191
  - generated/stellar/offer_entry.rb
323
192
  - generated/stellar/offer_entry/ext.rb
324
193
  - generated/stellar/offer_entry_flags.rb
@@ -398,6 +267,10 @@ files:
398
267
  - generated/stellar/transaction_set.rb
399
268
  - generated/stellar/transaction_signature_payload.rb
400
269
  - generated/stellar/transaction_signature_payload/tagged_transaction.rb
270
+ - generated/stellar/transaction_v0.rb
271
+ - generated/stellar/transaction_v0/ext.rb
272
+ - generated/stellar/transaction_v0_envelope.rb
273
+ - generated/stellar/transaction_v1_envelope.rb
401
274
  - generated/stellar/trust_line_entry.rb
402
275
  - generated/stellar/trust_line_entry/ext.rb
403
276
  - generated/stellar/trust_line_entry/ext/v1.rb
@@ -408,10 +281,11 @@ files:
408
281
  - lib/stellar/account_flags.rb
409
282
  - lib/stellar/asset.rb
410
283
  - lib/stellar/base.rb
411
- - lib/stellar/base/compat.rb
412
- - lib/stellar/base/version.rb
284
+ - lib/stellar/compat.rb
285
+ - lib/stellar/concerns/transaction.rb
413
286
  - lib/stellar/convert.rb
414
287
  - lib/stellar/factories.rb
288
+ - lib/stellar/fee_bump_transaction.rb
415
289
  - lib/stellar/key_pair.rb
416
290
  - lib/stellar/networks.rb
417
291
  - lib/stellar/operation.rb
@@ -422,39 +296,13 @@ files:
422
296
  - lib/stellar/transaction.rb
423
297
  - lib/stellar/transaction_builder.rb
424
298
  - lib/stellar/transaction_envelope.rb
299
+ - lib/stellar/transaction_v0.rb
425
300
  - lib/stellar/util/continued_fraction.rb
426
301
  - 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
302
+ - lib/stellar/version.rb
455
303
  homepage: https://github.com/stellar/ruby-stellar-base
456
304
  licenses:
457
- - Apache 2.0
305
+ - Apache-2.0
458
306
  metadata: {}
459
307
  post_install_message:
460
308
  rdoc_options: []
@@ -468,30 +316,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
468
316
  version: '0'
469
317
  required_rubygems_version: !ruby/object:Gem::Requirement
470
318
  requirements:
471
- - - ">="
319
+ - - ">"
472
320
  - !ruby/object:Gem::Version
473
- version: '0'
321
+ version: 1.3.1
474
322
  requirements: []
475
- rubygems_version: 3.0.3
323
+ rubygems_version: 3.1.3
476
324
  signing_key:
477
325
  specification_version: 4
478
326
  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
327
+ test_files: []