stellar-base 0.26.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +36 -32
  3. data/README.md +3 -3
  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_result.rb +6 -0
  26. data/generated/stellar/operation_result/tr.rb +12 -0
  27. data/generated/stellar/operation_type.rb +7 -1
  28. data/generated/stellar/payment_result_code.rb +1 -1
  29. data/generated/stellar/revoke_sponsorship_op.rb +1 -2
  30. data/generated/stellar/set_options_result_code.rb +14 -11
  31. data/generated/stellar/set_trust_line_flags_op.rb +25 -0
  32. data/generated/stellar/set_trust_line_flags_result.rb +25 -0
  33. data/generated/stellar/set_trust_line_flags_result_code.rb +31 -0
  34. data/generated/stellar/transaction_result_code.rb +1 -1
  35. data/generated/stellar/trust_line_flags.rb +5 -1
  36. data/lib/stellar-base.rb +2 -2
  37. data/lib/stellar/compat.rb +2 -1
  38. data/lib/stellar/concerns/transaction.rb +4 -2
  39. data/lib/stellar/dsl.rb +4 -0
  40. data/lib/stellar/operation.rb +85 -16
  41. data/lib/stellar/trust_line_flags.rb +53 -0
  42. data/lib/stellar/version.rb +3 -0
  43. metadata +27 -12
  44. data/generated/stellar/allow_trust_op/asset.rb +0 -33
  45. data/lib/stellar/base/version.rb +0 -5
@@ -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
@@ -16,8 +16,7 @@ silence_warnings do
16
16
  end
17
17
  Stellar.load_all!
18
18
 
19
- require_relative "stellar/base/version"
20
- Stellar::VERSION = Stellar::Base::VERSION
19
+ require_relative "stellar/version"
21
20
 
22
21
  Stellar::ONE = 1_0000000
23
22
  Stellar::Deprecation = ActiveSupport::Deprecation.new("next release", "stellar-base")
@@ -35,6 +34,7 @@ require_relative "./stellar/path_payment_strict_receive_result"
35
34
  require_relative "./stellar/price"
36
35
  require_relative "./stellar/signer_key"
37
36
  require_relative "./stellar/thresholds"
37
+ require_relative "./stellar/trust_line_flags"
38
38
 
39
39
  require_relative "./stellar/concerns/transaction"
40
40
  require_relative "./stellar/fee_bump_transaction"
@@ -4,5 +4,6 @@ class << Stellar::Operation
4
4
 
5
5
  deprecate deprecator: Stellar::Deprecation,
6
6
  manage_offer: :manage_sell_offer,
7
- create_passive_offer: :create_passive_sell_offer
7
+ create_passive_offer: :create_passive_sell_offer,
8
+ allow_trust: :set_trust_line_flags
8
9
  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,7 +32,9 @@ module Stellar::Concerns
32
32
  #
33
33
  # @return [Array<Operation>] the operations
34
34
  def to_operations
35
- cloned = Marshal.load Marshal.dump(operations)
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))
36
38
  cloned.each do |op|
37
39
  op.source_account ||= source_account
38
40
  end
data/lib/stellar/dsl.rb CHANGED
@@ -27,6 +27,9 @@ module Stellar
27
27
  )
28
28
  end
29
29
 
30
+ # @param [Asset, String, nil] subject
31
+ # @return [Stellar::Asset] instance of the Stellar::Asset
32
+ # @raise [TypeError] if subject cannot be converted to Stellar::Asset
30
33
  def Asset(subject = nil)
31
34
  case subject
32
35
  when Asset
@@ -45,6 +48,7 @@ module Stellar
45
48
  # Generates Stellar::Keypair from subject, use Stellar::Client.to_keypair as shortcut.
46
49
  # @param subject [String|Stellar::Account|Stellar::PublicKey|Stellar::SignerKey|Stellar::Keypair] subject.
47
50
  # @return [Stellar::Keypair] Stellar::Keypair instance.
