本文作者:陳進堅
個人博客:https://jian1098.github.io
CSDN博客:https://blog.csdn.net/c_jian
簡書:https://www.jianshu.com/u/8ba9ac5706b6
聯繫方式:[email protected]
USDT
的離線交易需要進行下面這8個步驟
1.查詢未花費交易
參數:最小確認區塊數、最大確認區塊數、錢包地址數組(逗號隔開)
omnicore-cli -conf=/root/.omnicore/bitcoin.conf "listunspent" 0 999999 '["mu5vgTeuMRbGDAYZuvnYcebuky7bte2XNr","mxbL6VyXG4AJXD8ncrgRRgQY2GhbjTizSC"]'
返回結果:
轉出錢包:mq8FvvycAHw8zzwarYbk8SQ8uTY3GN493u 轉入3.33333000usdt
{
"txid": "7a8614c268c3113bb5bdefd2d85c092960c957053f2abf1fb2a7f81b7a8ab72d",
"vout": 2,
"address": "mq8FvvycAHw8zzwarYbk8SQ8uTY3GN493u",
"account": "usdt-test",
"scriptPubKey": "76a9146966699024c310c454049a6eaac9c58fee02081c88ac",
"amount": 0.00000546,
"confirmations": 1,
"spendable": false,
"solvable": true
}
手續費錢包: miLt8eZ85Z4S4sDXAVbK2R1E49RgnRasgK 轉入20btc
{
"txid": "7a8614c268c3113bb5bdefd2d85c092960c957053f2abf1fb2a7f81b7a8ab72d",
"vout": 0,
"address": "miLt8eZ85Z4S4sDXAVbK2R1E49RgnRasgK",
"account": "usdt-test",
"scriptPubKey": "76a9141f00be4aee1d4534870b65c9b6c2e5276ffff0c888ac",
"amount": 19.99960000,
"confirmations": 1,
"spendable": false,
"solvable": true
},
2.構建payload
參數:propertyid
、交易的usdt
數量
omnicore-cli -conf=/root/.omnicore/bitcoin.conf "omni_createpayload_simplesend" 1 "2.22222"
返回結果:
0000000000000001000000000d3ed6b0
3.創建未簽名交易
參數:第1步的input集合
(即一個或多個輸入) 、{轉出地址:0.00000546}
這0.00000546
個比特幣是btc
交易的最小交易數,USDT
交易的本質是btc
交易中附帶的數據,沒有btc
,usdt就沒有輸入就不能轉出
omnicore-cli -conf=/root/.omnicore/bitcoin.conf "createrawtransaction" '[{"txid":"7a8614c268c3113bb5bdefd2d85c092960c957053f2abf1fb2a7f81b7a8ab72d","vout":2},{"txid":"7a8614c268c3113bb5bdefd2d85c092960c957053f2abf1fb2a7f81b7a8ab72d","vout":0}]' '{"mq8FvvycAHw8zzwarYbk8SQ8uTY3GN493u":0.00000546}'
返回結果:
01000000022db78a7a1bf8a7b21fbf2a3f0557c96029095cd8d2efbdb53b11c368c214867a0200000000ffffffff2db78a7a1bf8a7b21fbf2a3f0557c96029095cd8d2efbdb53b11c368c214867a0000000000ffffffff0122020000000000001976a9146966699024c310c454049a6eaac9c58fee02081c88ac00000000
4.給交易添加payload
參數:第3步結果、第2步結果
omnicore-cli -conf=/root/.omnicore/bitcoin.conf "omni_createrawtx_opreturn" "01000000022db78a7a1bf8a7b21fbf2a3f0557c96029095cd8d2efbdb53b11c368c214867a0200000000ffffffff2db78a7a1bf8a7b21fbf2a3f0557c96029095cd8d2efbdb53b11c368c214867a0000000000ffffffff0122020000000000001976a9146966699024c310c454049a6eaac9c58fee02081c88ac00000000" "0000000000000001000000000d3ed6b0"
返回結果:
01000000022db78a7a1bf8a7b21fbf2a3f0557c96029095cd8d2efbdb53b11c368c214867a0200000000ffffffff2db78a7a1bf8a7b21fbf2a3f0557c96029095cd8d2efbdb53b11c368c214867a0000000000ffffffff0222020000000000001976a9146966699024c310c454049a6eaac9c58fee02081c88ac0000000000000000166a146f6d6e690000000000000001000000000d3ed6b000000000
5.設置收款地址
參數:第4步結果、收款錢包地址
omnicore-cli -conf=/root/.omnicore/bitcoin.conf "omni_createrawtx_reference" "01000000022db78a7a1bf8a7b21fbf2a3f0557c96029095cd8d2efbdb53b11c368c214867a0200000000ffffffff2db78a7a1bf8a7b21fbf2a3f0557c96029095cd8d2efbdb53b11c368c214867a0000000000ffffffff0222020000000000001976a9146966699024c310c454049a6eaac9c58fee02081c88ac0000000000000000166a146f6d6e690000000000000001000000000d3ed6b000000000" "mtsZjfgk6mb2wKqzt76rsybANpys25dcmi"
返回結果:
01000000022db78a7a1bf8a7b21fbf2a3f0557c96029095cd8d2efbdb53b11c368c214867a0200000000ffffffff2db78a7a1bf8a7b21fbf2a3f0557c96029095cd8d2efbdb53b11c368c214867a0000000000ffffffff0322020000000000001976a9146966699024c310c454049a6eaac9c58fee02081c88ac0000000000000000166a146f6d6e690000000000000001000000000d3ed6b022020000000000001976a914927f8a23044bf2f4d2231ec0d40c844da44216fe88ac00000000
6.設置找零和手續費
這裏的找零和手續費指的是比特幣
參數:第5步結果、第一步的輸入列表(json
格式,注意amount
要改成value
)、btc
找零地址(可以設定爲第一步中的地址)、交易手續費(設置太低會被視爲塵埃交易而被丟棄)
omnicore-cli -conf=/root/.omnicore/bitcoin.conf "omni_createrawtx_change" "01000000022db78a7a1bf8a7b21fbf2a3f0557c96029095cd8d2efbdb53b11c368c214867a0200000000ffffffff2db78a7a1bf8a7b21fbf2a3f0557c96029095cd8d2efbdb53b11c368c214867a0000000000ffffffff0322020000000000001976a9146966699024c310c454049a6eaac9c58fee02081c88ac0000000000000000166a146f6d6e690000000000000001000000000d3ed6b022020000000000001976a914927f8a23044bf2f4d2231ec0d40c844da44216fe88ac00000000" '[{"txid":"7a8614c268c3113bb5bdefd2d85c092960c957053f2abf1fb2a7f81b7a8ab72d","vout":2,"scriptPubKey":"76a9146966699024c310c454049a6eaac9c58fee02081c88ac","value":0.00000546},{"txid":"7a8614c268c3113bb5bdefd2d85c092960c957053f2abf1fb2a7f81b7a8ab72d","vout":0,"scriptPubKey":"76a9141f00be4aee1d4534870b65c9b6c2e5276ffff0c888ac","value":19.99960000}]' "miLt8eZ85Z4S4sDXAVbK2R1E49RgnRasgK" 0.0004
返回結果:
01000000022db78a7a1bf8a7b21fbf2a3f0557c96029095cd8d2efbdb53b11c368c214867a0200000000ffffffff2db78a7a1bf8a7b21fbf2a3f0557c96029095cd8d2efbdb53b11c368c214867a0000000000ffffffff045e593477000000001976a9141f00be4aee1d4534870b65c9b6c2e5276ffff0c888ac22020000000000001976a9146966699024c310c454049a6eaac9c58fee02081c88ac0000000000000000166a146f6d6e690000000000000001000000000d3ed6b022020000000000001976a914927f8a23044bf2f4d2231ec0d40c844da44216fe88ac00000000
7.簽名交易
最後兩步直接用比特幣的命令即可,但是即使是最新版的omnicored
程序都是基於老版本的bitcoind
(0.13.2),所以無法使用signrawtransactionwithkey
方法,只能使用舊版的signrawtransaction
方法
參數:第6步結果、輸入列表、以及輸入列表中地址對應的私鑰
omnicore-cli -conf=/root/.omnicore/bitcoin.conf "signrawtransaction" "01000000022db78a7a1bf8a7b21fbf2a3f0557c96029095cd8d2efbdb53b11c368c214867a0200000000ffffffff2db78a7a1bf8a7b21fbf2a3f0557c96029095cd8d2efbdb53b11c368c214867a0000000000ffffffff045e593477000000001976a9141f00be4aee1d4534870b65c9b6c2e5276ffff0c888ac22020000000000001976a9146966699024c310c454049a6eaac9c58fee02081c88ac0000000000000000166a146f6d6e690000000000000001000000000d3ed6b022020000000000001976a914927f8a23044bf2f4d2231ec0d40c844da44216fe88ac00000000" '[{"txid":"7a8614c268c3113bb5bdefd2d85c092960c957053f2abf1fb2a7f81b7a8ab72d","vout":2,"scriptPubKey":"76a9146966699024c310c454049a6eaac9c58fee02081c88ac","value":0.00000546},{"txid":"7a8614c268c3113bb5bdefd2d85c092960c957053f2abf1fb2a7f81b7a8ab72d","vout":0,"scriptPubKey":"76a9141f00be4aee1d4534870b65c9b6c2e5276ffff0c888ac","value":19.99960000}]' '["92a4LrHSVUqvFSn6fxQKgoEL6wRJjkYy54vqNXVe5tRupQusmHZ","93QsgtSBGBih7bGYCPvkuig9wKaMDpQXLsVYCWnD6aLovP2yXLn"]'
返回結果:
{
"hex": "01000000022db78a7a1bf8a7b21fbf2a3f0557c96029095cd8d2efbdb53b11c368c214867a020000008b48304502210093ee76029c94f4d25c1e31f03940ab2eb4144a5a064d6088f33e3b0190e2f7ee02201724e427fe3158cadb4334f9ea90d279dfbe0b0b275ca58db94058ee4b76b7a6014104616a75154fb4ee49c6e18900c50c248f96a2b1b92f0233aa2600677390628372914181affbe0e5490c9387f428abc8047499c3034a88eea0f9b5368a2a969004ffffffff2db78a7a1bf8a7b21fbf2a3f0557c96029095cd8d2efbdb53b11c368c214867a000000008b483045022100dd08f9f493f06f67b363d245bcd2afbe5cb191fc2a7636057d3b7fe6c480968802202dfee669eac6e2e79ea6e645080f5f379b1a5e74d77b6ee3b79524bb737e81dc014104b654748d41d8d81ee6849188c569b6686d22bdf17abfa55a69b8ea40d6e57e5134bbacdcd68bdb668ea2df6428aa5129cd28f04027a18f63066d9952caaf8a09ffffffff045e593477000000001976a9141f00be4aee1d4534870b65c9b6c2e5276ffff0c888ac22020000000000001976a9146966699024c310c454049a6eaac9c58fee02081c88ac0000000000000000166a146f6d6e690000000000000001000000000d3ed6b022020000000000001976a914927f8a23044bf2f4d2231ec0d40c844da44216fe88ac00000000",
"complete": true
}
8.廣播交易
參數:第7步結果的hex
值
omnicore-cli -conf=/root/.omnicore/bitcoin.conf "sendrawtransaction" "01000000022db78a7a1bf8a7b21fbf2a3f0557c96029095cd8d2efbdb53b11c368c214867a020000008b48304502210093ee76029c94f4d25c1e31f03940ab2eb4144a5a064d6088f33e3b0190e2f7ee02201724e427fe3158cadb4334f9ea90d279dfbe0b0b275ca58db94058ee4b76b7a6014104616a75154fb4ee49c6e18900c50c248f96a2b1b92f0233aa2600677390628372914181affbe0e5490c9387f428abc8047499c3034a88eea0f9b5368a2a969004ffffffff2db78a7a1bf8a7b21fbf2a3f0557c96029095cd8d2efbdb53b11c368c214867a000000008b483045022100dd08f9f493f06f67b363d245bcd2afbe5cb191fc2a7636057d3b7fe6c480968802202dfee669eac6e2e79ea6e645080f5f379b1a5e74d77b6ee3b79524bb737e81dc014104b654748d41d8d81ee6849188c569b6686d22bdf17abfa55a69b8ea40d6e57e5134bbacdcd68bdb668ea2df6428aa5129cd28f04027a18f63066d9952caaf8a09ffffffff045e593477000000001976a9141f00be4aee1d4534870b65c9b6c2e5276ffff0c888ac22020000000000001976a9146966699024c310c454049a6eaac9c58fee02081c88ac0000000000000000166a146f6d6e690000000000000001000000000d3ed6b022020000000000001976a914927f8a23044bf2f4d2231ec0d40c844da44216fe88ac00000000"
返回結果:
5c67fc9eb0cdce9af1aa4f4a9f134b1fa98bed68f03a186b2b7065227576afe3
參考文檔:
https://github.com/OmniLayer/omnicore/blob/master/src/omnicore/doc/rpc-api.md
https://gist.github.com/dexX7/352670c990ebf9ea31d6346a1519eb52
http://cw.hubwiz.com/card/c/omni-rpc-api/