这项任务我们可以在BTC Testnet上进行验证。当真正需要有纪念性意义的东西想要记录在主网Mainnet上的时候,我们可以按照同样的方法进行操作。但是就需要从交易所购买提现,过程要再复杂一些,中间还需要提现手续费等。
首先我们从测试网的水管获取到测试网的代币。
下载Bitcoin Core,在启动的快捷方式当中添加参数-testnet,之后启动图标就会变成绿色。
等待区块同步完毕,创建一个钱包,之后点击“接收”,点击“创建新的收款地址”。这样我们就获得到了一个测试网的地址。
(上图仅为样例。在后文的例子当中,领取到的测试代币在tb1qsjdrhtd9jyaz882n2kkdfwf24ekxnxh3ehtq32当中,之后我又创建了找零地址tb1qgavaaw2qtsxvh3lh77glnj0cm63t2rkvgycuvn)
之后我们可以在测试网水管的网站上填写这个地址,就可以获得到测试网的代币了。
等待测试代币到帐后,我们打开Bitcoin Core的控制台。具体位置:窗口-控制台。
我们先查看可以使用的UTXO。
listunspent
?可以看到我们现在有一笔22.70916208BTC的UTXO,是由交易f8f732ee2872ef22a277e7c4a773cd59febd58e5714a6278553ea4cd8adaac35创建的第0个输出创建的。
我们想好要创建的内容。这里我要刻下的内容是:
This is a test by KK in BJ,CHN
将其转为hex格式:
5468697320697320612074657374206279204b4b20696e20424a2c43484e
之后我们要把这个UTXO花费掉,并且创建两个输出,一个输出包含我们要刻字的内容,该输出并不包含实际的比特币,另一笔则是常规的地址转账输出,接收找零的地址为tb1qgavaaw2qtsxvh3lh77glnj0cm63t2rkvgycuvn。找零的value是原先UTXO的面额-矿工费(根据交易时的网络情况,会有建议的手续费,按照? Sat/kB计算。)
下面这行命令解析:
txid后的内容,是前面UTXO的txid,vout也一样。
data后的内容,就是要刻字的hex
后面的tb1qgavaaw2qtsxvh3lh77glnj0cm63t2rkvgycuvn是我接收找零的地址。在实际当中替换成你自己的找零地址。
这里我支付的矿工费是0.00055500BTC。所以我们填写找零金额为22.70916208-0.000555000=22.70860708
createrawtransaction '[{"txid":"f8f732ee2872ef22a277e7c4a773cd59febd58e5714a6278553ea4cd8adaac35","vout":0}]' '{"data":"5468697320697320612074657374206279204b4b20696e20424a2c43484e","tb1qgavaaw2qtsxvh3lh77glnj0cm63t2rkvgycuvn":22.70860708}'
这里有一个很重要的点。UTXO的基本特性就是不可分割。要想花费掉这个UTXO就必须花掉他所有的金额,用作交易输入。那么我们如果不设置找零接收的话,就会导致所有的UTXO包含的比特币都被用做了矿工费,这是非常危险的事情。所以一定要创建两个交易输出用作找零。手续费本身的计算方法就是交易输入的总和-交易输出的总和。
?
?然后我们对这个raw交易进行签名,组装。这里的参数内容就是上一步的输出
signrawtransactionwithwallet 020000000135acda8acda43e5578624a71e558bdfe59cd73a7c4e777a222ef7228ee32f7f80000000000ffffffff020000000000000000206a1e5468697320697320612074657374206279204b4b20696e20424a2c43484ea4955a87000000001600144759deb9405c0ccbc7f7f791f9c9f8dea2b50ecc00000000
?在最终广播交易之前,为了保险起见,我们可以使用decoderawtransaction来对要广播的交易进行最终验证。
21:54:29

decoderawtransaction 0200000000010135acda8acda43e5578624a71e558bdfe59cd73a7c4e777a222ef7228ee32f7f80000000000ffffffff020000000000000000206a1e5468697320697320612074657374206279204b4b20696e20424a2c43484ea4955a87000000001600144759deb9405c0ccbc7f7f791f9c9f8dea2b50ecc0247304402206f472a8e5970c6da36279ddc58e19fc69d42055b8694ee08334a59eccc35d6c00220627e3a0cef0bf6e4a5eaf6ca83fb8c5c554ebb2530a31deaf7ec8c3a0c56138f012103cb4b882dabc46ec69b07da7b14a5dd46bb5c60454dd9caea37691fb2887fb1e900000000
21:54:29

{
"txid": "fa342494192d3130a782158935cf287913c38c577bbc077ffa62b3dca5a35e42",
"hash": "e14594587963f3eb6261b78f872ca207768947ec4c569ed11501f34f0f3d7b1b",
"version": 2,
"size": 232,
"vsize": 151,
"weight": 601,
"locktime": 0,
"vin": [
{
"txid": "f8f732ee2872ef22a277e7c4a773cd59febd58e5714a6278553ea4cd8adaac35",
"vout": 0,
"scriptSig": {
"asm": "",
"hex": ""
},
"txinwitness": [
"304402206f472a8e5970c6da36279ddc58e19fc69d42055b8694ee08334a59eccc35d6c00220627e3a0cef0bf6e4a5eaf6ca83fb8c5c554ebb2530a31deaf7ec8c3a0c56138f01",
"03cb4b882dabc46ec69b07da7b14a5dd46bb5c60454dd9caea37691fb2887fb1e9"
],
"sequence": 4294967295
}
],
"vout": [
{
"value": 0.00000000,
"n": 0,
"scriptPubKey": {
"asm": "OP_RETURN 5468697320697320612074657374206279204b4b20696e20424a2c43484e",
"hex": "6a1e5468697320697320612074657374206279204b4b20696e20424a2c43484e",
"type": "nulldata"
}
},
{
"value": 22.70860708,
"n": 1,
"scriptPubKey": {
"asm": "0 4759deb9405c0ccbc7f7f791f9c9f8dea2b50ecc",
"hex": "00144759deb9405c0ccbc7f7f791f9c9f8dea2b50ecc",
"reqSigs": 1,
"type": "witness_v0_keyhash",
"addresses": [
"tb1qgavaaw2qtsxvh3lh77glnj0cm63t2rkvgycuvn"
]
}
}
]
}
确认无误后,我们发送此交易。
21:58:04

sendrawtransaction 0200000000010135acda8acda43e5578624a71e558bdfe59cd73a7c4e777a222ef7228ee32f7f80000000000ffffffff020000000000000000206a1e5468697320697320612074657374206279204b4b20696e20424a2c43484ea4955a87000000001600144759deb9405c0ccbc7f7f791f9c9f8dea2b50ecc0247304402206f472a8e5970c6da36279ddc58e19fc69d42055b8694ee08334a59eccc35d6c00220627e3a0cef0bf6e4a5eaf6ca83fb8c5c554ebb2530a31deaf7ec8c3a0c56138f012103cb4b882dabc46ec69b07da7b14a5dd46bb5c60454dd9caea37691fb2887fb1e900000000
21:58:04

fa342494192d3130a782158935cf287913c38c577bbc077ffa62b3dca5a35e42
https://blockstream.info/testnet/tx/fa342494192d3130a782158935cf287913c38c577bbc077ffa62b3dca5a35e42?expand
点击DETAILS的+号,我们可以看到我们已经成功刻字?
?很快,我们的交易就会被打包上链。之后经过一段时间后的交易确认,刻字成功。
|