TXEDITORを使ってデータアウトプット(OP_RETURN)トランザクションを作る
今回はOP_RETURN
前回はトランザクション作成ツール「TXEDITOR」を使ってマルチシグネチャトランザクションを作成しました。今回はOP_RETURNトランザクションを作ります。
OP_RETURNトランザクションのscript
OP_RETURN scriptはOP_RETURN <data>
です。
TXEDITORによるトランザクション作成 (P2PKH to OP_RETURN)
1.事前準備
(1) bitcore-libインストール
$ mkdir /tmp/txeditor $ cd /tmp/txeditor $ npm install bitcore-lib $ vi new_address.js
(2) 新規アドレス作成JS作成 (new_address.js)
var bitcore = require('bitcore-lib'); var network = 'testnet'; var privateKey = new bitcore.PrivateKey(network); console.log("Private Key : " + privateKey.toString()); console.log("Private Key (WIF) : " +privateKey.toWIF()); console.log("Public Key : " + privateKey.toPublicKey().toString()); console.log("Bitcoin Address : " + privateKey.toPublicKey().toAddress().toString());
(3) 送信元アドレス作成
$ node new_address.js Private Key : ad6d5e5d3026295a72278643216923eaab0fc15be9edff2bd0eb11191164a006 Private Key (WIF) : cTPpbmM8AgdnPa3LmjwgRaLKwFCy7HNSo5EgNikUKGRTeANcL3qD Public Key : 02179153f2c204e1da5009d0a8fd5cc1b77d304c9f6baf78d46a5e5fdf719f9d5a Bitcoin Address : msnignvjGzqWm4jGaQW6dBH2DuF7jCaMmi
以下サイトから送信元アドレスを入力するとTestnetで使えるBitcoinがもらえます
2.送信元のUTXO取得
UTXOはIndieSquare APIを利用して取得します。
$ curl https://apitestnet.indiesquare.me/v2/addresses/msnignvjGzqWm4jGaQW6dBH2DuF7jCaMmi/utxos [ { "scriptPubKey":"76a914869cce31ac6d760840109da55bd1957c82fbb59588ac", "vout":1, "confirmations":0, "txid":"e0022d1916acad2115a9f087af767d1e1e29f3f33d74b8b44e7999f5c0c8e722", "amount":0.88 } ]
3.TXEDITOR (Script)を入力
- Script = Signature + Hash Type<改行>48656c6c6f⭐
#48656c6c6fはHelloです。http://string-functions.com/string-hex.aspx
4.TXEDITOR (Transactionタブ)を入力
- txins[0].outpoint.hash = utxoのtxid
- txins[0].outpoint.index = utxoのvout
- txins[0].signature_script = utxoのscriptPubKey
- txouts[0].value = utxo.amount * 100000000 - 100000 = 87900000
- txouts[0].pk_script = Script.hex
5.TXEDITOR (Signature(HASHTYPE_ALL))を入力
- Private key (WIF/HEX) = 送信元のPrivate Key (WIF)
6.TXEDITOR (Script)を入力
- Script = Signature + Hash Type<改行>送信元のPublic Key
7.TXEDITOR (Transactionタブ)を入力
- txins[0].signature_script = Script.Hex
8.decodeRawTransaction実行
確認のために、decodeRawTransactionを実行
curl -H "Content-Type: application/json" -X POST -d '{"tx": "010000000122e7c8c0f599794eb4b8743df3f3291e1e7d76af87f0a91521adac16192d02e0010000006a473044022006d2c87e47c690b1a06b9ff5e47161f051289bb8247eb60d9c7af82471e26d20022059b5246b6c795914e25fbf7a95b8c4cc8584a791b1f1e4ec06fb6e0fdeb142ff012102179153f2c204e1da5009d0a8fd5cc1b77d304c9f6baf78d46a5e5fdf719f9d5affffffff01603f3d0500000000076a0548656c6c6f00000000"}' https://apitestnet.indiesquare.me/v2/transactions/decode
レスポンス
{ "txid":"67ba9bcd714c07ca8d2355bf617bceefd5e89271c93ceab8c36707ae408d57b8", "size":173, "version":1, "locktime":0, "vin":[ { "txid":"e0022d1916acad2115a9f087af767d1e1e29f3f33d74b8b44e7999f5c0c8e722", "vout":1, "scriptSig":{ "asm":"3044022006d2c87e47c690b1a06b9ff5e47161f051289bb8247eb60d9c7af82471e26d20022059b5246b6c795914e25fbf7a95b8c4cc8584a791b1f1e4ec06fb6e0fdeb142ff[ALL] 02179153f2c204e1da5009d0a8fd5cc1b77d304c9f6baf78d46a5e5fdf719f9d5a", "hex":"473044022006d2c87e47c690b1a06b9ff5e47161f051289bb8247eb60d9c7af82471e26d20022059b5246b6c795914e25fbf7a95b8c4cc8584a791b1f1e4ec06fb6e0fdeb142ff012102179153f2c204e1da5009d0a8fd5cc1b77d304c9f6baf78d46a5e5fdf719f9d5a" }, "sequence":4294967295 } ], "vout":[ { "value":0.879, "n":0, "scriptPubKey":{ "asm":"OP_RETURN 48656c6c6f", "hex":"6a0548656c6c6f", "type":"nulldata" } } ] }
9.broadcast実行
broadcast実行
curl -H "Content-Type: application/json" -X POST -d '{"tx": "010000000122e7c8c0f599794eb4b8743df3f3291e1e7d76af87f0a91521adac16192d02e0010000006a473044022006d2c87e47c690b1a06b9ff5e47161f051289bb8247eb60d9c7af82471e26d20022059b5246b6c795914e25fbf7a95b8c4cc8584a791b1f1e4ec06fb6e0fdeb142ff012102179153f2c204e1da5009d0a8fd5cc1b77d304c9f6baf78d46a5e5fdf719f9d5affffffff01603f3d0500000000076a0548656c6c6f00000000"}' https://apitestnet.indiesquare.me/v2/transactions/broadcast
レスポンス
{ "txid":"67ba9bcd714c07ca8d2355bf617bceefd5e89271c93ceab8c36707ae408d57b8" }
9.broadcast実行結果
送信できました。
https://www.blocktrail.com/tBTC/tx/67ba9bcd714c07ca8d2355bf617bceefd5e89271c93ceab8c36707ae408d57b8
メッセージ「Hello」も表示されています。
OP_RETURNトランザクションはUTXOにならないので(消費できないので)、今回はこれでおしまいです。