openassets-ruby 0.1.9 → 0.2.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 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.