stellar-base 0.29.0 → 0.30.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/CHANGELOG.md +9 -0
- data/generated/stellar/allow_trust_result_code.rb +4 -1
- data/generated/stellar/alpha_num12.rb +20 -0
- data/generated/stellar/alpha_num4.rb +20 -0
- data/generated/stellar/asset.rb +2 -15
- data/generated/stellar/asset_type.rb +3 -1
- data/generated/stellar/change_trust_asset.rb +39 -0
- data/generated/stellar/change_trust_op.rb +2 -2
- data/generated/stellar/change_trust_result_code.rb +13 -7
- data/generated/stellar/claim_atom.rb +31 -0
- data/generated/stellar/claim_atom_type.rb +24 -0
- data/generated/stellar/claim_liquidity_atom.rb +30 -0
- data/generated/stellar/claim_offer_atom_v0.rb +33 -0
- data/generated/stellar/envelope_type.rb +10 -8
- data/generated/stellar/{operation_id/id.rb → hash_id_preimage/operation_id.rb} +2 -2
- data/generated/stellar/{operation_id.rb → hash_id_preimage/revoke_id.rb} +12 -16
- data/generated/stellar/hash_id_preimage.rb +44 -0
- data/generated/stellar/ledger_entry/data.rb +4 -0
- data/generated/stellar/ledger_entry.rb +2 -0
- data/generated/stellar/ledger_entry_type.rb +3 -1
- data/generated/stellar/ledger_header/ext.rb +4 -0
- data/generated/stellar/ledger_header.rb +2 -0
- data/generated/stellar/{asset/alpha_num12.rb → ledger_header_extension_v1/ext.rb} +9 -7
- data/generated/stellar/ledger_header_extension_v1.rb +30 -0
- data/generated/stellar/ledger_header_flags.rb +24 -0
- data/generated/stellar/{asset/alpha_num4.rb → ledger_key/liquidity_pool.rb} +4 -6
- data/generated/stellar/ledger_key/trust_line.rb +2 -2
- data/generated/stellar/ledger_key.rb +10 -1
- data/generated/stellar/ledger_upgrade.rb +4 -0
- data/generated/stellar/ledger_upgrade_type.rb +3 -1
- data/generated/stellar/liquidity_pool_constant_product_parameters.rb +22 -0
- data/generated/stellar/liquidity_pool_deposit_op.rb +26 -0
- data/generated/stellar/liquidity_pool_deposit_result.rb +26 -0
- data/generated/stellar/liquidity_pool_deposit_result_code.rb +41 -0
- data/generated/stellar/liquidity_pool_entry/body/constant_product.rb +31 -0
- data/generated/stellar/liquidity_pool_entry/body.rb +37 -0
- data/generated/stellar/liquidity_pool_entry.rb +38 -0
- data/generated/stellar/liquidity_pool_parameters.rb +23 -0
- data/generated/stellar/liquidity_pool_type.rb +20 -0
- data/generated/stellar/liquidity_pool_withdraw_op.rb +24 -0
- data/generated/stellar/liquidity_pool_withdraw_result.rb +26 -0
- data/generated/stellar/liquidity_pool_withdraw_result_code.rb +36 -0
- data/generated/stellar/manage_offer_success_result.rb +2 -2
- data/generated/stellar/operation/body.rb +8 -0
- data/generated/stellar/operation.rb +4 -0
- data/generated/stellar/operation_result/tr.rb +8 -0
- data/generated/stellar/operation_result.rb +4 -0
- data/generated/stellar/operation_type.rb +5 -1
- data/generated/stellar/path_payment_strict_receive_result/success.rb +2 -2
- data/generated/stellar/path_payment_strict_receive_result.rb +1 -1
- data/generated/stellar/path_payment_strict_send_result/success.rb +2 -2
- data/generated/stellar/path_payment_strict_send_result.rb +1 -1
- data/generated/stellar/revoke_sponsorship_result_code.rb +3 -1
- data/generated/stellar/scp_quorum_set.rb +2 -2
- data/generated/stellar/set_trust_line_flags_result_code.rb +4 -1
- data/generated/stellar/trust_line_asset.rb +39 -0
- data/generated/stellar/trust_line_entry/ext/v1/ext.rb +4 -0
- data/generated/stellar/trust_line_entry/ext/v1.rb +2 -0
- data/generated/stellar/trust_line_entry/ext.rb +2 -0
- data/generated/stellar/trust_line_entry.rb +7 -5
- data/generated/stellar/trust_line_entry_extension_v2/ext.rb +24 -0
- data/generated/stellar/trust_line_entry_extension_v2.rb +30 -0
- data/generated/stellar-base-generated.rb +25 -1
- data/lib/stellar/account_flags.rb +1 -1
- data/lib/stellar/amount.rb +36 -0
- data/lib/stellar/asset.rb +8 -0
- data/lib/stellar/dsl.rb +3 -0
- data/lib/stellar/ledger_key.rb +5 -3
- data/lib/stellar/liquidity_pool/base_pool.rb +47 -0
- data/lib/stellar/liquidity_pool/constant_product_pool.rb +15 -0
- data/lib/stellar/liquidity_pool.rb +12 -0
- data/lib/stellar/operation.rb +346 -444
- data/lib/stellar/price.rb +13 -7
- data/lib/stellar/transaction_builder.rb +8 -5
- data/lib/stellar/version.rb +1 -1
- data/lib/stellar-base.rb +2 -0
- metadata +39 -10
@@ -14,7 +14,8 @@ require 'xdr'
|
|
14
14
|
# REVOKE_SPONSORSHIP_DOES_NOT_EXIST = -1,
|
15
15
|
# REVOKE_SPONSORSHIP_NOT_SPONSOR = -2,
|
16
16
|
# REVOKE_SPONSORSHIP_LOW_RESERVE = -3,
|
17
|
-
# REVOKE_SPONSORSHIP_ONLY_TRANSFERABLE = -4
|
17
|
+
# REVOKE_SPONSORSHIP_ONLY_TRANSFERABLE = -4,
|
18
|
+
# REVOKE_SPONSORSHIP_MALFORMED = -5
|
18
19
|
# };
|
19
20
|
#
|
20
21
|
# ===========================================================================
|
@@ -25,6 +26,7 @@ module Stellar
|
|
25
26
|
member :revoke_sponsorship_not_sponsor, -2
|
26
27
|
member :revoke_sponsorship_low_reserve, -3
|
27
28
|
member :revoke_sponsorship_only_transferable, -4
|
29
|
+
member :revoke_sponsorship_malformed, -5
|
28
30
|
|
29
31
|
seal
|
30
32
|
end
|
@@ -8,7 +8,7 @@ require 'xdr'
|
|
8
8
|
# struct SCPQuorumSet
|
9
9
|
# {
|
10
10
|
# uint32 threshold;
|
11
|
-
#
|
11
|
+
# NodeID validators<>;
|
12
12
|
# SCPQuorumSet innerSets<>;
|
13
13
|
# };
|
14
14
|
#
|
@@ -16,7 +16,7 @@ require 'xdr'
|
|
16
16
|
module Stellar
|
17
17
|
class SCPQuorumSet < XDR::Struct
|
18
18
|
attribute :threshold, Uint32
|
19
|
-
attribute :validators, XDR::VarArray[
|
19
|
+
attribute :validators, XDR::VarArray[NodeID]
|
20
20
|
attribute :inner_sets, XDR::VarArray[SCPQuorumSet]
|
21
21
|
end
|
22
22
|
end
|
@@ -14,7 +14,9 @@ require 'xdr'
|
|
14
14
|
# SET_TRUST_LINE_FLAGS_MALFORMED = -1,
|
15
15
|
# SET_TRUST_LINE_FLAGS_NO_TRUST_LINE = -2,
|
16
16
|
# SET_TRUST_LINE_FLAGS_CANT_REVOKE = -3,
|
17
|
-
# SET_TRUST_LINE_FLAGS_INVALID_STATE = -4
|
17
|
+
# SET_TRUST_LINE_FLAGS_INVALID_STATE = -4,
|
18
|
+
# SET_TRUST_LINE_FLAGS_LOW_RESERVE = -5 // claimable balances can't be created
|
19
|
+
# // on revoke due to low reserves
|
18
20
|
# };
|
19
21
|
#
|
20
22
|
# ===========================================================================
|
@@ -25,6 +27,7 @@ module Stellar
|
|
25
27
|
member :set_trust_line_flags_no_trust_line, -2
|
26
28
|
member :set_trust_line_flags_cant_revoke, -3
|
27
29
|
member :set_trust_line_flags_invalid_state, -4
|
30
|
+
member :set_trust_line_flags_low_reserve, -5
|
28
31
|
|
29
32
|
seal
|
30
33
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# This code was automatically generated using xdrgen
|
2
|
+
# DO NOT EDIT or your changes may be overwritten
|
3
|
+
|
4
|
+
require 'xdr'
|
5
|
+
|
6
|
+
# === xdr source ============================================================
|
7
|
+
#
|
8
|
+
# union TrustLineAsset switch (AssetType type)
|
9
|
+
# {
|
10
|
+
# case ASSET_TYPE_NATIVE: // Not credit
|
11
|
+
# void;
|
12
|
+
#
|
13
|
+
# case ASSET_TYPE_CREDIT_ALPHANUM4:
|
14
|
+
# AlphaNum4 alphaNum4;
|
15
|
+
#
|
16
|
+
# case ASSET_TYPE_CREDIT_ALPHANUM12:
|
17
|
+
# AlphaNum12 alphaNum12;
|
18
|
+
#
|
19
|
+
# case ASSET_TYPE_POOL_SHARE:
|
20
|
+
# PoolID liquidityPoolID;
|
21
|
+
#
|
22
|
+
# // add other asset types here in the future
|
23
|
+
# };
|
24
|
+
#
|
25
|
+
# ===========================================================================
|
26
|
+
module Stellar
|
27
|
+
class TrustLineAsset < XDR::Union
|
28
|
+
switch_on AssetType, :type
|
29
|
+
|
30
|
+
switch :asset_type_native
|
31
|
+
switch :asset_type_credit_alphanum4, :alpha_num4
|
32
|
+
switch :asset_type_credit_alphanum12, :alpha_num12
|
33
|
+
switch :asset_type_pool_share, :liquidity_pool_id
|
34
|
+
|
35
|
+
attribute :alpha_num4, AlphaNum4
|
36
|
+
attribute :alpha_num12, AlphaNum12
|
37
|
+
attribute :liquidity_pool_id, PoolID
|
38
|
+
end
|
39
|
+
end
|
@@ -9,6 +9,8 @@ require 'xdr'
|
|
9
9
|
# {
|
10
10
|
# case 0:
|
11
11
|
# void;
|
12
|
+
# case 2:
|
13
|
+
# TrustLineEntryExtensionV2 v2;
|
12
14
|
# }
|
13
15
|
#
|
14
16
|
# ===========================================================================
|
@@ -20,7 +22,9 @@ module Stellar
|
|
20
22
|
switch_on XDR::Int, :v
|
21
23
|
|
22
24
|
switch 0
|
25
|
+
switch 2, :v2
|
23
26
|
|
27
|
+
attribute :v2, TrustLineEntryExtensionV2
|
24
28
|
end
|
25
29
|
end
|
26
30
|
end
|
@@ -7,10 +7,10 @@ require 'xdr'
|
|
7
7
|
#
|
8
8
|
# struct TrustLineEntry
|
9
9
|
# {
|
10
|
-
# AccountID accountID;
|
11
|
-
#
|
12
|
-
# int64 balance;
|
13
|
-
#
|
10
|
+
# AccountID accountID; // account this trustline belongs to
|
11
|
+
# TrustLineAsset 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
|
@@ -29,6 +29,8 @@ require 'xdr'
|
|
29
29
|
# {
|
30
30
|
# case 0:
|
31
31
|
# void;
|
32
|
+
# case 2:
|
33
|
+
# TrustLineEntryExtensionV2 v2;
|
32
34
|
# }
|
33
35
|
# ext;
|
34
36
|
# } v1;
|
@@ -44,7 +46,7 @@ module Stellar
|
|
44
46
|
autoload :Ext
|
45
47
|
|
46
48
|
attribute :account_id, AccountID
|
47
|
-
attribute :asset,
|
49
|
+
attribute :asset, TrustLineAsset
|
48
50
|
attribute :balance, Int64
|
49
51
|
attribute :limit, Int64
|
50
52
|
attribute :flags, Uint32
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# This code was automatically generated using xdrgen
|
2
|
+
# DO NOT EDIT or your changes may be overwritten
|
3
|
+
|
4
|
+
require 'xdr'
|
5
|
+
|
6
|
+
# === xdr source ============================================================
|
7
|
+
#
|
8
|
+
# union switch (int v)
|
9
|
+
# {
|
10
|
+
# case 0:
|
11
|
+
# void;
|
12
|
+
# }
|
13
|
+
#
|
14
|
+
# ===========================================================================
|
15
|
+
module Stellar
|
16
|
+
class TrustLineEntryExtensionV2
|
17
|
+
class Ext < XDR::Union
|
18
|
+
switch_on XDR::Int, :v
|
19
|
+
|
20
|
+
switch 0
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,30 @@
|
|
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 TrustLineEntryExtensionV2
|
9
|
+
# {
|
10
|
+
# int32 liquidityPoolUseCount;
|
11
|
+
#
|
12
|
+
# union switch (int v)
|
13
|
+
# {
|
14
|
+
# case 0:
|
15
|
+
# void;
|
16
|
+
# }
|
17
|
+
# ext;
|
18
|
+
# };
|
19
|
+
#
|
20
|
+
# ===========================================================================
|
21
|
+
module Stellar
|
22
|
+
class TrustLineEntryExtensionV2 < XDR::Struct
|
23
|
+
include XDR::Namespace
|
24
|
+
|
25
|
+
autoload :Ext
|
26
|
+
|
27
|
+
attribute :liquidity_pool_use_count, Int32
|
28
|
+
attribute :ext, Ext
|
29
|
+
end
|
30
|
+
end
|
@@ -35,10 +35,13 @@ module Stellar
|
|
35
35
|
SequenceNumber = Int64
|
36
36
|
TimePoint = Uint64
|
37
37
|
DataValue = XDR::VarOpaque[64]
|
38
|
+
PoolID = Hash
|
38
39
|
AssetCode4 = XDR::Opaque[4]
|
39
40
|
AssetCode12 = XDR::Opaque[12]
|
40
41
|
autoload :AssetType
|
41
42
|
autoload :AssetCode
|
43
|
+
autoload :AlphaNum4
|
44
|
+
autoload :AlphaNum12
|
42
45
|
autoload :Asset
|
43
46
|
autoload :Price
|
44
47
|
autoload :Liabilities
|
@@ -57,6 +60,9 @@ module Stellar
|
|
57
60
|
MASK_TRUSTLINE_FLAGS = 1
|
58
61
|
MASK_TRUSTLINE_FLAGS_V13 = 3
|
59
62
|
MASK_TRUSTLINE_FLAGS_V17 = 7
|
63
|
+
autoload :LiquidityPoolType
|
64
|
+
autoload :TrustLineAsset
|
65
|
+
autoload :TrustLineEntryExtensionV2
|
60
66
|
autoload :TrustLineEntry
|
61
67
|
autoload :OfferEntryFlags
|
62
68
|
MASK_OFFERENTRY_FLAGS = 1
|
@@ -72,6 +78,8 @@ module Stellar
|
|
72
78
|
MASK_CLAIMABLE_BALANCE_FLAGS = 0x1
|
73
79
|
autoload :ClaimableBalanceEntryExtensionV1
|
74
80
|
autoload :ClaimableBalanceEntry
|
81
|
+
autoload :LiquidityPoolConstantProductParameters
|
82
|
+
autoload :LiquidityPoolEntry
|
75
83
|
autoload :LedgerEntryExtensionV1
|
76
84
|
autoload :LedgerEntry
|
77
85
|
autoload :LedgerKey
|
@@ -80,6 +88,7 @@ end
|
|
80
88
|
module Stellar
|
81
89
|
include XDR::Namespace
|
82
90
|
|
91
|
+
autoload :LiquidityPoolParameters
|
83
92
|
autoload :MuxedAccount
|
84
93
|
autoload :DecoratedSignature
|
85
94
|
autoload :OperationType
|
@@ -91,6 +100,7 @@ module Stellar
|
|
91
100
|
autoload :ManageBuyOfferOp
|
92
101
|
autoload :CreatePassiveSellOfferOp
|
93
102
|
autoload :SetOptionsOp
|
103
|
+
autoload :ChangeTrustAsset
|
94
104
|
autoload :ChangeTrustOp
|
95
105
|
autoload :AllowTrustOp
|
96
106
|
autoload :ManageDataOp
|
@@ -103,8 +113,11 @@ module Stellar
|
|
103
113
|
autoload :ClawbackOp
|
104
114
|
autoload :ClawbackClaimableBalanceOp
|
105
115
|
autoload :SetTrustLineFlagsOp
|
116
|
+
LIQUIDITY_POOL_FEE_V18 = 30
|
117
|
+
autoload :LiquidityPoolDepositOp
|
118
|
+
autoload :LiquidityPoolWithdrawOp
|
106
119
|
autoload :Operation
|
107
|
-
autoload :
|
120
|
+
autoload :HashIDPreimage
|
108
121
|
autoload :MemoType
|
109
122
|
autoload :Memo
|
110
123
|
autoload :TimeBounds
|
@@ -117,7 +130,11 @@ module Stellar
|
|
117
130
|
autoload :FeeBumpTransactionEnvelope
|
118
131
|
autoload :TransactionEnvelope
|
119
132
|
autoload :TransactionSignaturePayload
|
133
|
+
autoload :ClaimAtomType
|
134
|
+
autoload :ClaimOfferAtomV0
|
120
135
|
autoload :ClaimOfferAtom
|
136
|
+
autoload :ClaimLiquidityAtom
|
137
|
+
autoload :ClaimAtom
|
121
138
|
autoload :CreateAccountResultCode
|
122
139
|
autoload :CreateAccountResult
|
123
140
|
autoload :PaymentResultCode
|
@@ -164,6 +181,10 @@ module Stellar
|
|
164
181
|
autoload :ClawbackClaimableBalanceResult
|
165
182
|
autoload :SetTrustLineFlagsResultCode
|
166
183
|
autoload :SetTrustLineFlagsResult
|
184
|
+
autoload :LiquidityPoolDepositResultCode
|
185
|
+
autoload :LiquidityPoolDepositResult
|
186
|
+
autoload :LiquidityPoolWithdrawResultCode
|
187
|
+
autoload :LiquidityPoolWithdrawResult
|
167
188
|
autoload :OperationResultCode
|
168
189
|
autoload :OperationResult
|
169
190
|
autoload :TransactionResultCode
|
@@ -178,6 +199,9 @@ module Stellar
|
|
178
199
|
autoload :StellarValueType
|
179
200
|
autoload :LedgerCloseValueSignature
|
180
201
|
autoload :StellarValue
|
202
|
+
MASK_LEDGER_HEADER_FLAGS = 0x7
|
203
|
+
autoload :LedgerHeaderFlags
|
204
|
+
autoload :LedgerHeaderExtensionV1
|
181
205
|
autoload :LedgerHeader
|
182
206
|
autoload :LedgerUpgradeType
|
183
207
|
autoload :LedgerUpgrade
|
@@ -4,7 +4,7 @@ module Stellar
|
|
4
4
|
# Converts an array of Stellar::AccountFlags members into
|
5
5
|
# an Integer suitable for use in a SetOptionsOp.
|
6
6
|
#
|
7
|
-
# @param flags [Array<Stellar::AccountFlags
|
7
|
+
# @param flags [Array<Stellar::AccountFlags>, nil] the flags to combine
|
8
8
|
#
|
9
9
|
# @return [Fixnum] the combined result
|
10
10
|
def self.make_mask(flags = nil)
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Stellar
|
2
|
+
class Amount
|
3
|
+
attr_reader :amount
|
4
|
+
attr_reader :asset
|
5
|
+
|
6
|
+
# @param [Fixnum] amount
|
7
|
+
# @param [Stellar::Asset] asset
|
8
|
+
def initialize(amount, asset = Stellar::Asset.native)
|
9
|
+
# TODO: how are we going to handle decimal considerations?
|
10
|
+
|
11
|
+
@amount = amount
|
12
|
+
@asset = asset
|
13
|
+
end
|
14
|
+
|
15
|
+
# @return [Array(Symbol, Fixnum)] in case of a native asset
|
16
|
+
# @return [Array(Symbol, String, Stellar::KeyPair, Fixnum)] in case of alphanum asset
|
17
|
+
def to_payment
|
18
|
+
case asset.type
|
19
|
+
when AssetType.asset_type_native
|
20
|
+
[:native, amount]
|
21
|
+
when AssetType.asset_type_credit_alphanum4
|
22
|
+
keypair = KeyPair.from_public_key(asset.issuer.value)
|
23
|
+
[:alphanum4, asset.code, keypair, amount]
|
24
|
+
when AssetType.asset_type_credit_alphanum12
|
25
|
+
keypair = KeyPair.from_public_key(asset.issuer.value)
|
26
|
+
[:alphanum12, asset.code, keypair, amount]
|
27
|
+
else
|
28
|
+
raise "Unknown asset type: #{asset.type}"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def inspect
|
33
|
+
"#<Stellar::Amount #{asset}(#{amount})>"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/stellar/asset.rb
CHANGED
@@ -30,6 +30,14 @@ module Stellar
|
|
30
30
|
new(:asset_type_credit_alphanum12, an)
|
31
31
|
end
|
32
32
|
|
33
|
+
def to_change_trust_asset
|
34
|
+
ChangeTrustAsset.new(switch, value)
|
35
|
+
end
|
36
|
+
|
37
|
+
def to_trust_line_asset
|
38
|
+
TrustLineAsset.new(switch, value)
|
39
|
+
end
|
40
|
+
|
33
41
|
def to_s
|
34
42
|
case switch
|
35
43
|
when AssetType.asset_type_native
|
data/lib/stellar/dsl.rb
CHANGED
@@ -53,6 +53,9 @@ module Stellar
|
|
53
53
|
case subject
|
54
54
|
when Asset
|
55
55
|
subject
|
56
|
+
when Array
|
57
|
+
raise TypeError, "Invalid asset type #{subject[0]}" unless [:native, :alphanum4, :alphanum12].include?(subject[0])
|
58
|
+
Asset.send(*subject)
|
56
59
|
when nil, /^(XLM[-:])?native$/
|
57
60
|
Asset.native
|
58
61
|
when /^([0-9A-Z]{1,4})[-:](G[A-Z0-9]{55})$/
|
data/lib/stellar/ledger_key.rb
CHANGED
@@ -15,14 +15,16 @@ module Stellar
|
|
15
15
|
case field
|
16
16
|
when nil
|
17
17
|
account(account_id: KeyPair(account_id).account_id)
|
18
|
-
when :balance_id
|
19
|
-
claimable_balance(balance_id: ClaimableBalanceID.v0(Stellar::Convert.from_hex(value.to_s)))
|
20
18
|
when :offer_id
|
21
19
|
offer(seller_id: account_id, offer_id: Integer(value))
|
22
20
|
when :data_name
|
23
21
|
data(account_id: account_id, data_name: value.to_s)
|
24
22
|
when :asset
|
25
|
-
trust_line(account_id: account_id, asset: Asset(value))
|
23
|
+
trust_line(account_id: account_id, asset: Asset(value).to_trust_line_asset)
|
24
|
+
when :balance_id
|
25
|
+
claimable_balance(balance_id: ClaimableBalanceID.v0(Stellar::Convert.from_hex(value.to_s)))
|
26
|
+
when :liquidity_pool_id
|
27
|
+
liquidity_pool(liquidity_pool_id: PoolID.from_xdr(value.to_s, :hex))
|
26
28
|
else
|
27
29
|
raise ArgumentError, "unknown option #{field} (not in :asset, :offer_id, :data_name, :balance_id)"
|
28
30
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Stellar
|
2
|
+
module LiquidityPool
|
3
|
+
class BasePool
|
4
|
+
attr_reader :asset_a, :asset_b, :fee
|
5
|
+
|
6
|
+
# @param asset_a [Asset]
|
7
|
+
# @param asset_b [Asset]
|
8
|
+
def initialize(asset_a:, asset_b:)
|
9
|
+
@asset_a = asset_a
|
10
|
+
@asset_b = asset_b
|
11
|
+
@fee = LIQUIDITY_POOL_FEE_V18
|
12
|
+
end
|
13
|
+
|
14
|
+
def id
|
15
|
+
PoolID.to_xdr(to_pool_id, :hex)
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_s
|
19
|
+
"liquidity_pool:#{id}"
|
20
|
+
end
|
21
|
+
|
22
|
+
def inspect
|
23
|
+
"#<#{self.class.name} #{self}>"
|
24
|
+
end
|
25
|
+
|
26
|
+
def to_pool_id
|
27
|
+
Digest::SHA256.digest(pool_params.to_xdr)
|
28
|
+
end
|
29
|
+
|
30
|
+
def to_change_trust_asset
|
31
|
+
ChangeTrustAsset.liquidity_pool(pool_params)
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_trust_line_asset
|
35
|
+
TrustLineAsset.liquidity_pool_id(to_pool_id)
|
36
|
+
end
|
37
|
+
|
38
|
+
def pool_type
|
39
|
+
raise NotImplementedError
|
40
|
+
end
|
41
|
+
|
42
|
+
def pool_params
|
43
|
+
raise NotImplementedError
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require_relative "base_pool"
|
2
|
+
|
3
|
+
module Stellar
|
4
|
+
module LiquidityPool
|
5
|
+
class ConstantProductPool < BasePool
|
6
|
+
def pool_type
|
7
|
+
LiquidityPoolType.constant_product
|
8
|
+
end
|
9
|
+
|
10
|
+
def pool_params
|
11
|
+
LiquidityPoolParameters.constant_product(asset_a: asset_a, asset_b: asset_b, fee: fee)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Stellar
|
2
|
+
module LiquidityPool
|
3
|
+
require_relative "liquidity_pool/base_pool"
|
4
|
+
require_relative "liquidity_pool/constant_product_pool"
|
5
|
+
|
6
|
+
module_function
|
7
|
+
|
8
|
+
def constant_product(asset_a:, asset_b:)
|
9
|
+
ConstantProductPool.new(asset_a: DSL::Asset(asset_a), asset_b: DSL::Asset(asset_b))
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|