Doublespend
當兩筆交易,一筆雙花另一筆到達同一個區塊時會發生什麼?
讓我們進行 2 筆交易。第二個是複制第一個的輸入。
兩者的費用都很高,因此礦工在通過驗證之前選擇將它們包含在同一個區塊中(因為如果交易由於費用太低而未包含在區塊中,則驗證交易毫無意義)。
哪個交易會因為不包含在區塊中而被拒絕?第一個的費用比第二個略低,或者因為它是相同的塊,第二個?
比特幣核心中的程式碼在哪里處理這個?我的意思是哪些源文件和行?
哪個交易會被拒絕?第一個的費用比第二個略低,或者因為它是相同的塊,第二個?
一般來說,礦工會選擇費用最高的交易,但他們沒有義務這樣做。事實上,如果他們不想,他們不需要探勘你的任何交易。
兩者的費用都很高,因此礦工選擇將它們包含在同一個區塊中。
不,礦工必須選擇 1 或 0而不是兩者都選,否則他們創建的區塊如果包含雙花,則將無效。無效的塊將浪費礦工的時間和金錢,因為它們將被網路拒絕。
比特幣核心中的程式碼在哪里處理這個?
抱歉,無法提供具體位置。
塊中包含的每筆交易都必須有效才能使該塊有效。一個輸入只能使用一次,任何再次使用的嘗試都是無效的。
因此,在您的範例中,整個塊將無效,因此被網路拒絕。聽到並嘗試驗證該塊的節點將到達第二個交易,看到它是無效的(因為它的一個輸入已經被花費),並拒絕整個塊。
一般來說,礦工會選擇支付給他們最多的交易。用於中繼交易的比特幣核心規則與此分開,因此它們在現實世界中並沒有太大影響。礦工可以輕鬆地執行他們自己修改過的軟體,以他們喜歡的方式建構塊。即使一筆交易沒有標記為 RBF,也沒有什麼能阻止礦工將他們聽說的更高報酬的交易納入其中。