Skip to content

Latest commit

 

History

History
459 lines (350 loc) · 14 KB

2.Regtest 模式.md

File metadata and controls

459 lines (350 loc) · 14 KB

Regtest 模式

Docker 运行

mkdir /tmp/bitcoin_data
cat > /tmp/bitcoin_data/bitcoin.conf << EOF
# bitcoin.conf
server=1
regtest=1
txindex=1

whitelist=127.0.0.1
rpcallowip=127.0.0.1

rpcuser=rpc
rpcpassword=123456
rpcport=18443

port=18444
# end
EOF

docker run -d --name btc --restart=always -v /tmp/bitcoin_data/:/home/bitcoin/.bitcoin/ -p 18443:18443 -p 18444:18444 btc:0.17.1

Alias:

alias bitcoin-cli="docker exec --user bitcoin btc bitcoin-cli -rpcuser=rpc -rpcpassword=123456 -rpcport=18443"

RPC 接口

获取所有接口帮助文档

bitcoin-cli help

获取新地址

bitcoin-cli getnewaddress		# 默认是 p2sh-segwit 地址
2NFqee9CvjAE2txS8j7eXGPrz21QjFcoCaT

# 获取 legacy 地址
bitcoin-cli getnewaddress "" legacy
mwJvrS25GRginaVPh6D7ot9iC4ttvHU9AW

# 获取 bech32 地址
bitcoin-cli getnewaddress "" bech32
bcrt1qnddd4kr5z8yrrf6pqd4ee74qkvtk88rfgz6teq

获取区块信息

bitcoin-cli getblockhash 0
0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206

bitcoin-cli getblock 0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206
{
  "hash": "0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206",
  "confirmations": 1,
  "strippedsize": 285,
  "size": 285,
  "weight": 1140,
  "height": 0,
  "version": 1,
  "versionHex": "00000001",
  "merkleroot": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b",
  "tx": [
    "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"
  ],
  "time": 1296688602,
  "mediantime": 1296688602,
  "nonce": 2,
  "bits": "207fffff",
  "difficulty": 4.656542373906925e-10,
  "chainwork": "0000000000000000000000000000000000000000000000000000000000000002",
  "nTx": 1
}

查看区块 Hex 和 详细 JSON 数据:

bitcoin-cli getblock 0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206 0

0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000

bitcoin-cli getblock 0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206 2
{
  "hash": "0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206",
  "confirmations": 1,
  "strippedsize": 285,
  "size": 285,
  "weight": 1140,
  "height": 0,
  "version": 1,
  "versionHex": "00000001",
  "merkleroot": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b",
  "tx": [
    {
      "txid": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b",
      "hash": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b",
      "version": 1,
      "size": 204,
      "vsize": 204,
      "weight": 816,
      "locktime": 0,
      "vin": [
        {
          "coinbase": "04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73",
          "sequence": 4294967295
        }
      ],
      "vout": [
        {
          "value": 50.00000000,
          "n": 0,
          "scriptPubKey": {
            "asm": "04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f OP_CHECKSIG",
            "hex": "4104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac",
            "reqSigs": 1,
            "type": "pubkey",
            "addresses": [
              "mpXwg4jMtRhuSpVq4xS3HFHmCmWp9NyGKt"
            ]
          }
        }
      ],
      "hex": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000"
    }
  ],
  "time": 1296688602,
  "mediantime": 1296688602,
  "nonce": 2,
  "bits": "207fffff",
  "difficulty": 4.656542373906925e-10,
  "chainwork": "0000000000000000000000000000000000000000000000000000000000000002",
  "nTx": 1
}

Bitcoin 版本 v0.17 之前 getblock 只有 01 两个参数:0 返回 HEX 数据, 1 返回 JSON 数据。v0.17版本开始多了一个参数 2,返回 JSON 数据,包含交易详情。

生成区块

# 生成 101 个区块并把奖励给地址 bcrt1qnddd4kr5z8yrrf6pqd4ee74qkvtk88rfgz6teq
bitcoin-cli generatetoaddress 101 bcrt1qnddd4kr5z8yrrf6pqd4ee74qkvtk88rfgz6teq

