stellar-base 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dd816d7bbac1d2b4938046e55db9545824e94d00
4
- data.tar.gz: af0d72500eed2bd454006f77148714ca228bfccf
3
+ metadata.gz: 6bac71a17429d471bf8a252b4555a83cf79f32c4
4
+ data.tar.gz: 12011ffc9af15865d2f60c79b7783f9d3534842f
5
5
  SHA512:
6
- metadata.gz: f571ed6a5bb220ec0eb34f056e0642a6441a02e889f113217ba5c08e66848ad281f15d99fc9812fe7b89094287e3df04c132367af08acfabcae9d644eb58ef84
7
- data.tar.gz: da9dd38df4f482aca38610469e73ab5d5f3f60d2992b9454abc86ce0dcbdf33fc3b3eb87ca9195aab1865612937a65db61dbf9ae94442204bbbdf64560dc0531
6
+ metadata.gz: 4f390f799a717fab8ce23eba8b924d242fdf501b3eaf11e24239570b1710c4557305aacdd12095f8f79812c681daa164b633f153161db51a13f200ce5b0c30ed
7
+ data.tar.gz: 9324b9f53c10f45770585e76caf0c537c90a071c1ad10ae238a05703c4b97235d2ae1aad23f394d06fa8304e2dee908ad866b4d3e107420c4a9372f95ba31402
data/CHANGELOG.md ADDED
@@ -0,0 +1,14 @@
1
+ # Changelog All notable changes to this project will be documented in this
2
+ file. This project adheres to [Semantic Versioning](http://semver.org/).
3
+
4
+ As this project is pre 1.0, breaking changes may happen for minor version
5
+ bumps. A breaking change will get clearly notified in this log.
6
+
7
+ ## [0.4.0](https://github.com/stellar/ruby-stellar-base/compare/v0.3.0...v0.4.0)
8
+
9
+ ### Changed
10
+ - BREAKING CHANGE: "Amounts", that is, input parameters that represent a
11
+ certain amount of a given asset, such as the `:starting_balance` option for
12
+ `Operation.create_account` are now interpreted using the convention of 7
13
+ fixed-decimal places. For example, specifying a payment where the amount is
14
+ `50` will result in a transaction with an amount set to `500000000`.
@@ -17,10 +17,10 @@ tx = Stellar::Transaction.create_account({
17
17
  account: master,
18
18
  destination: destination,
19
19
  sequence: 1,
20
- starting_balance: 50 * Stellar::ONE
20
+ starting_balance: 50
21
21
  })
22
22
 
23
23
  b64 = tx.to_envelope(master).to_xdr(:base64)
24
-
24
+ p b64
25
25
  result = $server.get('tx', blob: b64)
26
26
  p result.body
@@ -24,7 +24,7 @@ tx = Stellar::Transaction.payment({
24
24
  account: master,
25
25
  destination: destination,
26
26
  sequence: 1,
27
- amount: [:native, 20 * Stellar::ONE]
27
+ amount: [:native, 20]
28
28
  })
29
29
 
30
30
  b64 = tx.to_envelope(master).to_xdr(:base64)
@@ -28,14 +28,14 @@ def submit(key, tx)
28
28
  p response.body
29
29
  end
30
30
 
31
- master = Stellar::KeyPair.from_raw_seed("allmylifemyhearthasbeensearching")
32
- destination = Stellar::KeyPair.from_raw_seed("allmylifemyhearthasbeensearching")
31
+ master = Stellar::KeyPair.master
32
+ destination = Stellar::KeyPair.master
33
33
 
34
34
  submit master, Stellar::Transaction.payment({
35
35
  account: master,
36
36
  destination: destination,
37
37
  sequence: 1,
38
- amount: [:native, 2000 * Stellar::ONE]
38
+ amount: [:native, 2000]
39
39
  })
40
40
 
41
41
  # NOTE: after this step, you need to get the sequence number for destination
data/examples/offer.rb CHANGED
@@ -27,14 +27,14 @@ def submit(key, tx)
27
27
  p response.body
28
28
  end
29
29
 
30
- master = Stellar::KeyPair.from_raw_seed("allmylifemyhearthasbeensearching")
31
- destination = Stellar::KeyPair.from_raw_seed("allmylifemyhearthasbeensearching")
30
+ master = Stellar::KeyPair.master
31
+ destination = Stellar::KeyPair.master
32
32
 
33
33
  submit master, Stellar::Transaction.payment({
34
34
  account: master,
35
35
  destination: destination,
36
36
  sequence: 1,
37
- amount: [:native, 2000 * Stellar::ONE]
37
+ amount: [:native, 2000]
38
38
  })
39
39
 
40
40
  # NOTE: after this step, you need to get the sequence number for destination
@@ -2,21 +2,21 @@
2
2
 
3
3
  require 'stellar-base'
4
4
 
5
- master = Stellar::KeyPair.from_raw_seed("allmylifemyhearthasbeensearching")
6
- destination = Stellar::KeyPair.from_raw_seed("allmylifemyhearthasbeensearching")
5
+ master = Stellar::KeyPair.master
6
+ destination = Stellar::KeyPair.master
7
7
 
8
8
  tx1 = Stellar::Transaction.payment({
9
9
  account: master,
10
10
  destination: destination,
11
11
  sequence: 1,
12
- amount: [:native, 20 * Stellar::ONE]
12
+ amount: [:native, 20]
13
13
  })
14
14
 
15
15
  tx2 = Stellar::Transaction.payment({
16
16
  account: master,
17
17
  destination: destination,
18
18
  sequence: 2,
19
- amount: [:native, 20 * Stellar::ONE]
19
+ amount: [:native, 20]
20
20
  })
21
21
 
22
22
  hex = tx1.merge(tx2).to_envelope(master).to_xdr(:base64)
@@ -1,5 +1,5 @@
1
1
  module Stellar
2
2
  module Base
3
- VERSION = "0.3.0"
3
+ VERSION = "0.4.0"
4
4
  end
5
5
  end
@@ -95,7 +95,7 @@ module Stellar
95
95
 
96
96
  def self.create_account(attributes={})
97
97
  destination = attributes[:destination]
98
- starting_balance = attributes[:starting_balance]
98
+ starting_balance = interpret_amount(attributes[:starting_balance])
99
99
 
100
100
  raise ArgumentError unless destination.is_a?(KeyPair)
101
101
 
@@ -121,7 +121,7 @@ module Stellar
121
121
  # Stellar::ChangeTrustOp body
122
122
  def self.change_trust(attributes={})
123
123
  line = Asset.send(*attributes[:line])
124
- limit = attributes[:limit]
124
+ limit =interpret_amount(attributes[:limit])
125
125
 
126
126
  raise ArgumentError, "Bad :limit #{limit}" unless limit.is_a?(Integer)
127
127
 
@@ -135,7 +135,7 @@ module Stellar
135
135
  def self.manage_offer(attributes={})
136
136
  buying = Asset.send(*attributes[:buying])
137
137
  selling = Asset.send(*attributes[:selling])
138
- amount = attributes[:amount]
138
+ amount = interpret_amount(attributes[:amount])
139
139
  offer_id = attributes[:offer_id] || 0
140
140
  price = interpret_price(attributes[:price])
141
141
 
@@ -155,7 +155,7 @@ module Stellar
155
155
  def self.create_passive_offer(attributes={})
156
156
  buying = Asset.send(*attributes[:buying])
157
157
  selling = Asset.send(*attributes[:selling])
158
- amount = attributes[:amount]
158
+ amount = interpret_amount(attributes[:amount])
159
159
  price = interpret_price(attributes[:price])
160
160
 
161
161
  op = CreatePassiveOfferOp.new({
@@ -280,12 +280,25 @@ module Stellar
280
280
 
281
281
  private
282
282
  def self.extract_amount(a)
283
- amount = a.last
283
+ amount = interpret_amount(a.last)
284
284
  asset = Stellar::Asset.send(*a[0...-1])
285
285
 
286
286
  return asset, amount
287
287
  end
288
288
 
289
+ def self.interpret_amount(amount)
290
+ case amount
291
+ when String
292
+ (BigDecimal.new(amount) * Stellar::ONE).floor
293
+ when Integer
294
+ amount * Stellar::ONE
295
+ when Numeric
296
+ (amount * Stellar::ONE).floor
297
+ else
298
+ raise ArgumentError, "Invalid amount type: #{amount.class}. Must be String or Numeric"
299
+ end
300
+ end
301
+
289
302
 
290
303
  def self.interpret_price(price)
291
304
  case price
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe Stellar::Operation, ".payment" do
4
+
5
+
6
+ it "correctly translates the provided amount to the native representation" do
7
+ op = Stellar::Operation.payment(destination: Stellar::KeyPair.random, amount: [:native, 20])
8
+ expect(op.body.value.amount).to eql(20_0000000)
9
+ op = Stellar::Operation.payment(destination: Stellar::KeyPair.random, amount: [:native, "20"])
10
+ expect(op.body.value.amount).to eql(20_0000000)
11
+ end
12
+
13
+ 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.3.0
4
+ version: 0.4.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-09-04 00:00:00.000000000 Z
11
+ date: 2015-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xdr
@@ -230,6 +230,7 @@ files:
230
230
  - ".gitignore"
231
231
  - ".travis.yml"
232
232
  - ".yardopts"
233
+ - CHANGELOG.md
233
234
  - CONTRIBUTING.md
234
235
  - Gemfile
235
236
  - Guardfile
@@ -381,6 +382,7 @@ files:
381
382
  - spec/lib/stellar/convert_spec.rb
382
383
  - spec/lib/stellar/key_pair_spec.rb
383
384
  - spec/lib/stellar/networks_spec.rb
385
+ - spec/lib/stellar/operation_spec.rb
384
386
  - spec/lib/stellar/path_payment_result_spec.rb
385
387
  - spec/lib/stellar/price_spec.rb
386
388
  - spec/lib/stellar/thresholds_spec.rb
@@ -431,6 +433,7 @@ test_files:
431
433
  - spec/lib/stellar/convert_spec.rb
432
434
  - spec/lib/stellar/key_pair_spec.rb
433
435
  - spec/lib/stellar/networks_spec.rb
436
+ - spec/lib/stellar/operation_spec.rb
434
437
  - spec/lib/stellar/path_payment_result_spec.rb
435
438
  - spec/lib/stellar/price_spec.rb
436
439
  - spec/lib/stellar/thresholds_spec.rb