openassets-ruby 0.2.4 → 0.2.5
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/README.md +19 -0
- data/lib/openassets/api.rb +15 -21
- data/lib/openassets/protocol/transaction_output.rb +18 -0
- data/lib/openassets/transaction/spendable_output.rb +7 -0
- data/lib/openassets/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 14a0524ecd885560924bce4da7804e6aa39f176d
|
4
|
+
data.tar.gz: 2a726966732a748b5645eb58272df80922660d63
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae77d53785ec2b31a2692e96b5580e2dbdb5021cb2011228e26a33ca060c96fee45adf4a45dee1fc0a2b37234363f879db632315b6fbe58b589b191c48ccd602
|
7
|
+
data.tar.gz: d188e2415a112a7d3d34bd3bd1c513a3672dd30f7d57c7fdef772d7ada7156796ac3ffb3e0e49bc29bc7d19d297d5bf6b6534d3fb2fc9ae145d3b16c048e3c15
|
data/README.md
CHANGED
@@ -164,6 +164,25 @@ This transaction inputs use only uncolored outputs.
|
|
164
164
|
If specified ``output_qty``, the send output is divided by the number of output_qty.
|
165
165
|
Ex, amount = 60000 and output_qty = 2, send TxOut is two (each value is 30000, 30000) and change TxOut one.
|
166
166
|
|
167
|
+
* **get_outputs_from_txid**
|
168
|
+
Get tx outputs. (use for debug)
|
169
|
+
```ruby
|
170
|
+
api.get_outputs_from_txid('3fba8bfb157ae29c293d5bd65c178fec169a87f880e2e62537fcce26612a6aa3')
|
171
|
+
> [{
|
172
|
+
"address": "14M4kbAtn71P1nnNYuhBDFTNYxa19t1XP6",
|
173
|
+
"oa_address": "akEJwzkzEFau4t2wjbXoMs7MwtZkB8xixmH",
|
174
|
+
"script": "76a91424b3d405bc60bd9628691fe28bb00f6800e1480688ac",
|
175
|
+
"amount": "0.00000600",
|
176
|
+
"asset_id": "AWo3R89p5REmoSyMWB8AeUmud8456bRxZL",
|
177
|
+
"asset_quantity": "1",
|
178
|
+
"asset_amount": "1",
|
179
|
+
"account": null,
|
180
|
+
"asset_definition_url": "",
|
181
|
+
"txid": "3fba8bfb157ae29c293d5bd65c178fec169a87f880e2e62537fcce26612a6aa3",
|
182
|
+
"vout": 1
|
183
|
+
},..
|
184
|
+
```
|
185
|
+
|
167
186
|
## License
|
168
187
|
|
169
188
|
The MIT License (MIT)
|
data/lib/openassets/api.rb
CHANGED
@@ -43,24 +43,7 @@ module OpenAssets
|
|
43
43
|
def list_unspent(oa_address_list = [])
|
44
44
|
btc_address_list = oa_address_list.map { |oa_address| oa_address_to_address(oa_address)}
|
45
45
|
outputs = get_unspent_outputs(btc_address_list)
|
46
|
-
result = outputs.map{|out|
|
47
|
-
address = script_to_address(out.output.script)
|
48
|
-
script = out.output.script.to_payload.bth
|
49
|
-
{
|
50
|
-
'txid' => out.out_point.hash,
|
51
|
-
'vout' => out.out_point.index,
|
52
|
-
'address' => address,
|
53
|
-
'oa_address' => address.nil? ? nil : address_to_oa_address(address),
|
54
|
-
'script' => script,
|
55
|
-
'amount' => satoshi_to_coin(out.output.value),
|
56
|
-
'confirmations' => out.confirmations,
|
57
|
-
'asset_id' => out.output.asset_id,
|
58
|
-
'account' => out.output.account,
|
59
|
-
'asset_quantity' => out.output.asset_quantity.to_s,
|
60
|
-
'asset_amount' => out.output.asset_amount.to_s,
|
61
|
-
'asset_definition_url' => out.output.asset_definition_url
|
62
|
-
}
|
63
|
-
}
|
46
|
+
result = outputs.map{|out| out.to_hash}
|
64
47
|
result
|
65
48
|
end
|
66
49
|
|
@@ -179,12 +162,12 @@ module OpenAssets
|
|
179
162
|
decode_tx = provider.get_transaction(txid, 0)
|
180
163
|
raise OpenAssets::Transaction::TransactionBuildError, "txid #{txid} could not be retrieved." if decode_tx.nil?
|
181
164
|
tx = Bitcoin::Protocol::Tx.new(decode_tx.htb)
|
182
|
-
colored_outputs =
|
165
|
+
colored_outputs = get_color_outputs_from_tx(tx)
|
183
166
|
colored_outputs.each_with_index { |o, index | @cache[txid + index.to_s] = o}
|
184
167
|
colored_outputs[output_index]
|
185
168
|
end
|
186
169
|
|
187
|
-
def
|
170
|
+
def get_color_outputs_from_tx(tx)
|
188
171
|
unless tx.is_coinbase?
|
189
172
|
tx.outputs.each_with_index { |out, i|
|
190
173
|
marker_output_payload = OpenAssets::Protocol::MarkerOutput.parse_script(out.pk_script)
|
@@ -201,10 +184,21 @@ module OpenAssets
|
|
201
184
|
tx.outputs.map{|out| OpenAssets::Protocol::TransactionOutput.new(out.value, out.parsed_script, nil, 0, OpenAssets::Protocol::OutputType::UNCOLORED)}
|
202
185
|
end
|
203
186
|
|
187
|
+
# Get tx outputs. (use for debug)
|
188
|
+
# @param[String] txid Transaction ID.
|
189
|
+
# @return[Array] Return array of the transaction output Hash with coloring information.
|
190
|
+
def get_outputs_from_txid(txid)
|
191
|
+
decode_tx = provider.get_transaction(txid, 0)
|
192
|
+
raise OpenAssets::Transaction::TransactionBuildError, "txid #{txid} could not be retrieved." if decode_tx.nil?
|
193
|
+
tx = Bitcoin::Protocol::Tx.new(decode_tx.htb)
|
194
|
+
outputs = get_color_outputs_from_tx(tx)
|
195
|
+
outputs.map.with_index{|out, i|out.to_hash.merge({'txid' => tx.hash, 'vout' => i})}
|
196
|
+
end
|
197
|
+
|
204
198
|
private
|
205
199
|
# @param [Array[OpenAssets::Protocol::TransactionOutput] inputs The outputs referenced by the inputs of the transaction.
|
206
200
|
# @param [Integer] marker_output_index The position of the marker output in the transaction.
|
207
|
-
# @param [Array[Bitcoin::Protocol::
|
201
|
+
# @param [Array[Bitcoin::Protocol::TxOut]] outputs The outputs of the transaction.
|
208
202
|
# @param [Array[OpenAssets::Protocol::TransactionOutput]] asset_quantities The list of asset quantities of the outputs.
|
209
203
|
def compute_asset_ids(inputs, marker_output_index, outputs, asset_quantities)
|
210
204
|
return nil if asset_quantities.length > outputs.length - 1 || inputs.length == 0
|
@@ -4,6 +4,8 @@ module OpenAssets
|
|
4
4
|
# Represents a transaction output and its asset ID and asset quantity.
|
5
5
|
class TransactionOutput
|
6
6
|
|
7
|
+
include OpenAssets::Util
|
8
|
+
|
7
9
|
attr_accessor :value
|
8
10
|
attr_accessor :script
|
9
11
|
attr_accessor :asset_id
|
@@ -46,6 +48,22 @@ module OpenAssets
|
|
46
48
|
@asset_definition.divisibility
|
47
49
|
end
|
48
50
|
|
51
|
+
# convert to hash object.
|
52
|
+
def to_hash
|
53
|
+
address = script_to_address(@script)
|
54
|
+
{
|
55
|
+
'address' => address,
|
56
|
+
'oa_address' => address.nil? ? nil : address_to_oa_address(address),
|
57
|
+
'script' => @script.to_payload.bth,
|
58
|
+
'amount' => satoshi_to_coin(@value),
|
59
|
+
'asset_id' => @asset_id,
|
60
|
+
'asset_quantity' => @asset_quantity.to_s,
|
61
|
+
'asset_amount' => asset_amount.to_s,
|
62
|
+
'account' => @account,
|
63
|
+
'asset_definition_url' => @asset_definition_url
|
64
|
+
}
|
65
|
+
end
|
66
|
+
|
49
67
|
private
|
50
68
|
|
51
69
|
@@definition_cache = {}
|
@@ -16,6 +16,13 @@ module OpenAssets
|
|
16
16
|
def initialize(out_point, output)
|
17
17
|
@out_point = out_point
|
18
18
|
@output = output
|
19
|
+
@confirmations = nil
|
20
|
+
end
|
21
|
+
|
22
|
+
# convert to hash.
|
23
|
+
def to_hash
|
24
|
+
return {} if @output.nil?
|
25
|
+
{'txid' => @out_point.hash, 'vout' => @out_point.index, 'confirmations' => @confirmations}.merge(@output.to_hash)
|
19
26
|
end
|
20
27
|
|
21
28
|
end
|
data/lib/openassets/version.rb
CHANGED
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.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- azuchi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bitcoin-ruby
|