bitcoin-cli getblockcount
101

获取余额

bitcoin-cli getbalance
50.00000000

bitcoin-cli getunconfirmedbalance
0.00000000

获取交易信息

bitcoin-cli getblockhash 101
1b0668eb0608351755a6bc93974bac4a950bae2135f66fd4ac579a0b4a06d327
➜  0.17.1 git:(master) bitcoin-cli getblock 1b0668eb0608351755a6bc93974bac4a950bae2135f66fd4ac579a0b4a06d327
{
  "hash": "1b0668eb0608351755a6bc93974bac4a950bae2135f66fd4ac579a0b4a06d327",
  "confirmations": 1,
  "strippedsize": 214,
  "size": 250,
  "weight": 892,
  "height": 101,
  "version": 536870912,
  "versionHex": "20000000",
  "merkleroot": "52c96671a3aeb6a7fabb026f28fd02789d4f9d52ae95ebf0ec46004a5c2f2947",
  "tx": [
    "52c96671a3aeb6a7fabb026f28fd02789d4f9d52ae95ebf0ec46004a5c2f2947"
  ],
  "time": 1547106783,
  "mediantime": 1547106782,
  "nonce": 1,
  "bits": "207fffff",
  "difficulty": 4.656542373906925e-10,
  "chainwork": "00000000000000000000000000000000000000000000000000000000000000cc",
  "nTx": 1,
  "previousblockhash": "3e1c3e83539237e6b34e6f82b3606dd870112f898bb39b76492739024e576720"
}
➜  0.17.1 git:(master) bitcoin-cli getblock 1b0668eb0608351755a6bc93974bac4a950bae2135f66fd4ac579a0b4a06d3
➜  0.17.1 git:(master) bitcoin-cli getrawtransaction 52c96671a3aeb6a7fabb026f28fd02789d4f9d52ae95ebf0ec46004a5c2f2947
020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401650101ffffffff0200f2052a010000001600149b5adad87411c831a741036b9cfaa0b317639c690000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000
➜  0.17.1 git:(master) bitcoin-cli getrawtransaction 52c96671a3aeb6a7fabb026f28fd02789d4f9d52ae95ebf0ec46004a5c2f2947 1
{
  "txid": "52c96671a3aeb6a7fabb026f28fd02789d4f9d52ae95ebf0ec46004a5c2f2947",
  "hash": "c01980d5e6c220a51b94e68c7d04ac6da00e9f176c037fb8752c1fe228f75abb",
  "version": 2,
  "size": 169,
  "vsize": 142,
  "weight": 568,
  "locktime": 0,
  "vin": [
    {
      "coinbase": "01650101",
      "sequence": 4294967295
    }
  ],
  "vout": [
    {
      "value": 50.00000000,
      "n": 0,
      "scriptPubKey": {
        "asm": "0 9b5adad87411c831a741036b9cfaa0b317639c69",
        "hex": "00149b5adad87411c831a741036b9cfaa0b317639c69",
        "reqSigs": 1,
        "type": "witness_v0_keyhash",
        "addresses": [
          "bcrt1qnddd4kr5z8yrrf6pqd4ee74qkvtk88rfgz6teq"
        ]
      }
    },
    {
      "value": 0.00000000,
      "n": 1,
      "scriptPubKey": {
        "asm": "OP_RETURN aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf9",
        "hex": "6a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf9",
        "type": "nulldata"
      }
    }
  ],
  "hex": "020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401650101ffffffff0200f2052a010000001600149b5adad87411c831a741036b9cfaa0b317639c690000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
  "blockhash": "1b0668eb0608351755a6bc93974bac4a950bae2135f66fd4ac579a0b4a06d327",
  "confirmations": 1,
  "time": 1547106783,
  "blocktime": 1547106783
}

获取 UTXO (unspent transaction output)

bitcoin-cli listunspent
[
  {
    "txid": "745c0300c6b7261654c75667b5dff237807a1183f089416430cabf3ee638fc38",
    "vout": 0,
    "address": "bcrt1qnddd4kr5z8yrrf6pqd4ee74qkvtk88rfgz6teq",
    "label": "",
    "scriptPubKey": "00149b5adad87411c831a741036b9cfaa0b317639c69",
    "amount": 50.00000000,
    "confirmations": 101,
    "spendable": true,
    "solvable": true,
    "safe": true
  }
]