51
+ # @raise [TypeError] if subject cannot be converted to Stellar::KeyPair
48
52
  def KeyPair(subject = nil)
49
53
  case subject
50
54
  when ->(subj) { subj.respond_to?(:to_keypair) }
@@ -3,6 +3,11 @@ require "bigdecimal"
3
3
  module Stellar
4
4
  class Operation
5
5
  MAX_INT64 = 2**63 - 1
6
+ TRUST_LINE_FLAGS_MAPPING = {
7
+ full: Stellar::TrustLineFlags.authorized_flag,
8
+ maintain_liabilities: Stellar::TrustLineFlags.authorized_to_maintain_liabilities_flag,
9
+ clawback_enabled: Stellar::TrustLineFlags.trustline_clawback_enabled_flag
10
+ }.freeze
6
11
 
7
12
  class << self
8
13
  include Stellar::DSL
@@ -17,16 +22,17 @@ module Stellar
17
22
  # @return [Stellar::Operation] the built operation
18
23
  def make(attributes = {})
19
24
  source_account = attributes[:source_account]
20
- body = Stellar::Operation::Body.new(*attributes[:body])
21
-
22
- op = Stellar::Operation.new(body: body)
23
25
 
24
- if source_account
25
- raise ArgumentError, "Bad :source_account" unless source_account.is_a?(Stellar::KeyPair)
26
- op.source_account = source_account.muxed_account
26
+ if source_account && !source_account.is_a?(Stellar::KeyPair)
27
+ raise ArgumentError, "Bad :source_account"
27
28
  end
28
29
 
29
- op
30
+ body = Stellar::Operation::Body.new(*attributes[:body])
31
+
32
+ Stellar::Operation.new(
33
+ body: body,
34
+ source_account: source_account&.muxed_account
35
+ )
30
36
  end
31
37
 
32
38
  #
@@ -300,7 +306,7 @@ module Stellar
300
306
  op = ManageBuyOfferOp.new({
301
307
  buying: buying,
302
308
  selling: selling,
303
- amount: amount,
309
+ buy_amount: amount,
304
310
  price: price,
305
311
  offer_id: offer_id
306
312
  })
@@ -371,11 +377,31 @@ module Stellar
371
377
  }))
372
378
  end
373
379
 
380
+ # @param asset [Stellar::Asset]
381
+ # @param trustor [Stellar::KeyPair]
382
+ # @param flags [{String, Symbol, Stellar::TrustLineFlags => true, false}] flags to to set or clear
383
+ # @param source_account [Stellar::KeyPair] source account (default is `nil`, which will use the source account of transaction)
384
+ def set_trust_line_flags(asset:, trustor:, flags: {}, source_account: nil)
385
+ op = Stellar::SetTrustLineFlagsOp.new
386
+ op.trustor = KeyPair(trustor).account_id
387
+ op.asset = Asset(asset)
388
+ op.attributes = Stellar::TrustLineFlags.set_clear_masks(flags)
389
+
390
+ make(
391
+ source_account: source_account,
392
+ body: [:set_trust_line_flags, op]
393
+ )
394
+ end
395
+
396
+ # DEPRECATED in favor of `set_trustline_flags`
374
397
  #
375
398
  # Helper method to create a valid AllowTrustOp, wrapped
376
399
  # in the necessary XDR structs to be included within a
377
400
  # transactions `operations` array.
378
401
  #
402
+ # @deprecated Use `set_trustline_flags` operation
403
+ # See {https://github.com/stellar/stellar-protocol/blob/master/core/cap-0035.md#allow-trust-operation-1 CAP-35 description}
404
+ # for more details
379
405
  # @param [Hash] attributes the attributes to create the operation with
380
406
  # @option attributes [Stellar::KeyPair] :trustor
381
407
  # @option attributes [Stellar::Asset] :asset
@@ -387,7 +413,8 @@ module Stellar
387
413
  op = AllowTrustOp.new
388
414
 
