Client

在 regtest 模式下確認交易

  • October 22, 2020

我正在 regtest 上測試一些錢包功能。這是到目前為止的順序:

cash-cli -regtest generate 101
cash-cli -regtest getbalance
500.00000000

cash-cli -regtest getnewaddress newAddress1
yeAPxkjsNk5RZnAyfHM6cjCtKM7oRUvhzX

cash-cli -regtest  sendtoaddress getrawtransaction 148b8ced78037cb8fe3b32b8814dbf6736c144448671a86da548bbdb5670750a 1
//...
{
     "value": 2.00000000,
     "valueSat": 200000000,
     "n": 0,
     "scriptPubKey": {
       "asm": "OP_DUP OP_HASH160 c3bc1c481a15343ceb27d45d950c8770b7a0be1c OP_EQUALVERIFY OP_CHECKSIG",
       "hex": "76a914c3bc1c481a15343ceb27d45d950c8770b7a0be1c88ac",
       "reqSigs": 1,
       "type": "pubkeyhash",
       "addresses": [
         "yeAPxkjsNk5RZnAyfHM6cjCtKM7oRUvhzX"
       ]
     }
   }, 
//...

dash-cli -regtest gettxout 148b8ced78037cb8fe3b32b8814dbf6736c144448671a86da548bbdb5670750a 0 false
//returns nothing as the transaction is not confirmed. Returns result if we change flag to true

如何在 regtest 模式下將交易設置為已確認,以便dash-cli -regtest <txid> <outid> false將交易輸出作為有效輸出返回?

通過將交易包含在一個塊中來確認交易。這意味著你必須探勘一個包含交易的區塊。您可以使用generate命令執行此操作。

我正在bitcoind與 Bitcore-node 一起執行,我遇到了同樣的問題。我向自己發送了 250 筆交易,但我從 BWC/BWS 獲得的餘額是:

{
 "totalAmount": 166250000000,
 "lockedAmount": 0,
 "totalConfirmedAmount": 0,
 "lockedConfirmedAmount": 0,
 "availableAmount": 166250000000,
 "availableConfirmedAmount": 0,
 "byAddress": [
   {
     "address": "mvaTRJ63NJrZ3qaZW1AbfVzMsei5HCiupb",
     "path": "m/0/0",
     "amount": 166250000000
   }
 ]
}

顯然,bitcoind將在記憶體中保存一個記憶體,並且需要一些時間(或更多操作)來釋放它,將其內容傳遞給數據庫。

當您關閉程序時(例如,使用 CTRL+C 或 CMD+C),您將看到如下消息:

2020-10-22T12:23:57Z FlushStateToDisk: write coins cache to disk (250 coins, 34kB) started 
2020-10-22T12:23:57Z FlushStateToDisk: write coins cache to disk (250 coins, 34kB) completed (0.05s)

然後,Bitcore-node 將同步並將所有內容保存在 MongoDb 中。因此,如果您關閉該 bitcoind過程然後重新啟動,您的交易應該得到確認。

這正是我所做的:

  1. bitcoind以真實測試模式啟動:

bitcoind -printtoconsole -regtest -fallbackfee=0.00001 2. 啟動 Bitcore 節點。我假設您已將其配置為指向您的 regtest 節點。

npm run node 3. 為自己生成 250 筆交易:

bitcoin-cli -regtest generatetoaddress 250 "mvaTRJ63NJrZ3qaZW1AbfVzMsei5HCiupb" 4. 等待 Bitcore 與bitcoind. 5. bitcoind使用 CTRL+C(或 CMD+C)關閉。 6. 使用 CTRL+C(或 CMD+C)關閉 Bitcore 節點。 7. 重啟bitcoind和Bitcore-node。 8. 繁榮。使用 BWC 和 BWS 獲取錢包餘額,我現在收到以下資訊:

{
"totalAmount":166250000000,
"lockedAmount":0,
"totalConfirmedAmount":166250000000,
"lockedConfirmedAmount":0,
"availableAmount":166250000000,
"availableConfirmedAmount":166250000000,
"byAddress":[
 {
  "address":"mvaTRJ63NJrZ3qaZW1AbfVzMsei5HCiupb",
  "path":"m/0/0",
  "amount":166250000000
 }
]
}

引用自:https://bitcoin.stackexchange.com/questions/78644