比特幣交易保留比需要更多的硬幣
我有一個 JavaWebApp,它使用 bitcoinj 0.13.2 將比特幣從錢包發送到
TimerTask
. 工作開始時,我每分鐘向該地址發送 10000 satoshis。交易費用為 1000 聰。交易確認為 0。問題是我隨機得到
InsufficientMoneyException
,雖然錢包裡的可用資金比 11000 多得多,但交易需要這些資金。例如,我在 30 分鐘內成功完成了一項工作,然後我開始另一個地址到另一個地址,並且在第三次交易中我得到了異常。即使費用超過1000或確認設置> 0,我也無法理解餘額如何:0.10720419 BTC(10720419 satoshis)可以通過兩次交易10000 satoshis耗盡(我什至嘗試使用餘額為9.43673481 BTC的錢包(943673481 satoshis)並且它也已經用完幾筆交易)?
交易完成後一切正常,可用餘額正確,所以我可以開始另一筆交易,但這可能需要一分鐘以上的時間。我無法理解保留這麼多硬幣的原因(不可用)。
如果其到期確認或費用,是否有任何解決方法可以實現每分鐘交易的目標?
我使用 TestNet3 進行測試
我
walletKit.wallet().sendCoins(walletKit.peerGroup(), to, Coin.valueOf(amount))
用於發送硬幣。在觸發異常的交易之前,前一個交易處於卡住狀態 - 它僅出現在發送方交易歷史記錄中,並在 0 個通知上卡住 1-2 小時。當它收到 1 次確認時,它會出現在接收方錢包 tx 歷史記錄中,確認為 0 次,其他創建日期(時間)。Tx.ID 相同。我無法理解這種行為的原因!?目前在錢包交易歷史中我得到:
發件人:日期 - 2015 年 10 月 27 日 11:35 金額 - 0.0001 費用 - 0.00001 conf - 3 tx.id:8eee2f5e92edc0ba8ab656e9364646507158fa91f74364815c7b36ecac7fdd69;
接收方:2015 年 10 月 27 日 13:52 金額 - 0.0001 費用 - 0.00001 conf - 0 tx.id:8eee2f5e92edc0ba8ab656e9364646507158fa91f74364815c7b36ecac7fdd69。
我是比特幣和比特幣的新手,但這似乎很不尋常,我真的很想弄清楚這種行為的原因!?
這是由於確認時間的原因,您對此無能為力。在付款確認之前,它的輸出是不可支出的,因為您不能確定付款是否會確認。這包括交易的“改變”輸出。您可以嘗試保持大量可用的未使用輸出可用。
更新:您所描述的行為並不少見。在交易被包含在一個區塊中之前,它一直處於零確認狀態。您進行的每筆付款都會佔用您的一個或多個未使用的輸出並將其消耗,從而產生一個新的未使用輸出返回給您以進行“更改”。
假設您有兩個未使用的輸出,一個用於 1 個比特幣,一個用於 0.4 個比特幣,您需要向某人支付 1.2 個比特幣。您支付的款項包括未使用的輸出,將 1.2 比特幣發送給收件人,將剩餘的 0.2 比特幣返還給您。目前,你擁有的唯一比特幣是 0.2 比特幣的“零錢”輸出,還沒有得到證實。