389
415
  trustor = attributes[:trustor]
390
- authorize = attributes[:authorize]
416
+ # we handle booleans here for the backward compatibility
417
+ authorize = attributes[:authorize].yield_self { |value| value == true ? :full : value }
391
418
  asset = attributes[:asset]
392
419
  if asset.is_a?(Array)
393
420
  asset = Asset.send(*asset)
@@ -395,20 +422,21 @@ module Stellar
395
422
 
396
423
  raise ArgumentError, "Bad :trustor" unless trustor.is_a?(Stellar::KeyPair)
397
424
 
398
- op.authorize = case authorize
399
- when :none, false then 0 # we handle booleans here for the backward compatibility
400
- when :full, true then TrustLineFlags.authorized_flag.value
401
- when :maintain_liabilities then TrustLineFlags.authorized_to_maintain_liabilities_flag.value
425
+ allowed_flags = TRUST_LINE_FLAGS_MAPPING.slice(:full, :maintain_liabilities)
426
+
427
+ # we handle booleans here for the backward compatibility
428
+ op.authorize = if allowed_flags.key?(authorize)
429
+ allowed_flags[authorize].value
430
+ elsif [:none, false].include?(authorize)
431
+ 0
402
432
  else
403
433
  raise ArgumentError, "Bad :authorize, supported values: :full, :maintain_liabilities, :none"
404
434
  end
405
435
 
406
436
  raise ArgumentError, "Bad :asset" unless asset.type == Stellar::AssetType.asset_type_credit_alphanum4
407
437
 
408
- atc = AllowTrustOp::Asset.new(:asset_type_credit_alphanum4, asset.code)
409
-
410
438
  op.trustor = trustor.account_id
411
- op.asset = atc
439
+ op.asset = AssetCode.new(:asset_type_credit_alphanum4, asset.code)
412
440
 
413
441
  make(attributes.merge({
414
442
  body: [:allow_trust, op]
@@ -493,6 +521,47 @@ module Stellar
493
521
  }))
494
522
  end
495
523
 
524
+ def clawback(source_account:, from:, amount:)
525
+ asset, amount = get_asset_amount(amount)
526
+
527
+ if amount == 0
528
+ raise ArgumentError, "Amount can not be zero"
529
+ end
530
+
531
+ if amount < 0
532
+ raise ArgumentError, "Negative amount is not allowed"
533
+ end
534
+
535
+ op = ClawbackOp.new(
536
+ amount: amount,
537
+ from: from.muxed_account,
538
+ asset: asset
539
+ )
540
+
541
+ make({
542
+ source_account: source_account,
543
+ body: [:clawback, op]
544
+ })
545
+ end
546
+
547
+ # Helper method to create clawback claimable balance operation
548
+ #
549
+ # @param [Stellar::KeyPair] source_account the attributes to create the operation with
550
+ # @param [String] balance_id `ClaimableBalanceID`, serialized in hex
551
+ #
552
+ # @return [Stellar::Operation] the built operation
553
+ def clawback_claimable_balance(source_account:, balance_id:)
554
+ balance_id = Stellar::ClaimableBalanceID.from_xdr(balance_id, :hex)
555
+ op = ClawbackClaimableBalanceOp.new(balance_id: balance_id)
556
+
557
+ make(
558
+ source_account: source_account,
559
+ body: [:clawback_claimable_balance, op]
560
+ )
561
+ rescue XDR::ReadError
562
+ raise ArgumentError, "Claimable balance id '#{balance_id}' is invalid"
563
+ end
564
+
496
565
  private
497
566
 
498
567
  def get_asset_amount(values)
