stellar-base 0.0.20 → 0.1.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.
- checksums.yaml +4 -4
- data/README.md +8 -14
- data/examples/low_level_transaction_post.rb +1 -1
- data/examples/non_native_payment.rb +2 -2
- data/examples/offer.rb +5 -5
- data/generated/stellar-base-generated.rb +4 -5
- data/generated/stellar/account_flags.rb +1 -1
- data/generated/stellar/allow_trust_op.rb +11 -8
- data/generated/stellar/allow_trust_op/asset.rb +33 -0
- data/generated/stellar/allow_trust_result_code.rb +1 -1
- data/generated/stellar/asset.rb +47 -0
- data/generated/stellar/{currency/alpha_num.rb → asset/alpha_num12.rb} +5 -5
- data/generated/stellar/asset/alpha_num4.rb +22 -0
- data/generated/stellar/asset_type.rb +24 -0
- data/generated/stellar/change_trust_op.rb +2 -2
- data/generated/stellar/claim_offer_atom.rb +10 -10
- data/generated/stellar/create_passive_offer_op.rb +8 -8
- data/generated/stellar/crypto_key_type.rb +2 -2
- data/generated/stellar/ledger_key.rb +2 -2
- data/generated/stellar/ledger_key/offer.rb +3 -3
- data/generated/stellar/ledger_key/trust_line.rb +2 -2
- data/generated/stellar/manage_offer_op.rb +9 -9
- data/generated/stellar/offer_entry.rb +11 -11
- data/generated/stellar/{currency_type.rb → operation_meta.rb} +4 -8
- data/generated/stellar/path_payment_op.rb +10 -10
- data/generated/stellar/path_payment_result_code.rb +2 -2
- data/generated/stellar/payment_op.rb +2 -2
- data/generated/stellar/payment_result_code.rb +2 -2
- data/generated/stellar/public_key.rb +2 -2
- data/generated/stellar/simple_payment_result.rb +2 -2
- data/generated/stellar/transaction_meta.rb +17 -4
- data/generated/stellar/transaction_meta/v0.rb +22 -0
- data/generated/stellar/trust_line_entry.rb +4 -4
- data/lib/stellar-base.rb +2 -2
- data/lib/stellar/asset.rb +38 -0
- data/lib/stellar/base/version.rb +1 -1
- data/lib/stellar/convert.rb +1 -5
- data/lib/stellar/key_pair.rb +6 -6
- data/lib/stellar/operation.rb +24 -24
- data/lib/stellar/path_payment_result.rb +2 -2
- data/lib/stellar/util/strkey.rb +43 -0
- data/ruby-stellar-base.gemspec +2 -0
- data/spec/lib/stellar/key_pair_spec.rb +12 -12
- data/spec/lib/stellar/path_payment_result_spec.rb +7 -7
- data/spec/lib/stellar/transaction_spec.rb +1 -1
- data/spec/lib/stellar/util/strkey_spec.rb +46 -0
- data/spec/support/matchers/be_strkey.rb +9 -0
- data/tasks/xdr.rake +7 -8
- data/xdr/Stellar-SCP.x +1 -1
- data/xdr/Stellar-ledger-entries.x +26 -18
- data/xdr/Stellar-ledger.x +17 -5
- data/xdr/Stellar-overlay.x +1 -1
- data/xdr/Stellar-transaction.x +39 -36
- data/xdr/Stellar-types.x +2 -3
- metadata +43 -13
- data/generated/stellar/allow_trust_op/currency.rb +0 -28
- data/generated/stellar/currency.rb +0 -37
- data/lib/stellar/currency.rb +0 -39
- data/lib/stellar/util/base58.rb +0 -127
- data/spec/lib/stellar/util/base58_spec.rb +0 -74
- data/spec/support/matchers/be_base58_check.rb +0 -9
- data/xdr/StellarXDR.x +0 -11
@@ -17,13 +17,13 @@ require 'xdr'
|
|
17
17
|
# struct
|
18
18
|
# {
|
19
19
|
# AccountID accountID;
|
20
|
-
#
|
20
|
+
# Asset asset;
|
21
21
|
# } trustLine;
|
22
22
|
#
|
23
23
|
# case OFFER:
|
24
24
|
# struct
|
25
25
|
# {
|
26
|
-
# AccountID
|
26
|
+
# AccountID sellerID;
|
27
27
|
# uint64 offerID;
|
28
28
|
# } offer;
|
29
29
|
# };
|
@@ -7,7 +7,7 @@ require 'xdr'
|
|
7
7
|
#
|
8
8
|
# struct
|
9
9
|
# {
|
10
|
-
# AccountID
|
10
|
+
# AccountID sellerID;
|
11
11
|
# uint64 offerID;
|
12
12
|
# }
|
13
13
|
#
|
@@ -15,8 +15,8 @@ require 'xdr'
|
|
15
15
|
module Stellar
|
16
16
|
class LedgerKey
|
17
17
|
class Offer < XDR::Struct
|
18
|
-
attribute :
|
19
|
-
attribute :offer_id,
|
18
|
+
attribute :seller_id, AccountID
|
19
|
+
attribute :offer_id, Uint64
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -8,7 +8,7 @@ require 'xdr'
|
|
8
8
|
# struct
|
9
9
|
# {
|
10
10
|
# AccountID accountID;
|
11
|
-
#
|
11
|
+
# Asset asset;
|
12
12
|
# }
|
13
13
|
#
|
14
14
|
# ===========================================================================
|
@@ -16,7 +16,7 @@ module Stellar
|
|
16
16
|
class LedgerKey
|
17
17
|
class TrustLine < XDR::Struct
|
18
18
|
attribute :account_id, AccountID
|
19
|
-
attribute :
|
19
|
+
attribute :asset, Asset
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -7,10 +7,10 @@ require 'xdr'
|
|
7
7
|
#
|
8
8
|
# struct ManageOfferOp
|
9
9
|
# {
|
10
|
-
#
|
11
|
-
#
|
12
|
-
# int64 amount; // amount
|
13
|
-
# Price price; //
|
10
|
+
# Asset selling;
|
11
|
+
# Asset buying;
|
12
|
+
# int64 amount; // amount being sold. if set to 0, delete the offer
|
13
|
+
# Price price; // price of thing being sold in terms of what you are buying
|
14
14
|
#
|
15
15
|
# // 0=create a new offer, otherwise edit an existing offer
|
16
16
|
# uint64 offerID;
|
@@ -19,10 +19,10 @@ require 'xdr'
|
|
19
19
|
# ===========================================================================
|
20
20
|
module Stellar
|
21
21
|
class ManageOfferOp < XDR::Struct
|
22
|
-
attribute :
|
23
|
-
attribute :
|
24
|
-
attribute :amount,
|
25
|
-
attribute :price,
|
26
|
-
attribute :offer_id,
|
22
|
+
attribute :selling, Asset
|
23
|
+
attribute :buying, Asset
|
24
|
+
attribute :amount, Int64
|
25
|
+
attribute :price, Price
|
26
|
+
attribute :offer_id, Uint64
|
27
27
|
end
|
28
28
|
end
|
@@ -7,10 +7,10 @@ require 'xdr'
|
|
7
7
|
#
|
8
8
|
# struct OfferEntry
|
9
9
|
# {
|
10
|
-
# AccountID
|
10
|
+
# AccountID sellerID;
|
11
11
|
# uint64 offerID;
|
12
|
-
#
|
13
|
-
#
|
12
|
+
# Asset selling; // A
|
13
|
+
# Asset buying; // B
|
14
14
|
# int64 amount; // amount of A
|
15
15
|
#
|
16
16
|
# /* price for this offer:
|
@@ -37,13 +37,13 @@ module Stellar
|
|
37
37
|
|
38
38
|
autoload :Ext
|
39
39
|
|
40
|
-
attribute :
|
41
|
-
attribute :offer_id,
|
42
|
-
attribute :
|
43
|
-
attribute :
|
44
|
-
attribute :amount,
|
45
|
-
attribute :price,
|
46
|
-
attribute :flags,
|
47
|
-
attribute :ext,
|
40
|
+
attribute :seller_id, AccountID
|
41
|
+
attribute :offer_id, Uint64
|
42
|
+
attribute :selling, Asset
|
43
|
+
attribute :buying, Asset
|
44
|
+
attribute :amount, Int64
|
45
|
+
attribute :price, Price
|
46
|
+
attribute :flags, Uint32
|
47
|
+
attribute :ext, Ext
|
48
48
|
end
|
49
49
|
end
|
@@ -5,18 +5,14 @@ require 'xdr'
|
|
5
5
|
|
6
6
|
# === xdr source ============================================================
|
7
7
|
#
|
8
|
-
#
|
8
|
+
# struct OperationMeta
|
9
9
|
# {
|
10
|
-
#
|
11
|
-
# CURRENCY_TYPE_ALPHANUM = 1
|
10
|
+
# LedgerEntryChanges changes;
|
12
11
|
# };
|
13
12
|
#
|
14
13
|
# ===========================================================================
|
15
14
|
module Stellar
|
16
|
-
class
|
17
|
-
|
18
|
-
member :currency_type_alphanum, 1
|
19
|
-
|
20
|
-
seal
|
15
|
+
class OperationMeta < XDR::Struct
|
16
|
+
attribute :changes, LedgerEntryChanges
|
21
17
|
end
|
22
18
|
end
|
@@ -7,26 +7,26 @@ require 'xdr'
|
|
7
7
|
#
|
8
8
|
# struct PathPaymentOp
|
9
9
|
# {
|
10
|
-
#
|
11
|
-
# int64 sendMax; // the maximum amount of
|
10
|
+
# Asset sendAsset; // asset we pay with
|
11
|
+
# int64 sendMax; // the maximum amount of sendAsset to
|
12
12
|
# // send (excluding fees).
|
13
13
|
# // The operation will fail if can't be met
|
14
14
|
#
|
15
15
|
# AccountID destination; // recipient of the payment
|
16
|
-
#
|
16
|
+
# Asset destAsset; // what they end up with
|
17
17
|
# int64 destAmount; // amount they end up with
|
18
18
|
#
|
19
|
-
#
|
19
|
+
# Asset path<5>; // additional hops it must go through to get there
|
20
20
|
# };
|
21
21
|
#
|
22
22
|
# ===========================================================================
|
23
23
|
module Stellar
|
24
24
|
class PathPaymentOp < XDR::Struct
|
25
|
-
attribute :
|
26
|
-
attribute :send_max,
|
27
|
-
attribute :destination,
|
28
|
-
attribute :
|
29
|
-
attribute :dest_amount,
|
30
|
-
attribute :path,
|
25
|
+
attribute :send_asset, Asset
|
26
|
+
attribute :send_max, Int64
|
27
|
+
attribute :destination, AccountID
|
28
|
+
attribute :dest_asset, Asset
|
29
|
+
attribute :dest_amount, Int64
|
30
|
+
attribute :path, XDR::VarArray[Asset, 5]
|
31
31
|
end
|
32
32
|
end
|
@@ -16,8 +16,8 @@ require 'xdr'
|
|
16
16
|
# PATH_PAYMENT_SRC_NO_TRUST = -3, // no trust line on source account
|
17
17
|
# PATH_PAYMENT_SRC_NOT_AUTHORIZED = -4, // source not authorized to transfer
|
18
18
|
# PATH_PAYMENT_NO_DESTINATION = -5, // destination account does not exist
|
19
|
-
# PATH_PAYMENT_NO_TRUST = -6, // dest missing a trust line for
|
20
|
-
# PATH_PAYMENT_NOT_AUTHORIZED = -7, // dest not authorized to hold
|
19
|
+
# PATH_PAYMENT_NO_TRUST = -6, // dest missing a trust line for asset
|
20
|
+
# PATH_PAYMENT_NOT_AUTHORIZED = -7, // dest not authorized to hold asset
|
21
21
|
# PATH_PAYMENT_LINE_FULL = -8, // dest would go above their limit
|
22
22
|
# PATH_PAYMENT_TOO_FEW_OFFERS = -9, // not enough offers to satisfy path
|
23
23
|
# PATH_PAYMENT_OVER_SENDMAX = -10 // could not satisfy sendmax
|
@@ -8,7 +8,7 @@ require 'xdr'
|
|
8
8
|
# struct PaymentOp
|
9
9
|
# {
|
10
10
|
# AccountID destination; // recipient of the payment
|
11
|
-
#
|
11
|
+
# Asset asset; // what they end up with
|
12
12
|
# int64 amount; // amount they end up with
|
13
13
|
# };
|
14
14
|
#
|
@@ -16,7 +16,7 @@ require 'xdr'
|
|
16
16
|
module Stellar
|
17
17
|
class PaymentOp < XDR::Struct
|
18
18
|
attribute :destination, AccountID
|
19
|
-
attribute :
|
19
|
+
attribute :asset, Asset
|
20
20
|
attribute :amount, Int64
|
21
21
|
end
|
22
22
|
end
|
@@ -16,8 +16,8 @@ require 'xdr'
|
|
16
16
|
# PAYMENT_SRC_NO_TRUST = -3, // no trust line on source account
|
17
17
|
# PAYMENT_SRC_NOT_AUTHORIZED = -4, // source not authorized to transfer
|
18
18
|
# PAYMENT_NO_DESTINATION = -5, // destination account does not exist
|
19
|
-
# PAYMENT_NO_TRUST = -6, // destination missing a trust line for
|
20
|
-
# PAYMENT_NOT_AUTHORIZED = -7, // destination not authorized to hold
|
19
|
+
# PAYMENT_NO_TRUST = -6, // destination missing a trust line for asset
|
20
|
+
# PAYMENT_NOT_AUTHORIZED = -7, // destination not authorized to hold asset
|
21
21
|
# PAYMENT_LINE_FULL = -8 // destination would go above their limit
|
22
22
|
# };
|
23
23
|
#
|
@@ -7,7 +7,7 @@ require 'xdr'
|
|
7
7
|
#
|
8
8
|
# union PublicKey switch (CryptoKeyType type)
|
9
9
|
# {
|
10
|
-
# case
|
10
|
+
# case KEY_TYPE_ED25519:
|
11
11
|
# uint256 ed25519;
|
12
12
|
# };
|
13
13
|
#
|
@@ -16,7 +16,7 @@ module Stellar
|
|
16
16
|
class PublicKey < XDR::Union
|
17
17
|
switch_on CryptoKeyType, :type
|
18
18
|
|
19
|
-
switch :
|
19
|
+
switch :key_type_ed25519, :ed25519
|
20
20
|
|
21
21
|
attribute :ed25519, Uint256
|
22
22
|
end
|
@@ -8,7 +8,7 @@ require 'xdr'
|
|
8
8
|
# struct SimplePaymentResult
|
9
9
|
# {
|
10
10
|
# AccountID destination;
|
11
|
-
#
|
11
|
+
# Asset asset;
|
12
12
|
# int64 amount;
|
13
13
|
# };
|
14
14
|
#
|
@@ -16,7 +16,7 @@ require 'xdr'
|
|
16
16
|
module Stellar
|
17
17
|
class SimplePaymentResult < XDR::Struct
|
18
18
|
attribute :destination, AccountID
|
19
|
-
attribute :
|
19
|
+
attribute :asset, Asset
|
20
20
|
attribute :amount, Int64
|
21
21
|
end
|
22
22
|
end
|
@@ -5,14 +5,27 @@ require 'xdr'
|
|
5
5
|
|
6
6
|
# === xdr source ============================================================
|
7
7
|
#
|
8
|
-
#
|
8
|
+
# union TransactionMeta switch (int v)
|
9
9
|
# {
|
10
|
-
#
|
10
|
+
# case 0:
|
11
|
+
# struct
|
12
|
+
# {
|
13
|
+
# LedgerEntryChanges changes;
|
14
|
+
# OperationMeta operations<>;
|
15
|
+
# } v0;
|
11
16
|
# };
|
12
17
|
#
|
13
18
|
# ===========================================================================
|
14
19
|
module Stellar
|
15
|
-
class TransactionMeta < XDR::
|
16
|
-
|
20
|
+
class TransactionMeta < XDR::Union
|
21
|
+
include XDR::Namespace
|
22
|
+
|
23
|
+
autoload :V0
|
24
|
+
|
25
|
+
switch_on XDR::Int, :v
|
26
|
+
|
27
|
+
switch 0, :v0
|
28
|
+
|
29
|
+
attribute :v0, V0
|
17
30
|
end
|
18
31
|
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
|
9
|
+
# {
|
10
|
+
# LedgerEntryChanges changes;
|
11
|
+
# OperationMeta operations<>;
|
12
|
+
# }
|
13
|
+
#
|
14
|
+
# ===========================================================================
|
15
|
+
module Stellar
|
16
|
+
class TransactionMeta
|
17
|
+
class V0 < XDR::Struct
|
18
|
+
attribute :changes, LedgerEntryChanges
|
19
|
+
attribute :operations, XDR::VarArray[OperationMeta]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -8,9 +8,9 @@ require 'xdr'
|
|
8
8
|
# struct TrustLineEntry
|
9
9
|
# {
|
10
10
|
# AccountID accountID; // account this trustline belongs to
|
11
|
-
#
|
12
|
-
# int64 balance; // how much of this
|
13
|
-
# //
|
11
|
+
# Asset asset; // type of asset (with issuer)
|
12
|
+
# int64 balance; // how much of this asset the user has.
|
13
|
+
# // Asset defines the unit for this;
|
14
14
|
#
|
15
15
|
# int64 limit; // balance cannot be above this
|
16
16
|
# uint32 flags; // see TrustLineFlags
|
@@ -32,7 +32,7 @@ module Stellar
|
|
32
32
|
autoload :Ext
|
33
33
|
|
34
34
|
attribute :account_id, AccountID
|
35
|
-
attribute :
|
35
|
+
attribute :asset, Asset
|
36
36
|
attribute :balance, Int64
|
37
37
|
attribute :limit, Int64
|
38
38
|
attribute :flags, Uint32
|
data/lib/stellar-base.rb
CHANGED
@@ -18,7 +18,7 @@ Stellar::ONE = 1_0000000
|
|
18
18
|
# extensions onto the generated files must be loaded manually, below
|
19
19
|
|
20
20
|
require_relative './stellar/account_flags'
|
21
|
-
require_relative './stellar/
|
21
|
+
require_relative './stellar/asset'
|
22
22
|
require_relative './stellar/key_pair'
|
23
23
|
require_relative './stellar/operation'
|
24
24
|
require_relative './stellar/path_payment_result'
|
@@ -26,6 +26,6 @@ require_relative './stellar/price'
|
|
26
26
|
require_relative './stellar/thresholds'
|
27
27
|
require_relative './stellar/transaction'
|
28
28
|
require_relative './stellar/transaction_envelope'
|
29
|
-
require_relative './stellar/util/
|
29
|
+
require_relative './stellar/util/strkey'
|
30
30
|
require_relative './stellar/util/continued_fraction'
|
31
31
|
require_relative './stellar/convert'
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Stellar
|
2
|
+
class Asset
|
3
|
+
def self.native
|
4
|
+
new(:asset_type_native)
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.alphanum4(code, issuer)
|
8
|
+
raise ArgumentError, "Bad :issuer" unless issuer.is_a?(KeyPair)
|
9
|
+
code = normalize_code(code)
|
10
|
+
an = AlphaNum4.new({asset_code:code, issuer:issuer.account_id})
|
11
|
+
new(:asset_type_credit_alphanum4, an)
|
12
|
+
end
|
13
|
+
|
14
|
+
def to_s
|
15
|
+
if switch == AssetType.asset_type_native
|
16
|
+
"native"
|
17
|
+
else
|
18
|
+
issuer_address = Stellar::Util::StrKey.check_encode(:account_id,alpha_num.issuer)
|
19
|
+
"#{alpha_num.asset_code}/#{issuer_address}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def inspect
|
24
|
+
label = switch.to_s
|
25
|
+
"#<Stellar::Asset #{to_s}>"
|
26
|
+
end
|
27
|
+
|
28
|
+
def code
|
29
|
+
self.alpha_num!.asset_code
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.normalize_code(code)
|
33
|
+
raise ArgumentError, "Invalid asset code: #{code}, must be <= 4 bytes" if code.length > 4
|
34
|
+
|
35
|
+
code.ljust(4, "\x00")
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/stellar/base/version.rb
CHANGED
data/lib/stellar/convert.rb
CHANGED
@@ -21,12 +21,8 @@ module Stellar
|
|
21
21
|
Base64.strict_decode64(base64_string)
|
22
22
|
end
|
23
23
|
|
24
|
-
def base58
|
25
|
-
Stellar::Util::Base58.stellar
|
26
|
-
end
|
27
|
-
|
28
24
|
def pk_to_address(pk)
|
29
|
-
|
25
|
+
Stellar::util::StrKey.check_encode(:account_id, pk)
|
30
26
|
end
|
31
27
|
|
32
28
|
extend self
|
data/lib/stellar/key_pair.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Stellar
|
2
2
|
class KeyPair
|
3
3
|
def self.from_seed(seed)
|
4
|
-
seed_bytes = Util::
|
4
|
+
seed_bytes = Util::StrKey.check_decode(:seed, seed)
|
5
5
|
from_raw_seed seed_bytes
|
6
6
|
end
|
7
7
|
|
@@ -17,7 +17,7 @@ module Stellar
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.from_address(address)
|
20
|
-
pk_bytes = Util::
|
20
|
+
pk_bytes = Util::StrKey.check_decode(:account_id, address)
|
21
21
|
from_public_key(pk_bytes)
|
22
22
|
end
|
23
23
|
|
@@ -33,11 +33,11 @@ module Stellar
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def account_id
|
36
|
-
Stellar::AccountID.new :
|
36
|
+
Stellar::AccountID.new :key_type_ed25519, raw_public_key
|
37
37
|
end
|
38
38
|
|
39
39
|
def public_key
|
40
|
-
Stellar::PublicKey.new :
|
40
|
+
Stellar::PublicKey.new :key_type_ed25519, raw_public_key
|
41
41
|
end
|
42
42
|
|
43
43
|
def raw_public_key
|
@@ -63,14 +63,14 @@ module Stellar
|
|
63
63
|
|
64
64
|
def address
|
65
65
|
pk_bytes = raw_public_key
|
66
|
-
Util::
|
66
|
+
Util::StrKey.check_encode(:account_id, pk_bytes)
|
67
67
|
end
|
68
68
|
|
69
69
|
def seed
|
70
70
|
raise "no private key" if @secret_key.nil?
|
71
71
|
#TODO: improve the error class above
|
72
72
|
seed_bytes = raw_seed
|
73
|
-
encoder = Util::
|
73
|
+
encoder = Util::StrKey.check_encode(:seed, seed_bytes)
|
74
74
|
end
|
75
75
|
|
76
76
|
def sign?
|