如果全節點不檢查雙花或故意讓雙花 TX 通過,然後這個全節點中繼交易會發生什麼?
我正在通過普林斯頓加密課程學習比特幣和區塊鏈技術,它提到完整節點進行以下檢查:
i) 交易對目前區塊鏈有效,
ii) 腳本是否匹配白名單,
iii) 之前從未見過交易,並且
iv)與其他人不衝突(避免雙重花費)。
但是,講師還提到這些檢查並未在節點上強制執行。假設一個完整的節點可能有一套完整的 UTXO,但仍然決定中繼之前已經花費的事務(實際上忽略了 TX 不在 UTXO 池中的事實),最終這個 TX 被中繼並使得它變成一個塊。既然礦工信任這些節點來驗證交易,那 TX 不會被放入共識鏈嗎?
我了解,只有在區塊最終出現在長期共識分支上時,才能聲明/收集挖礦過程(POW)和由此產生的區塊獎勵,但這並不能保護惡意節點行為,因為我已經解釋過礦工不這樣做’ t 檢查雙花。
由於礦工信任這些節點來驗證交易,……因為礦工不檢查雙重支出。
是什麼讓你這麼想?礦工也是節點;它們是節點的子集。礦工仍然接收並驗證所有交易,他們不只是盲目地相信其他節點給他們的東西。礦工被激勵檢查交易,因為包括任何無效交易意味著該塊也將無效,因此被網路上的其他節點和礦工拒絕。
如果礦工產生無效交易(例如通過包含雙花),則該塊將被視為無效。礦工不能確定什麼是有效的,什麼是無效的,節點可以。因此,當網路上的節點收到該無效塊時,他們會將其視為無效而拒絕,並且不會將其添加到他們的區塊鏈中。此外,由於礦工也是節點,其他礦工將拒絕該區塊,因此他們不會在該區塊之上進行挖礦。
如果礦工在無效區塊上挖礦,就會出現區塊鏈分叉。網路上的節點將拒絕跟隨包含無效塊的鏈,即使它有更多的工作。他們只遵循工作量最大的有效鏈,而無效的塊使該鏈無效。
不檢查雙花的礦工只連接到他們完全信任的節點。這有一個很好的理由——每個未損壞的節點都會忽略一個無效塊。因此,如果一個礦工曾經挖出一個包含雙重支出的區塊,那麼每個其他節點都會忽略該區塊,並且它永遠不會成為任何人對共識鏈的看法的一部分。