@@ -0,0 +1,53 @@
1
+ module Stellar
2
+ class TrustLineFlags
3
+ # Converts an array of Stellar::TrustLineFlags members into
4
+ # an integers suitable for use in in a SetTrustLineFlagsOp.
5
+ #
6
+ # @param flags [Array<Stellar::TrustLineFlags>] the flags to combine
7
+ #
8
+ # @return [Fixnum] the combined result
9
+ def self.make_mask(flags)
10
+ normalize(flags).map(&:value).inject(&:|) || 0
11
+ end
12
+
13
+ # Converts an integer used in SetTrustLineFlagsOp on the set/clear flag options
14
+ # into an array of Stellar::TrustLineFlags members
15
+ #
16
+ # @param combined [Fixnum]
17
+ # @return [Array<Stellar::AccountFlags>]
18
+ def self.parse_mask(combined)
19
+ members.values.select { |m| (m.value & combined) != 0 }
20
+ end
21
+
22
+ # Converts each element of the input array to Stellar::TrustLineFlags instance.
23
+ #
24
+ # @param [Array<Stellar::TrustLineFlags,Symbol,#to_s>] input
25
+ # @return [Array<Stellar::TrustLineFlags>]
26
+ # @raise [TypeError] if any element of the input cannot be converted
27
+ def self.normalize(input)
28
+ input.map do |val|
29
+ case val
30
+ when Stellar::TrustLineFlags
31
+ val
32
+ when ->(_) { members.key?(val.to_s) }
33
+ from_name(val.to_s)
34
+ when ->(_) { members.key?("#{val}_flag") }
35
+ from_name("#{val}_flag")
36
+ else
37
+ raise TypeError, "unknown trustline flag: #{val}"
38
+ end
39
+ end
40
+ end
41
+
42
+ def self.set_clear_masks(flags)
43
+ set_flags = []
44
+ clear_flags = []
45
+
46
+ Hash(flags).each do |flag, value|
47
+ value.present? ? set_flags.push(flag) : clear_flags.push(flag)
48
+ end
49
+
50
+ {set_flags: make_mask(set_flags), clear_flags: make_mask(clear_flags)}
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,3 @@
1
+ module Stellar
2
+ VERSION = "0.27.0"
3
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stellar-base
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.26.0
4
+ version: 0.27.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Fleckenstein
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2021-02-05 00:00:00.000000000 Z
13
+ date: 2021-05-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -168,9 +168,9 @@ dependencies:
168
168
  - - "~>"
169
169
  - !ruby/object:Gem::Version
170
170
  version: '1.3'
171
- description: "The stellar-base library is the lowest-level stellar helper library.
172
- It consists of classes to read, write, \nhash, and sign the xdr structures that
173
- are used in stellar-core.\n"
171
+ description: |
172
+ The stellar-base library is the lowest-level stellar helper library. It consists of classes to read, write,
173
+ hash, and sign the xdr structures that are used in stellar-core.
174
174
  email:
175
175
  executables: []
176
176
  extensions: []
@@ -193,12 +193,12 @@ files:
193
193
  - generated/stellar/account_merge_result.rb
194
194
  - generated/stellar/account_merge_result_code.rb
195
195
  - generated/stellar/allow_trust_op.rb
196
- - generated/stellar/allow_trust_op/asset.rb
197
196
  - generated/stellar/allow_trust_result.rb
198
197
  - generated/stellar/allow_trust_result_code.rb
199
198
  - generated/stellar/asset.rb
200
199
  - generated/stellar/asset/alpha_num12.rb
201
200
  - generated/stellar/asset/alpha_num4.rb
201
+ - generated/stellar/asset_code.rb
202
202
  - generated/stellar/asset_type.rb
203
203
  - generated/stellar/auth.rb
204
204
  - generated/stellar/auth_cert.rb
@@ -225,11 +225,20 @@ files:
225
225
  - generated/stellar/claim_predicate_type.rb
226
226
  - generated/stellar/claimable_balance_entry.rb
227
227
  - generated/stellar/claimable_balance_entry/ext.rb
228
+ - generated/stellar/claimable_balance_entry_extension_v1.rb
229
+ - generated/stellar/claimable_balance_entry_extension_v1/ext.rb
230
+ - generated/stellar/claimable_balance_flags.rb
228
231
  - generated/stellar/claimable_balance_id.rb
