迈克尔从Pablo获得了0.05亿BTC,从Kuradang获得了另外0.01亿BTC.迈克尔还希望向贝腾发送0.02500000 BTC.迈克尔收到的每笔金额都有相应的txid和其他详细信息.让我们使用
listunspent命令检查出来,然后使用命令创建一个原始事务,然后使用createrawtransaction它来signrawtransaction发送原始事务sendrawtransaction.
listunspent
格式:
$ bitcoin-cli listunspent [misconf=1] [max_number_confirmation=99999999] '''["<wallet_address>"]'''
Run Code Online (Sandbox Code Playgroud)
让我们检查迈克尔未使用的地址列表.
执行:
$ bitcoin-cli listunspent 1 99999999 '''["mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe"]'''
Run Code Online (Sandbox Code Playgroud)
结果:
[{
"txid": "12b8e7ede4992f4d30f93idj3085746951d945e39f40becebd7c290af8c2e7ad",
"vout": 1,
"address": "mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe",
"account": "micz",
"scriptPubKey": "76a9143aa28e1740a6a5a2190975b6e7f1ad67aaec9a3988ac",
"amount": 0.05000000,
"confirmations": 94,
"spendable": true
}, {
"txid": "8443bc63b65d569ff9ekwm37sy3b67b9c7c6f8f386c3cdf372b260961b64ec9fc",
"vout": 1,
"address": "mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe",
"account": "micz",
"scriptPubKey": "76a9143aa28e1740a6a5a2190975b6e7f1ad67aaec9a3988ac",
"amount": 0.01000000,
"confirmations": 93,
"spendable": true
}]
Run Code Online (Sandbox Code Playgroud)
我们在这里看到的是将50和10 mBTC分配给我们的地址mkrz的结果.... 要花费此输出,我们将创建一个新事务.
createrawtransaction
我们需要从结果中选择一些具有足够数量的块
listunspent.由于我们只需要发送0.02500000 mBTC,我认为第一个块有足够的金额来进行交易.
格式: …
我正在寻找一种在我的专用LAN/Wifi网络上模拟1000节点比特币网络的方法.
我阅读了开发人员指南:https://bitcoin.org/en/developer-examples#regtest-mode,它提到了regtest主要用于单个节点或指定节点的模式,而不是像实际网络那样的随机节点.
有些人可能会建议使用该testnet模式,但这对我没用,因为我想检查一个新的协议,因为比特币不会被testnet网络上的未知节点支持.
简单来说,我希望在我的LAN/Wifi网络中模拟一个完整的比特币网络.
我想以编程方式检测何时有人将比特币发送到某个地址。这发生在我开始使用这个docker-compose.yml文件的本地测试网上。
\n本地测试网运行后,我使用以下命令创建一个新地址
\ndocker exec -it minimal-crypto-exchange_node_1 bitcoin-cli getnewaddress\nRun Code Online (Sandbox Code Playgroud)\n假设它返回2N23tWAFEtBtTgxNjBNmnwzsiPdLcNek181。
我把这个地址放入下面的Java代码中:
\nimport org.bitcoinj.core.Address;\nimport org.bitcoinj.core.Coin;\nimport org.bitcoinj.core.NetworkParameters;\nimport org.bitcoinj.core.Transaction;\nimport org.bitcoinj.wallet.Wallet;\nimport org.bitcoinj.wallet.listeners.WalletCoinsReceivedEventListener;\n\npublic class WalletObserver {\n public void init() {\n final NetworkParameters netParams = NetworkParameters.fromID(NetworkParameters.ID_REGTEST);\n\n try {\n final Wallet wallet = Wallet.createBasic(netParams);\n\n wallet.addWatchedAddress(Address.fromString(netParams, "2N23tWAFEtBtTgxNjBNmnwzsiPdLcNek181"));\n\n wallet.addCoinsReceivedEventListener(new WalletCoinsReceivedEventListener() {\n @Override\n public void onCoinsReceived(final Wallet wallet, final Transaction transaction, final Coin prevBalance, final Coin newBalance) {\n System.out.println("Heyo!");\n }\n });\n }\n catch (Exception exception) {\n exception.printStackTrace();\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n … 我尝试使用 blockcypher 签署比特币测试网交易,但是当我发送交易时出现错误:
\n\nError building input: Error generating scriptsig when building transaction: Invalid signature: Non-canonical signature: wrong length marker\nRun Code Online (Sandbox Code Playgroud)\n\n下面是我用来创建和签署交易的完整代码
\n\nvar bitcoin = require("bitcoinjs-lib");\nvar buffer = require(\'buffer\');\nvar keys = new bitcoin.ECPair.fromWIF(\'cMvPQZiG5mLARSjxbBwMxKwzhTHaxgpTsXB6ymx7SGAeYUqF8HAT\', bitcoin.networks.testnet);\n\nvar newtx = {\n inputs: [{ addresses: [\'ms9ySK54aEC2ykDviet9jo4GZE6GxEZMzf\'] }],\n outputs: [{ addresses: [\'msWccFYm5PPCn6TNPbNEnprA4hydPGadBN\'], value: 1000 }]\n};\n\n// calling the new endpoint, same as above\n$.post(\'https://api.blockcypher.com/v1/btc/test3/txs/new\', JSON.stringify(newtx)).then(function (tmptx) {\n console.log(tmptx);\n // signing each of the hex-encoded string required to finalize the transaction\n tmptx.pubkeys = [];\n tmptx.signatures = tmptx.tosign.map(function (tosign, …Run Code Online (Sandbox Code Playgroud) bitcoin ×2
bitcoind ×2
blockchain ×2
bitcoinj ×1
blockcypher ×1
java ×1
javascript ×1
transactions ×1