openassets-ruby 0.1.9 → 0.2.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: cf01309338f084d52c8fda8cf85695b4606d32b0
4
- data.tar.gz: a0b83af7aaa19874a381ed21c2393caff99c095d
3
+ metadata.gz: ad9b917508f6d470f30b887f8ae9d5cce02fdc0a
4
+ data.tar.gz: b88e61903d84a5e05ff1e39eca558a73bb65df49
5
5
  SHA512:
6
- metadata.gz: 0552802edfa3962439b41ad80f62efcc2215bc8f1ec7c105f7d2ef3beea5c97a1d6f432137103a1360e0f96ff1b6b795c6296647f0321fe9dd259861a4da363b
7
- data.tar.gz: d152dd700611ddfced626c6aed83b67eccba0d0257198cc427e66ee551242f78b05649ce2b84c4a4a82fabd5eba1a3dcdb1a5536f30ff286183c4e3bc8bbd2dc
6
+ metadata.gz: 385715ff6acdfa617eee821e57b6ab74d63bb896f0566af31319ec81c87eecb3f8786bc96178c41f8dc533dc2623b82598a13729986453be574b19b46d932a14
7
+ data.tar.gz: 31ab11d1390551dcfcc5d214f69e068220c494a1782d6a470c7ac9d390931425953d38b47327d319183161a8f5efc436b32a85e0ca6623a89dc0a73240c6bcfc
@@ -66,7 +66,8 @@ module OpenAssets
66
66
  def self.collect_uncolored_outputs(unspent_outputs, amount)
67
67
  total_amount = 0
68
68
  results = []
69
- unspent_outputs.each do |output|
69
+ sorted_outputs = unspent_outputs.sort{|a,b| a.output.value <=> b.output.value}
70
+ sorted_outputs.each do |output|
70
71
  if output.output.asset_id.nil?
71
72
  results << output
72
73
  total_amount += output.output.value
@@ -145,15 +146,24 @@ module OpenAssets
145
146
  }
146
147
 
147
148
  # btc_excess = inputs(colored) total satoshi - outputs(transfer) total satoshi
149
+ utxo = btc_transfer_spec.unspent_outputs.dup
148
150
  btc_excess = inputs.inject(0) { |sum, i| sum + i.output.value } - outputs.inject(0){|sum, o| sum + o.value}
149
151
  if btc_excess < btc_transfer_spec.amount + fees
150
152
  uncolored_outputs, uncolored_amount =
151
- TransactionBuilder.collect_uncolored_outputs(btc_transfer_spec.unspent_outputs, btc_transfer_spec.amount + fees - btc_excess)
153
+ TransactionBuilder.collect_uncolored_outputs(utxo, btc_transfer_spec.amount + fees - btc_excess)
154
+ utxo = utxo - uncolored_outputs
152
155
  inputs << uncolored_outputs
153
156
  btc_excess += uncolored_amount
154
157
  end
155
158
 
156
159
  otsuri = btc_excess - btc_transfer_spec.amount - fees
160
+ if otsuri > 0 && otsuri < @amount
161
+ uncolored_outputs, uncolored_amount =
162
+ TransactionBuilder.collect_uncolored_outputs(utxo, @amount - otsuri)
163
+ inputs << uncolored_outputs
164
+ otsuri += uncolored_amount
165
+ end
166
+
157
167
  if otsuri > 0
158
168
  outputs << create_uncolored_output(btc_transfer_spec.change_script, otsuri)
159
169
  end
@@ -1,3 +1,3 @@
1
1
  module OpenAssets
2
- VERSION = "0.1.9"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openassets-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - azuchi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-10-31 00:00:00.000000000 Z
11
+ date: 2015-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bitcoin-ruby
@@ -157,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
157
  version: '0'
158
158
  requirements: []
159
159
  rubyforge_project:
160
- rubygems_version: 2.4.5
160
+ rubygems_version: 2.4.6
161
161
  signing_key:
162
162
  specification_version: 4
163
163
  summary: The implementation of the Open Assets Protocol for Ruby.