229
232
  - generated/stellar/claimable_balance_id_type.rb
230
233
  - generated/stellar/claimant.rb
231
234
  - generated/stellar/claimant/v0.rb
232
235
  - generated/stellar/claimant_type.rb
236
+ - generated/stellar/clawback_claimable_balance_op.rb
237
+ - generated/stellar/clawback_claimable_balance_result.rb
238
+ - generated/stellar/clawback_claimable_balance_result_code.rb
239
+ - generated/stellar/clawback_op.rb
240
+ - generated/stellar/clawback_result.rb
241
+ - generated/stellar/clawback_result_code.rb
233
242
  - generated/stellar/create_account_op.rb
234
243
  - generated/stellar/create_account_result.rb
235
244
  - generated/stellar/create_account_result_code.rb
@@ -355,6 +364,9 @@ files:
355
364
  - generated/stellar/set_options_op.rb
356
365
  - generated/stellar/set_options_result.rb
357
366
  - generated/stellar/set_options_result_code.rb
367
+ - generated/stellar/set_trust_line_flags_op.rb
368
+ - generated/stellar/set_trust_line_flags_result.rb
369
+ - generated/stellar/set_trust_line_flags_result_code.rb
358
370
  - generated/stellar/signed_survey_request_message.rb
359
371
  - generated/stellar/signed_survey_response_message.rb
360
372
  - generated/stellar/signer.rb
@@ -406,7 +418,6 @@ files:
406
418
  - lib/stellar/account_flags.rb
407
419
  - lib/stellar/asset.rb
408
420
  - lib/stellar/base.rb
409
- - lib/stellar/base/version.rb
410
421
  - lib/stellar/claim_predicate.rb
411
422
  - lib/stellar/compat.rb
412
423
  - lib/stellar/concerns/transaction.rb
@@ -428,15 +439,19 @@ files:
428
439
  - lib/stellar/transaction_builder.rb
429
440
  - lib/stellar/transaction_envelope.rb
430
441
  - lib/stellar/transaction_v0.rb
442
+ - lib/stellar/trust_line_flags.rb
431
443
  - lib/stellar/util/strkey.rb
432
- homepage: https://github.com/astroband/ruby-stellar-sdk/tree/master/base
444
+ - lib/stellar/version.rb
445
+ homepage: https://github.com/astroband/ruby-stellar-sdk
433
446
  licenses:
434
447
  - Apache-2.0
435
448
  metadata:
449
+ bug_tracker_uri: https://github.com/astroband/ruby-stellar-sdk/issues
450
+ changelog_uri: https://github.com/astroband/ruby-stellar-sdk/blob/v0.27.0/base/CHANGELOG.md
451
+ documentation_uri: https://rubydoc.info/gems/stellar-base/0.27.0/
436
452
  github_repo: ssh://github.com/astroband/ruby-stellar-sdk
437
- documentation_uri: https://rubydoc.info/gems/stellar-base/0.26.0/
438
- changelog_uri: https://github.com/astroband/ruby-stellar-sdk/blob/v0.26.0/base/CHANGELOG.md
439
- source_code_uri: https://github.com/astroband/ruby-stellar-sdk/tree/v0.26.0/base
453
+ homepage_uri: https://github.com/astroband/ruby-stellar-sdk/tree/main/base
454
+ source_code_uri: https://github.com/astroband/ruby-stellar-sdk/tree/v0.27.0/base
440
455
  post_install_message:
441
456
  rdoc_options: []
442
457
  require_paths:
@@ -453,7 +468,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
453
468
  - !ruby/object:Gem::Version
454
469
  version: '0'
455
470
  requirements: []
456
- rubygems_version: 3.2.0.rc.2
471
+ rubygems_version: 3.2.16
457
472
  signing_key:
458
473
  specification_version: 4
459
474
  summary: 'Stellar client library: XDR'