bitcoind: 挖矿节点(服务器)
bitcoin-cli:客户端,通过rpc命令调用 bitcoind功能 (命令不熟的话记得 -help 功能多用)
本地测试链第一次交易(win):
1:启动本地区块链:bitcoind.exe -regtest
2: 生成一个钱包地址(用来接收即将挖出的币):bitcoin-cli.exe -regtest getnewaddress wystan(随便取个名字), 得到地址 bcrt1qc9xnws43p3mfqayddejslk472vcfkp328fl44j
3: 生成500币(精通比特币书上的generate方法被弃用了):bitcoin-cli.exe -regtest generatetoaddress 500 bcrt1qc9xnws43p3mfqayddejslk472vcfkp328fl44j(上一步产生的地址)
4:生成另外一个钱包地址用来接收交易:bitcoin-cli.exe -regtest getnewaddress alika -> bcrt1qqf7war6d9y9qff9vcf655ywcnjagaefh56eegv
5:创建交易步骤:
①:首先查看 bcrt1qc9xnws43p3mfqayddejslk472vcfkp328fl44j 钱包的币的 txid: bitcoin.exe -regtest listunspent , 在返回的里面随意选取一个txid: 1be178afc8054ff08cb9d77ca835e13515a36896d5944de2d15a9ddba39deeff (我选的这个里面有50个币)
②:创建交易 bitcoin-cli.exe -regtest createrawtransaction "[{\"txid\":\"1be178afc8054ff08cb9d77ca835e13515a36896d5944de2d15a9ddba39deeff\",\"vout\":0}]" "[{\"bcrt1qqf7war6d9y9qff9vcf655ywcnjagaefh56eegv\":10.0},{\"bcrt1qc9xnws43p3mfqayddejslk472vcfkp328fl44j\":39.9999}]" ,(ps:这里特别注意 输出的币加起来一定不能小于 输入txid里面 的币 太少,10 + 39.9999 < 50 这里至少一点点,缺省的算交易费,如果交易费高了(1个也不行),后续的这个交易是不能广播的,会提示absurdly-high-fee 错误)> 0200000001ffee9da3db9d5ad1e24d94d59668a31535e135a87cd7b98cf04f05c8af78e11b0000000000ffffffff0200ca9a3b00000000160014027cee8f4d290a04a4acc2754a11d89cba8ee537f0006bee00000000160014c14d3742b10c7690748d6e650fdabe53309b062a00000000
6: 签名交易步骤:
①: 首先获取 输入钱包的私钥:bitcoin-cli.exe dumpprivkey bcrt1qc9xnws43p3mfqayddejslk472vcfkp328fl44j -> cR3aJwfQ2bg3vRVwTifkwuZmRpz267djwEASXXdxfHFVZwMhMSce
②: 签名交易 bitcoin-cli.exe -regtest signrawtransactionwithkey 0200000001ffee9da3db9d5ad1e24d94d59668a31535e135a87cd7b98cf04f05c8af78e11b0000000000ffffffff0200ca9a3b00000000160014027cee8f4d290a04a4acc2754a11d89cba8ee537f0006bee00000000160014c14d3742b10c7690748d6e650fdabe53309b062a00000000 "[\"cR3aJwfQ2bg3vRVwTifkwuZmRpz267djwEASXXdxfHFVZwMhMSce\"]"
->02000000000101ffee9da3db9d5ad1e24d94d59668a31535e135a87cd7b98cf04f05c8af78e11b0000000000ffffffff0200ca9a3b00000000160014027cee8f4d290a04a4acc2754a11d89cba8ee537f0006bee00000000160014c14d3742b10c7690748d6e650fdabe53309b062a024730440220437807c4868bc784e77e49d091078d133b7c8dd436c1a31a927ba0ca252585b702203007c163117ab80ec3c614f8466969314d41b2c2c68a020e21665dc78d9c5db1012102430f4841771cd0605bca2283e998cfeb86100d0d6edeef795e4f8e81a451f95200000000
7:广播交易:
bitcoin-cli.exe -regtest sendrawtransaction 02000000000101ffee9da3db9d5ad1e24d94d59668a31535e135a87cd7b98cf04f05c8af78e11b0000000000ffffffff0200ca9a3b00000000160014027cee8f4d290a04a4acc2754a11d89cba8ee537f0006bee00000000160014c14d3742b10c7690748d6e650fdabe53309b062a024730440220437807c4868bc784e77e49d091078d133b7c8dd436c1a31a927ba0ca252585b702203007c163117ab80ec3c614f8466969314d41b2c2c68a020e21665dc78d9c5db1012102430f4841771cd0605bca2283e998cfeb86100d0d6edeef795e4f8e81a451f95200000000
-> ec8172fd0a35ab758f26bee3f4ead6eb2b9a8a47574305150f7bdee7f0b3eca2(这步成功后通过bitcoin-cli.exe -regtest getrawmempool 这个命令就可以查询到待写入区块的交易了)
8:将交易写入区块步骤:
①:创建一个新地址bitcoin-cli.exe -regtest getnewaddress ak -> bcrt1qp2cxnejk65sa78z8kdfj30jrc3wx753k2xpvpn(当然也可以不创建就复用前面两个地址也可以)
②:生成一个新块:bitcoin-cli.exe -regtest generatetoaddress 1 bcrt1qp2cxnejk65sa78z8kdfj30jrc3wx753k2xpvpn(当此块成功生成的时候就会把上面广播了待写入的交易写入区块了)
9:查询最后结果:bitcoin.exe -regtest listunspent 这个返回里面就能看到 wystan 39.9 ,alika 10 余额信息了