stellar-base 0.1.4 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/README.md +8 -0
- data/generated/stellar/account_entry.rb +1 -1
- data/generated/stellar/account_merge_result.rb +3 -2
- data/generated/stellar/allow_trust_op.rb +1 -1
- data/generated/stellar/allow_trust_op/asset.rb +1 -1
- data/generated/stellar/claim_offer_atom.rb +12 -12
- data/generated/stellar/create_passive_offer_op.rb +4 -4
- data/generated/stellar/ledger_entry.rb +28 -15
- data/generated/stellar/ledger_entry/data.rb +33 -0
- data/generated/stellar/ledger_entry/ext.rb +24 -0
- data/generated/stellar/offer_entry.rb +2 -2
- data/generated/stellar/path_payment_op.rb +4 -4
- data/generated/stellar/path_payment_result_code.rb +8 -6
- data/generated/stellar/payment_op.rb +1 -1
- data/generated/stellar/payment_result_code.rb +1 -1
- data/generated/stellar/transaction_result_code.rb +1 -1
- data/generated/stellar/trust_line_entry.rb +1 -1
- data/lib/stellar/base/version.rb +1 -1
- data/lib/stellar/operation.rb +19 -2
- data/lib/stellar/path_payment_result.rb +3 -3
- data/spec/lib/stellar/asset_spec.rb +1 -1
- data/spec/lib/stellar/path_payment_result_spec.rb +6 -6
- data/spec/lib/stellar/price_spec.rb +13 -0
- data/spec/lib/stellar/thresholds_spec.rb +16 -16
- data/xdr/Stellar-ledger-entries.x +25 -12
- data/xdr/Stellar-transaction.x +25 -24
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1f8db8c0eef99ea37838371a5718d8ab6df3e0d
|
4
|
+
data.tar.gz: 3170f3c49015a46b0d8337769ea1672194d4f584
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4ce937a9b9ac9c8b14c1cd8b8557182e1d24c3e6c3d432801c8109fb5df8f3b0b7bb909352368d01cbd67d4d75b46a67495a5e93be274d95aafbbd3a5c76cff
|
7
|
+
data.tar.gz: 632997ffa01f3bf3d380aabb2b56553cbfba65cd74b92af20bd896f054c54f59ec070238d3aca36739a4937106b9fa1c6cc13e31b36e74f0fe5b386d40fc723d
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -24,6 +24,14 @@ Or install it yourself as:
|
|
24
24
|
|
25
25
|
Also requires libsodium. Installable via `brew install libsodium` on OS X.
|
26
26
|
|
27
|
+
## Supported Ruby Versions
|
28
|
+
|
29
|
+
Please see [travis.yml](.travis.yml) for what versions of ruby are currently tested by our continuous integration system. Any ruby in that list is officially supported.
|
30
|
+
|
31
|
+
### JRuby
|
32
|
+
|
33
|
+
It seems as though jruby is particularly slow when it comes to BigDecimal math; the source behind this slowness has not been investigated, but it is something to be aware of.
|
34
|
+
|
27
35
|
## Usage
|
28
36
|
|
29
37
|
[Examples are here](examples)
|
@@ -12,7 +12,7 @@ require 'xdr'
|
|
12
12
|
# SequenceNumber seqNum; // last sequence number used for this account
|
13
13
|
# uint32 numSubEntries; // number of sub-entries this account has
|
14
14
|
# // drives the reserve
|
15
|
-
# AccountID* inflationDest; // Account to vote during inflation
|
15
|
+
# AccountID* inflationDest; // Account to vote for during inflation
|
16
16
|
# uint32 flags; // see AccountFlags
|
17
17
|
#
|
18
18
|
# string32 homeDomain; // can be used for reverse federation and memo lookup
|
@@ -8,7 +8,7 @@ require 'xdr'
|
|
8
8
|
# union AccountMergeResult switch (AccountMergeResultCode code)
|
9
9
|
# {
|
10
10
|
# case ACCOUNT_MERGE_SUCCESS:
|
11
|
-
#
|
11
|
+
# int64 sourceAccountBalance; // how much got transfered from source account
|
12
12
|
# default:
|
13
13
|
# void;
|
14
14
|
# };
|
@@ -18,8 +18,9 @@ module Stellar
|
|
18
18
|
class AccountMergeResult < XDR::Union
|
19
19
|
switch_on AccountMergeResultCode, :code
|
20
20
|
|
21
|
-
switch :account_merge_success
|
21
|
+
switch :account_merge_success, :source_account_balance
|
22
22
|
switch :default
|
23
23
|
|
24
|
+
attribute :source_account_balance, Int64
|
24
25
|
end
|
25
26
|
end
|
@@ -8,26 +8,26 @@ require 'xdr'
|
|
8
8
|
# struct ClaimOfferAtom
|
9
9
|
# {
|
10
10
|
# // emited to identify the offer
|
11
|
-
# AccountID
|
11
|
+
# AccountID sellerID; // Account that owns the offer
|
12
12
|
# uint64 offerID;
|
13
13
|
#
|
14
14
|
# // amount and asset taken from the owner
|
15
|
-
# Asset
|
16
|
-
# int64
|
15
|
+
# Asset assetSold;
|
16
|
+
# int64 amountSold;
|
17
17
|
#
|
18
|
-
# // amount and
|
19
|
-
# Asset
|
20
|
-
# int64
|
18
|
+
# // amount and asset sent to the owner
|
19
|
+
# Asset assetBought;
|
20
|
+
# int64 amountBought;
|
21
21
|
# };
|
22
22
|
#
|
23
23
|
# ===========================================================================
|
24
24
|
module Stellar
|
25
25
|
class ClaimOfferAtom < XDR::Struct
|
26
|
-
attribute :
|
27
|
-
attribute :offer_id,
|
28
|
-
attribute :
|
29
|
-
attribute :
|
30
|
-
attribute :
|
31
|
-
attribute :
|
26
|
+
attribute :seller_id, AccountID
|
27
|
+
attribute :offer_id, Uint64
|
28
|
+
attribute :asset_sold, Asset
|
29
|
+
attribute :amount_sold, Int64
|
30
|
+
attribute :asset_bought, Asset
|
31
|
+
attribute :amount_bought, Int64
|
32
32
|
end
|
33
33
|
end
|
@@ -7,10 +7,10 @@ require 'xdr'
|
|
7
7
|
#
|
8
8
|
# struct CreatePassiveOfferOp
|
9
9
|
# {
|
10
|
-
# Asset selling;
|
11
|
-
# Asset buying;
|
12
|
-
# int64 amount;
|
13
|
-
# Price price;
|
10
|
+
# Asset selling; // A
|
11
|
+
# Asset buying; // B
|
12
|
+
# int64 amount; // amount taker gets. if set to 0, delete the offer
|
13
|
+
# Price price; // cost of A in terms of B
|
14
14
|
# };
|
15
15
|
#
|
16
16
|
# ===========================================================================
|
@@ -5,27 +5,40 @@ require 'xdr'
|
|
5
5
|
|
6
6
|
# === xdr source ============================================================
|
7
7
|
#
|
8
|
-
#
|
8
|
+
# struct LedgerEntry
|
9
9
|
# {
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
10
|
+
# uint32 lastModifiedLedgerSeq; // ledger the LedgerEntry was last changed
|
11
|
+
#
|
12
|
+
# union switch (LedgerEntryType type)
|
13
|
+
# {
|
14
|
+
# case ACCOUNT:
|
15
|
+
# AccountEntry account;
|
16
|
+
# case TRUSTLINE:
|
17
|
+
# TrustLineEntry trustLine;
|
18
|
+
# case OFFER:
|
19
|
+
# OfferEntry offer;
|
20
|
+
# }
|
21
|
+
# data;
|
22
|
+
#
|
23
|
+
# // reserved for future use
|
24
|
+
# union switch (int v)
|
25
|
+
# {
|
26
|
+
# case 0:
|
27
|
+
# void;
|
28
|
+
# }
|
29
|
+
# ext;
|
16
30
|
# };
|
17
31
|
#
|
18
32
|
# ===========================================================================
|
19
33
|
module Stellar
|
20
|
-
class LedgerEntry < XDR::
|
21
|
-
|
34
|
+
class LedgerEntry < XDR::Struct
|
35
|
+
include XDR::Namespace
|
22
36
|
|
23
|
-
|
24
|
-
|
25
|
-
switch :offer, :offer
|
37
|
+
autoload :Data
|
38
|
+
autoload :Ext
|
26
39
|
|
27
|
-
attribute :
|
28
|
-
attribute :
|
29
|
-
attribute :
|
40
|
+
attribute :last_modified_ledger_seq, Uint32
|
41
|
+
attribute :data, Data
|
42
|
+
attribute :ext, Ext
|
30
43
|
end
|
31
44
|
end
|
@@ -0,0 +1,33 @@
|
|
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 (LedgerEntryType type)
|
9
|
+
# {
|
10
|
+
# case ACCOUNT:
|
11
|
+
# AccountEntry account;
|
12
|
+
# case TRUSTLINE:
|
13
|
+
# TrustLineEntry trustLine;
|
14
|
+
# case OFFER:
|
15
|
+
# OfferEntry offer;
|
16
|
+
# }
|
17
|
+
#
|
18
|
+
# ===========================================================================
|
19
|
+
module Stellar
|
20
|
+
class LedgerEntry
|
21
|
+
class Data < XDR::Union
|
22
|
+
switch_on LedgerEntryType, :type
|
23
|
+
|
24
|
+
switch :account, :account
|
25
|
+
switch :trustline, :trust_line
|
26
|
+
switch :offer, :offer
|
27
|
+
|
28
|
+
attribute :account, AccountEntry
|
29
|
+
attribute :trust_line, TrustLineEntry
|
30
|
+
attribute :offer, OfferEntry
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -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 LedgerEntry
|
17
|
+
class Ext < XDR::Union
|
18
|
+
switch_on XDR::Int, :v
|
19
|
+
|
20
|
+
switch 0
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -10,8 +10,8 @@ require 'xdr'
|
|
10
10
|
# AccountID sellerID;
|
11
11
|
# uint64 offerID;
|
12
12
|
# Asset selling; // A
|
13
|
-
# Asset buying;
|
14
|
-
# int64 amount;
|
13
|
+
# Asset buying; // B
|
14
|
+
# int64 amount; // amount of A
|
15
15
|
#
|
16
16
|
# /* price for this offer:
|
17
17
|
# price of A in terms of B
|
@@ -8,12 +8,12 @@ require 'xdr'
|
|
8
8
|
# struct PathPaymentOp
|
9
9
|
# {
|
10
10
|
# Asset sendAsset; // asset we pay with
|
11
|
-
# int64 sendMax;
|
12
|
-
#
|
13
|
-
#
|
11
|
+
# int64 sendMax; // the maximum amount of sendAsset to
|
12
|
+
# // send (excluding fees).
|
13
|
+
# // The operation will fail if can't be met
|
14
14
|
#
|
15
15
|
# AccountID destination; // recipient of the payment
|
16
|
-
# Asset destAsset;
|
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
|
@@ -16,11 +16,12 @@ 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,
|
20
|
-
# PATH_PAYMENT_NOT_AUTHORIZED = -7,
|
21
|
-
# PATH_PAYMENT_LINE_FULL = -8,
|
22
|
-
# PATH_PAYMENT_TOO_FEW_OFFERS = -9,
|
23
|
-
#
|
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
|
+
# PATH_PAYMENT_LINE_FULL = -8, // dest would go above their limit
|
22
|
+
# PATH_PAYMENT_TOO_FEW_OFFERS = -9, // not enough offers to satisfy path
|
23
|
+
# PATH_PAYMENT_OFFER_CROSS_SELF = -10, // would cross one of its own offers
|
24
|
+
# PATH_PAYMENT_OVER_SENDMAX = -11 // could not satisfy sendmax
|
24
25
|
# };
|
25
26
|
#
|
26
27
|
# ===========================================================================
|
@@ -36,7 +37,8 @@ module Stellar
|
|
36
37
|
member :path_payment_not_authorized, -7
|
37
38
|
member :path_payment_line_full, -8
|
38
39
|
member :path_payment_too_few_offers, -9
|
39
|
-
member :
|
40
|
+
member :path_payment_offer_cross_self, -10
|
41
|
+
member :path_payment_over_sendmax, -11
|
40
42
|
|
41
43
|
seal
|
42
44
|
end
|
@@ -16,7 +16,7 @@ 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,
|
19
|
+
# PAYMENT_NO_TRUST = -6, // destination missing a trust line for asset
|
20
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
|
# };
|
@@ -9,7 +9,7 @@ require 'xdr'
|
|
9
9
|
# {
|
10
10
|
# txSUCCESS = 0, // all operations succeeded
|
11
11
|
#
|
12
|
-
# txFAILED = -1, // one of the operations failed (
|
12
|
+
# txFAILED = -1, // one of the operations failed (none were applied)
|
13
13
|
#
|
14
14
|
# txTOO_EARLY = -2, // ledger closeTime before minTime
|
15
15
|
# txTOO_LATE = -3, // ledger closeTime after maxTime
|
@@ -8,7 +8,7 @@ require 'xdr'
|
|
8
8
|
# struct TrustLineEntry
|
9
9
|
# {
|
10
10
|
# AccountID accountID; // account this trustline belongs to
|
11
|
-
# Asset asset;
|
11
|
+
# Asset asset; // type of asset (with issuer)
|
12
12
|
# int64 balance; // how much of this asset the user has.
|
13
13
|
# // Asset defines the unit for this;
|
14
14
|
#
|
data/lib/stellar/base/version.rb
CHANGED
data/lib/stellar/operation.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'bigdecimal'
|
2
|
+
|
1
3
|
module Stellar
|
2
4
|
class Operation
|
3
5
|
|
@@ -135,7 +137,7 @@ module Stellar
|
|
135
137
|
selling = Asset.send(*attributes[:selling])
|
136
138
|
amount = attributes[:amount]
|
137
139
|
offer_id = attributes[:offer_id] || 0
|
138
|
-
price =
|
140
|
+
price = interpret_price(attributes[:price])
|
139
141
|
|
140
142
|
op = ManageOfferOp.new({
|
141
143
|
buying: buying,
|
@@ -154,7 +156,7 @@ module Stellar
|
|
154
156
|
buying = Asset.send(*attributes[:buying])
|
155
157
|
selling = Asset.send(*attributes[:selling])
|
156
158
|
amount = attributes[:amount]
|
157
|
-
price =
|
159
|
+
price = interpret_price(attributes[:price])
|
158
160
|
|
159
161
|
op = CreatePassiveOfferOp.new({
|
160
162
|
buying: buying,
|
@@ -283,5 +285,20 @@ module Stellar
|
|
283
285
|
|
284
286
|
return asset, amount
|
285
287
|
end
|
288
|
+
|
289
|
+
|
290
|
+
def self.interpret_price(price)
|
291
|
+
case price
|
292
|
+
when String
|
293
|
+
bd = BigDecimal.new(price)
|
294
|
+
Price.from_f(bd)
|
295
|
+
when Numeric
|
296
|
+
Price.from_f(price)
|
297
|
+
when Stellar::Price
|
298
|
+
price
|
299
|
+
else
|
300
|
+
raise ArgumentError, "Invalid price type: #{price.class}. Must be String, Numeric, or Stellar::Price"
|
301
|
+
end
|
302
|
+
end
|
286
303
|
end
|
287
304
|
end
|
@@ -7,10 +7,10 @@ module Stellar
|
|
7
7
|
s = success!
|
8
8
|
return s.last.amount if s.offers.blank?
|
9
9
|
|
10
|
-
source_asset = s.offers.first.
|
11
|
-
source_offers = s.offers.take_while{|o| o.
|
10
|
+
source_asset = s.offers.first.asset_bought
|
11
|
+
source_offers = s.offers.take_while{|o| o.asset_bought == source_asset}
|
12
12
|
|
13
|
-
source_offers.map(&:
|
13
|
+
source_offers.map(&:amount_bought).sum
|
14
14
|
end
|
15
15
|
|
16
16
|
end
|
@@ -26,7 +26,7 @@ describe Stellar::PathPaymentResult, "#send_amount" do
|
|
26
26
|
context "with simple 1-hop result" do
|
27
27
|
let(:simple_success){ Stellar::SimplePaymentResult.new(amount: 100) }
|
28
28
|
let(:offers) do
|
29
|
-
[Stellar::ClaimOfferAtom.new(
|
29
|
+
[Stellar::ClaimOfferAtom.new(asset_bought: Stellar::Asset.native, amount_bought: 200)]
|
30
30
|
end
|
31
31
|
|
32
32
|
let(:path_success) do
|
@@ -47,8 +47,8 @@ describe Stellar::PathPaymentResult, "#send_amount" do
|
|
47
47
|
let(:simple_success){ Stellar::SimplePaymentResult.new(amount: 100) }
|
48
48
|
let(:offers) do
|
49
49
|
[
|
50
|
-
Stellar::ClaimOfferAtom.new(
|
51
|
-
Stellar::ClaimOfferAtom.new(
|
50
|
+
Stellar::ClaimOfferAtom.new(asset_bought: Stellar::Asset.native, amount_bought: 200),
|
51
|
+
Stellar::ClaimOfferAtom.new(asset_bought: Stellar::Asset.native, amount_bought: 200),
|
52
52
|
]
|
53
53
|
end
|
54
54
|
|
@@ -72,9 +72,9 @@ describe Stellar::PathPaymentResult, "#send_amount" do
|
|
72
72
|
let(:otherAsset){ Stellar::Asset.alphanum4("USD", Stellar::KeyPair.random) }
|
73
73
|
let(:offers) do
|
74
74
|
[
|
75
|
-
Stellar::ClaimOfferAtom.new(
|
76
|
-
Stellar::ClaimOfferAtom.new(
|
77
|
-
Stellar::ClaimOfferAtom.new(
|
75
|
+
Stellar::ClaimOfferAtom.new(asset_bought: Stellar::Asset.native, amount_bought: 200),
|
76
|
+
Stellar::ClaimOfferAtom.new(asset_bought: Stellar::Asset.native, amount_bought: 200),
|
77
|
+
Stellar::ClaimOfferAtom.new(asset_bought: otherAsset, amount_bought: 200),
|
78
78
|
]
|
79
79
|
end
|
80
80
|
|
@@ -18,4 +18,17 @@ describe Stellar::Price, "#from_f" do
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
+
it "works with bigdecimal" do
|
22
|
+
whole = random.rand(1_000_000)
|
23
|
+
fractional = random.rand(10_000_000) # seven significant digits available for fractional
|
24
|
+
|
25
|
+
expected = BigDecimal.new("#{whole}.#{fractional}")
|
26
|
+
actual_p = subject.from_f(expected)
|
27
|
+
actual = BigDecimal.new(actual_p.n) / BigDecimal.new(actual_p.d)
|
28
|
+
|
29
|
+
expect(actual).to be_within(BigDecimal.new("0.000000001")).of(actual)
|
30
|
+
expect(actual_p.n).to be <= Stellar::Price::MAX_PRECISION
|
31
|
+
expect(actual_p.d).to be <= Stellar::Price::MAX_PRECISION
|
32
|
+
end
|
33
|
+
|
21
34
|
end
|
@@ -31,28 +31,28 @@ describe Stellar::Thresholds, ".make" do
|
|
31
31
|
end
|
32
32
|
|
33
33
|
it "errors unless all components are provided" do
|
34
|
-
expect{ subject.make(good.except(:master_weight)) }.to raise_error
|
35
|
-
expect{ subject.make(good.except(:low)) }.to raise_error
|
36
|
-
expect{ subject.make(good.except(:medium)) }.to raise_error
|
37
|
-
expect{ subject.make(good.except(:high)) }.to raise_error
|
34
|
+
expect{ subject.make(good.except(:master_weight)) }.to raise_error(ArgumentError)
|
35
|
+
expect{ subject.make(good.except(:low)) }.to raise_error(ArgumentError)
|
36
|
+
expect{ subject.make(good.except(:medium)) }.to raise_error(ArgumentError)
|
37
|
+
expect{ subject.make(good.except(:high)) }.to raise_error(ArgumentError)
|
38
38
|
end
|
39
39
|
|
40
40
|
it "errors unless all components are numbers" do
|
41
|
-
expect{ subject.make(good.merge(master_weight: "hello")) }.to raise_error
|
42
|
-
expect{ subject.make(good.merge(low: "hello")) }.to raise_error
|
43
|
-
expect{ subject.make(good.merge(medium: "hello")) }.to raise_error
|
44
|
-
expect{ subject.make(good.merge(high: "hello")) }.to raise_error
|
41
|
+
expect{ subject.make(good.merge(master_weight: "hello")) }.to raise_error(ArgumentError)
|
42
|
+
expect{ subject.make(good.merge(low: "hello")) }.to raise_error(ArgumentError)
|
43
|
+
expect{ subject.make(good.merge(medium: "hello")) }.to raise_error(ArgumentError)
|
44
|
+
expect{ subject.make(good.merge(high: "hello")) }.to raise_error(ArgumentError)
|
45
45
|
end
|
46
46
|
|
47
47
|
it "errors unless all components are in (0..255)" do
|
48
|
-
expect{ subject.make(good.merge(master_weight: -1)) }.to raise_error
|
49
|
-
expect{ subject.make(good.merge(master_weight: 256)) }.to raise_error
|
50
|
-
expect{ subject.make(good.merge(low: -1)) }.to raise_error
|
51
|
-
expect{ subject.make(good.merge(low: 256)) }.to raise_error
|
52
|
-
expect{ subject.make(good.merge(medium: -1)) }.to raise_error
|
53
|
-
expect{ subject.make(good.merge(medium: 256)) }.to raise_error
|
54
|
-
expect{ subject.make(good.merge(high: -1)) }.to raise_error
|
55
|
-
expect{ subject.make(good.merge(high: 256)) }.to raise_error
|
48
|
+
expect{ subject.make(good.merge(master_weight: -1)) }.to raise_error(ArgumentError)
|
49
|
+
expect{ subject.make(good.merge(master_weight: 256)) }.to raise_error(ArgumentError)
|
50
|
+
expect{ subject.make(good.merge(low: -1)) }.to raise_error(ArgumentError)
|
51
|
+
expect{ subject.make(good.merge(low: 256)) }.to raise_error(ArgumentError)
|
52
|
+
expect{ subject.make(good.merge(medium: -1)) }.to raise_error(ArgumentError)
|
53
|
+
expect{ subject.make(good.merge(medium: 256)) }.to raise_error(ArgumentError)
|
54
|
+
expect{ subject.make(good.merge(high: -1)) }.to raise_error(ArgumentError)
|
55
|
+
expect{ subject.make(good.merge(high: 256)) }.to raise_error(ArgumentError)
|
56
56
|
end
|
57
57
|
|
58
58
|
it "ignores additional keys" do
|
@@ -98,7 +98,7 @@ struct AccountEntry
|
|
98
98
|
SequenceNumber seqNum; // last sequence number used for this account
|
99
99
|
uint32 numSubEntries; // number of sub-entries this account has
|
100
100
|
// drives the reserve
|
101
|
-
AccountID* inflationDest; // Account to vote during inflation
|
101
|
+
AccountID* inflationDest; // Account to vote for during inflation
|
102
102
|
uint32 flags; // see AccountFlags
|
103
103
|
|
104
104
|
string32 homeDomain; // can be used for reverse federation and memo lookup
|
@@ -133,7 +133,7 @@ enum TrustLineFlags
|
|
133
133
|
struct TrustLineEntry
|
134
134
|
{
|
135
135
|
AccountID accountID; // account this trustline belongs to
|
136
|
-
Asset asset;
|
136
|
+
Asset asset; // type of asset (with issuer)
|
137
137
|
int64 balance; // how much of this asset the user has.
|
138
138
|
// Asset defines the unit for this;
|
139
139
|
|
@@ -167,8 +167,8 @@ struct OfferEntry
|
|
167
167
|
AccountID sellerID;
|
168
168
|
uint64 offerID;
|
169
169
|
Asset selling; // A
|
170
|
-
Asset buying;
|
171
|
-
int64 amount;
|
170
|
+
Asset buying; // B
|
171
|
+
int64 amount; // amount of A
|
172
172
|
|
173
173
|
/* price for this offer:
|
174
174
|
price of A in terms of B
|
@@ -187,14 +187,28 @@ struct OfferEntry
|
|
187
187
|
ext;
|
188
188
|
};
|
189
189
|
|
190
|
-
|
190
|
+
struct LedgerEntry
|
191
191
|
{
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
case
|
197
|
-
|
192
|
+
uint32 lastModifiedLedgerSeq; // ledger the LedgerEntry was last changed
|
193
|
+
|
194
|
+
union switch (LedgerEntryType type)
|
195
|
+
{
|
196
|
+
case ACCOUNT:
|
197
|
+
AccountEntry account;
|
198
|
+
case TRUSTLINE:
|
199
|
+
TrustLineEntry trustLine;
|
200
|
+
case OFFER:
|
201
|
+
OfferEntry offer;
|
202
|
+
}
|
203
|
+
data;
|
204
|
+
|
205
|
+
// reserved for future use
|
206
|
+
union switch (int v)
|
207
|
+
{
|
208
|
+
case 0:
|
209
|
+
void;
|
210
|
+
}
|
211
|
+
ext;
|
198
212
|
};
|
199
213
|
|
200
214
|
// list of all envelope types used in the application
|
@@ -205,5 +219,4 @@ enum EnvelopeType
|
|
205
219
|
ENVELOPE_TYPE_SCP = 1,
|
206
220
|
ENVELOPE_TYPE_TX = 2
|
207
221
|
};
|
208
|
-
|
209
222
|
}
|
data/xdr/Stellar-transaction.x
CHANGED
@@ -53,7 +53,7 @@ struct CreateAccountOp
|
|
53
53
|
struct PaymentOp
|
54
54
|
{
|
55
55
|
AccountID destination; // recipient of the payment
|
56
|
-
Asset asset;
|
56
|
+
Asset asset; // what they end up with
|
57
57
|
int64 amount; // amount they end up with
|
58
58
|
};
|
59
59
|
|
@@ -71,12 +71,12 @@ Result: PathPaymentResult
|
|
71
71
|
struct PathPaymentOp
|
72
72
|
{
|
73
73
|
Asset sendAsset; // asset we pay with
|
74
|
-
int64 sendMax;
|
75
|
-
|
76
|
-
|
74
|
+
int64 sendMax; // the maximum amount of sendAsset to
|
75
|
+
// send (excluding fees).
|
76
|
+
// The operation will fail if can't be met
|
77
77
|
|
78
78
|
AccountID destination; // recipient of the payment
|
79
|
-
Asset destAsset;
|
79
|
+
Asset destAsset; // what they end up with
|
80
80
|
int64 destAmount; // amount they end up with
|
81
81
|
|
82
82
|
Asset path<5>; // additional hops it must go through to get there
|
@@ -109,10 +109,10 @@ Result: CreatePassiveOfferResult
|
|
109
109
|
*/
|
110
110
|
struct CreatePassiveOfferOp
|
111
111
|
{
|
112
|
-
Asset selling;
|
113
|
-
Asset buying;
|
114
|
-
int64 amount;
|
115
|
-
Price price;
|
112
|
+
Asset selling; // A
|
113
|
+
Asset buying; // B
|
114
|
+
int64 amount; // amount taker gets. if set to 0, delete the offer
|
115
|
+
Price price; // cost of A in terms of B
|
116
116
|
};
|
117
117
|
|
118
118
|
/* Set Account Options
|
@@ -178,7 +178,7 @@ struct AllowTrustOp
|
|
178
178
|
case ASSET_TYPE_CREDIT_ALPHANUM4:
|
179
179
|
opaque assetCode4[4];
|
180
180
|
|
181
|
-
|
181
|
+
case ASSET_TYPE_CREDIT_ALPHANUM12:
|
182
182
|
opaque assetCode12[12];
|
183
183
|
|
184
184
|
// add other asset types here in the future
|
@@ -316,16 +316,16 @@ struct TransactionEnvelope
|
|
316
316
|
struct ClaimOfferAtom
|
317
317
|
{
|
318
318
|
// emited to identify the offer
|
319
|
-
AccountID
|
319
|
+
AccountID sellerID; // Account that owns the offer
|
320
320
|
uint64 offerID;
|
321
321
|
|
322
322
|
// amount and asset taken from the owner
|
323
|
-
Asset
|
324
|
-
int64
|
323
|
+
Asset assetSold;
|
324
|
+
int64 amountSold;
|
325
325
|
|
326
|
-
// amount and
|
327
|
-
Asset
|
328
|
-
int64
|
326
|
+
// amount and asset sent to the owner
|
327
|
+
Asset assetBought;
|
328
|
+
int64 amountBought;
|
329
329
|
};
|
330
330
|
|
331
331
|
/******* CreateAccount Result ********/
|
@@ -364,7 +364,7 @@ enum PaymentResultCode
|
|
364
364
|
PAYMENT_SRC_NO_TRUST = -3, // no trust line on source account
|
365
365
|
PAYMENT_SRC_NOT_AUTHORIZED = -4, // source not authorized to transfer
|
366
366
|
PAYMENT_NO_DESTINATION = -5, // destination account does not exist
|
367
|
-
PAYMENT_NO_TRUST = -6,
|
367
|
+
PAYMENT_NO_TRUST = -6, // destination missing a trust line for asset
|
368
368
|
PAYMENT_NOT_AUTHORIZED = -7, // destination not authorized to hold asset
|
369
369
|
PAYMENT_LINE_FULL = -8 // destination would go above their limit
|
370
370
|
};
|
@@ -390,11 +390,12 @@ enum PathPaymentResultCode
|
|
390
390
|
PATH_PAYMENT_SRC_NO_TRUST = -3, // no trust line on source account
|
391
391
|
PATH_PAYMENT_SRC_NOT_AUTHORIZED = -4, // source not authorized to transfer
|
392
392
|
PATH_PAYMENT_NO_DESTINATION = -5, // destination account does not exist
|
393
|
-
PATH_PAYMENT_NO_TRUST = -6,
|
394
|
-
PATH_PAYMENT_NOT_AUTHORIZED = -7,
|
395
|
-
PATH_PAYMENT_LINE_FULL = -8,
|
396
|
-
PATH_PAYMENT_TOO_FEW_OFFERS = -9,
|
397
|
-
|
393
|
+
PATH_PAYMENT_NO_TRUST = -6, // dest missing a trust line for asset
|
394
|
+
PATH_PAYMENT_NOT_AUTHORIZED = -7, // dest not authorized to hold asset
|
395
|
+
PATH_PAYMENT_LINE_FULL = -8, // dest would go above their limit
|
396
|
+
PATH_PAYMENT_TOO_FEW_OFFERS = -9, // not enough offers to satisfy path
|
397
|
+
PATH_PAYMENT_OFFER_CROSS_SELF = -10, // would cross one of its own offers
|
398
|
+
PATH_PAYMENT_OVER_SENDMAX = -11 // could not satisfy sendmax
|
398
399
|
};
|
399
400
|
|
400
401
|
struct SimplePaymentResult
|
@@ -555,7 +556,7 @@ enum AccountMergeResultCode
|
|
555
556
|
union AccountMergeResult switch (AccountMergeResultCode code)
|
556
557
|
{
|
557
558
|
case ACCOUNT_MERGE_SUCCESS:
|
558
|
-
|
559
|
+
int64 sourceAccountBalance; // how much got transfered from source account
|
559
560
|
default:
|
560
561
|
void;
|
561
562
|
};
|
@@ -629,7 +630,7 @@ enum TransactionResultCode
|
|
629
630
|
{
|
630
631
|
txSUCCESS = 0, // all operations succeeded
|
631
632
|
|
632
|
-
txFAILED = -1, // one of the operations failed (
|
633
|
+
txFAILED = -1, // one of the operations failed (none were applied)
|
633
634
|
|
634
635
|
txTOO_EARLY = -2, // ledger closeTime before minTime
|
635
636
|
txTOO_LATE = -3, // ledger closeTime after maxTime
|
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.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Fleckenstein
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xdr
|
@@ -276,6 +276,8 @@ files:
|
|
276
276
|
- generated/stellar/inflation_result.rb
|
277
277
|
- generated/stellar/inflation_result_code.rb
|
278
278
|
- generated/stellar/ledger_entry.rb
|
279
|
+
- generated/stellar/ledger_entry/data.rb
|
280
|
+
- generated/stellar/ledger_entry/ext.rb
|
279
281
|
- generated/stellar/ledger_entry_change.rb
|
280
282
|
- generated/stellar/ledger_entry_change_type.rb
|
281
283
|
- generated/stellar/ledger_entry_type.rb
|