发送交易

bitcoin-cli getnewaddress		# 生成两个新地址
2N7J3NEehi1CVHzeDErB5wSHDXVZWPABSbj
2N4k92U8BbU3yn3S5YXEueKs2ovFvMf6hnc

# 发送单个地址
bitcoin-cli sendtoaddress 2N7J3NEehi1CVHzeDErB5wSHDXVZWPABSbj 10.1234
b0f99078a0ee4d1894551661817705fd7eced4597f8270a00247d6747b45395e

# 发送多个地址
bitcoin-cli sendmany "" "{\"2N7J3NEehi1CVHzeDErB5wSHDXVZWPABSbj\": 5.1234, \"2N4k92U8BbU3yn3S5YXEueKs2ovFvMf6hnc\": 20.999}"
0f8b142fc63ad2fa0b97bae333495653daafbb5d02bf5cb73b1423284680dd01

打包未确认的交易

bitcoin-cli generate 1
[
  "10d0bbc5039455288d2be2373fab0fe9e1c085f8a9c436b48c4f61334dd77469"
]

bitcoin-cli getblock 10d0bbc5039455288d2be2373fab0fe9e1c085f8a9c436b48c4f61334dd77469
{
  "hash": "10d0bbc5039455288d2be2373fab0fe9e1c085f8a9c436b48c4f61334dd77469",
  "confirmations": 1,
  "strippedsize": 512,
  "size": 766,
  "weight": 2302,
  "height": 102,
  "version": 536870912,
  "versionHex": "20000000",
  "merkleroot": "e4bc7782978f53a7894030342061c9571606c74d2dac186fd74e4f0417435ce0",
  "tx": [
    "81240ada4356e3e5a494fb2ff0fb496e8ff15f74c7984f404d2bf0764d9ec0dd",
    "b0f99078a0ee4d1894551661817705fd7eced4597f8270a00247d6747b45395e",
    "0f8b142fc63ad2fa0b97bae333495653daafbb5d02bf5cb73b1423284680dd01"
  ],
  "time": 1547109843,
  "mediantime": 1547106782,
  "nonce": 0,
  "bits": "207fffff",
  "difficulty": 4.656542373906925e-10,
  "chainwork": "00000000000000000000000000000000000000000000000000000000000000ce",
  "nTx": 3,
  "previousblockhash": "1b0668eb0608351755a6bc93974bac4a950bae2135f66fd4ac579a0b4a06d327"
}

可以看到刚才发的那两笔交易。

手动构建交易

获取 UTXO:

bitcoin-cli listunspent
[
  {
    "txid": "0f8b142fc63ad2fa0b97bae333495653daafbb5d02bf5cb73b1423284680dd01",
    "vout": 0,
    "address": "2MzVsf2yAeqdLPz6DZMiqzAobmi93TePVH7",
    "redeemScript": "00141cda5e32eebcd583530021e51f213dbf8111260a",
    "scriptPubKey": "a9144f8e25d07925fe6bd81af7501121e46ab19c5d7d87",
    "amount": 13.75413180,
    "confirmations": 1,
    "spendable": true,
    "solvable": true,
    "safe": true
  },
]

创建未签名的交易:

bitcoin-cli createrawtransaction "[{\"txid\":\"0f8b142fc63ad2fa0b97bae333495653daafbb5d02bf5cb73b1423284680dd01\",\"vout\":0}]" "[{\"2N4k92U8BbU3yn3S5YXEueKs2ovFvMf6hnc\":10.0}, {\"2MzVsf2yAeqdLPz6DZMiqzAobmi93TePVH7\":3.75}]"
020000000101dd80462823143bb75cbf025dbbafda53564933e3ba970bfad23ac62f148b0f0000000000ffffffff0200ca9a3b0000000017a9147e214dddb18e1e1d58f54d21a056612803e35aab87c00b5a160000000017a9144f8e25d07925fe6bd81af7501121e46ab19c5d7d8700000000

