USDT离线签名交易

本文作者:陈进坚
个人博客: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/

猜你喜欢

转载自blog.csdn.net/C_jian/article/details/103036412