Bitcoind
交易驗證
我執行一個 0 確認工具。要跟踪我使用的新交易:
- 比特幣getrawmempool
- 新區塊中的新交易在記憶體池中不可用(在我的客戶接受新區塊之前,我似乎沒有收到記憶體池中的所有交易)
我信任我的比特幣客戶端交易驗證流程(協議規則)。(我希望它完成所有步驟:https ://en.bitcoin.it/wiki/Protocol_rules#.22tx.22_messages )
我希望我不能保證創建新塊的客戶/人遵循了包含交易的協議規則,所以我想從我的記憶體池中檢查“失去”的交易。
我知道 6 次確認預計是“安全的”,但我想盡可能安全地進行 0 次確認(或關於新區塊的 1 次確認)。
1:在接受新區塊(本地)之前,我的 bitcoind 客戶端是否檢查了每筆交易?(確保我的(官方)客戶的記憶體池和區塊鏈中可用的每筆交易都符合協議規則)
2:如果 1. 不正確:如果新區塊中包含的交易確實符合(官方)協議規則,那麼可以使用哪些 bitcoind API 或(python)程序來驗證它們?
是的,您的客戶將完全驗證它收到的每個塊。
接受 0 確認交易的最大問題是確保攻擊者無法向您的節點發送交易,而該交易將被網路的其餘部分作為雙花丟棄。基本上,您會希望禁止直接連接到您的節點並將它們連接到受信任的節點,例如大型礦工。
這並沒有消除風險,而是在一定程度上降低了 Finney 攻擊的風險,並且攻擊者很幸運地通過大型礦工將不良交易發送給您,最終在衝突交易被探勘之前沒有將該交易放入區塊中。