可以使用 decoderawtransaction 解析交易 HEX 。

签名未签名的交易:

bitcoin-cli signrawtransactionwithwallet 020000000101dd80462823143bb75cbf025dbbafda53564933e3ba970bfad23ac62f148b0f0000000000ffffffff0200ca9a3b0000000017a9147e214dddb18e1e1d58f54d21a056612803e35aab87c00b5a160000000017a9144f8e25d07925fe6bd81af7501121e46ab19c5d7d8700000000
{
  "hex": "0200000000010101dd80462823143bb75cbf025dbbafda53564933e3ba970bfad23ac62f148b0f00000000171600141cda5e32eebcd583530021e51f213dbf8111260affffffff0200ca9a3b0000000017a9147e214dddb18e1e1d58f54d21a056612803e35aab87c00b5a160000000017a9144f8e25d07925fe6bd81af7501121e46ab19c5d7d870247304402204e2e90bfcad4ae883ada361f7bc96d2a0ac79d08fc070a1bd3fc141993144b10022062248c2ad48c3a6b2d23d7234bb25b89424b042c859765eb4fd2aeb916b46a7801210291b0b2f2d83549fa8a2054944c40c0c48a579cfd6f76f5ad99c2c14f1dc3e5e100000000",
  "complete": true
}

广播交易:

bitcoin-cli sendrawtransaction 0200000000010101dd80462823143bb75cbf025dbbafda53564933e3ba970bfad23ac62f148b0f00000000171600141cda5e32eebcd583530021e51f213dbf8111260affffffff0200ca9a3b0000000017a9147e214dddb18e1e1d58f54d21a056612803e35aab87c00b5a160000000017a9144f8e25d07925fe6bd81af7501121e46ab19c5d7d870247304402204e2e90bfcad4ae883ada361f7bc96d2a0ac79d08fc070a1bd3fc141993144b10022062248c2ad48c3a6b2d23d7234bb25b89424b042c859765eb4fd2aeb916b46a7801210291b0b2f2d83549fa8a2054944c40c0c48a579cfd6f76f5ad99c2c14f1dc3e5e100000000
1e76703739a2dc34c478a2ba3e57efd879aab2f7aae07965ef4af009ae9b41ec

查看交易信息:

bitcoin-cli gettransaction 1e76703739a2dc34c478a2ba3e57efd879aab2f7aae07965ef4af009ae9b41ec
{
  "amount": 0.00000000,
  "fee": -0.00413180,
  "confirmations": 0,
  "trusted": true,
  "txid": "1e76703739a2dc34c478a2ba3e57efd879aab2f7aae07965ef4af009ae9b41ec",
  "walletconflicts": [
  ],
  "time": 1547110533,
  "timereceived": 1547110533,
  "bip125-replaceable": "no",
  "details": [
    {
      "address": "2N4k92U8BbU3yn3S5YXEueKs2ovFvMf6hnc",
      "category": "send",
      "amount": -10.00000000,
      "label": "",
      "vout": 0,
      "fee": -0.00413180,
      "abandoned": false
    },
    {
      "address": "2N4k92U8BbU3yn3S5YXEueKs2ovFvMf6hnc",
      "category": "receive",
      "amount": 10.00000000,
      "label": "",
      "vout": 0
    }
  ],
  "hex": "0200000000010101dd80462823143bb75cbf025dbbafda53564933e3ba970bfad23ac62f148b0f00000000171600141cda5e32eebcd583530021e51f213dbf8111260affffffff0200ca9a3b0000000017a9147e214dddb18e1e1d58f54d21a056612803e35aab87c00b5a160000000017a9144f8e25d07925fe6bd81af7501121e46ab19c5d7d870247304402204e2e90bfcad4ae883ada361f7bc96d2a0ac79d08fc070a1bd3fc141993144b10022062248c2ad48c3a6b2d23d7234bb25b89424b042c859765eb4fd2aeb916b46a7801210291b0b2f2d83549fa8a2054944c40c0c48a579cfd6f76f5ad99c2c14f1dc3e5e100000000"
}