More Related Content
Similar to ブロックチェインとOpen asset protocol (16)
More from Kindai University (15)
ブロックチェインとOpen asset protocol
- 10. Stack
Script
説明
<電子署名> <公開 > OP_DUP
OP_HASH160 <公開 ハッシュ>
OP_EQUALVERIFY
OP_CHECKSIG
スタックは空
OP_DUP OP_HASH160 <公開
ハッシュ> OP_EQUALVERIFY
OP_CHECKSIG
最初の2つの定数をスタックにプッシュする
OP_HASH160 <公開 ハッシュ>
OP_EQUALVERIFY
OP_CHECKSIG
スタックの先頭要素をコピーする
<公開 ハッシュ>
OP_EQUALVERIFY
OP_CHECKSIG
スタックの先頭をsha256,RIPEMD160で
ダブルハッシュする
OP_EQUALVERIFY
OP_CHECKSIG
scriptPubKeyの公開 Hash値をスタック
にプッシュする
OP_CHECKSIG
スタックの先頭2要素を取り出して等しいこと
をチェック
スタックの先頭2要素を取り出し、公開 から
電子署名の検証を行う
- 11. #bitcoind へのアクセス
require 'bitcoin'
require 'net/http'
require 'uri'
require 'json'
require 'ffi'
USER=ユーザ
PW=パスワード
HOST="localhost"
PORT=8332
#ネットワーク
Bitcoin.network = :bitcoin
#bitcoindへのHTTPアクセスするメソッド
def bitcoind(method,param)
begin
http = Net::HTTP.new(HOST, PORT)
request = Net::HTTP::Post.new('/')
request.basic_auth(USER,PW)
request.content_type = 'application/json'
request.body = {method: method, params: param, id: 'jsonrpc'}.to_json
JSON.parse(http.request(request).body)["result"]
rescue => e
puts "bitcoind http access error :"+e.to_s
end
end
#生のトランザクションを得る
raw_transaction=->txid{bitcoind("getrawtransaction",[txid])}
#トランザクションオブジェクトを得る
transaction=->txid{Bitcoin::Protocol::Tx.new([raw_transaction[txid]].pack("H*"))}
- 14. Open Asset Protocol
カラードコインの標準的な実装
Open Asset Address
• カラーを認識できないワレットに送金しないようにする
例:akJ3bcrZmDB478sMn4SRmnoUPhWHrdwWqH4
Asset ID
• カラーを識別するID
例:Adj1tkK9zYC6WKsD5ib9Vyp127KQaJt7Dd
Asett Quantity
• 送金されるアセットの数(アセットは単位が存在する)符号なし整数