Client
發生分叉時的比特幣客戶端行為
當分叉鏈變得比主區塊鍊長時會發生什麼?
讓我們假設剛剛變長的分叉鏈中沒有交易,所以就好像最後 n 個區塊中的每筆交易都沒有發生過。
據我了解,官方比特幣客戶端將認識到它發送的任何最近交易不再存在,並將重新廣播它們。問題是,
- 什麼年齡的交易會被重新發行?多年前的交易還會重新發行嗎?截止點是什麼?
- 是重新發出確切的交易還是創建等效的交易?即它會嘗試發送完全相同的比特幣(由於分叉,可能不再實際擁有)還是會創建基於它仍然擁有的比特幣的等效交易?如果客戶沒有足夠的比特幣怎麼辦?
編輯:既然我找不到我第一次看到它的地方,我想我也應該問:官方客戶端實際上是否會在區塊鏈分叉的情況下重新發布交易?
您發送的交易將被永遠重新發送(每 30 分鐘左右),即使它們現在已經無效而沒有機會進入鏈。發送相同的交易——不會創建新的交易。
在重組的情況下,在前一個較長鏈中“失去”的交易被移回記憶體池,條件是它們在新鏈中有效。這意味著如果輸入不再存在於新鏈中,它們就會失去。這正是“雙花攻擊”的工作原理:嘗試分叉鏈,並在兩個分支中花費硬幣。
將事務移回記憶體池的效果只是客戶端不會忘記它們(它不會重新通知它們,或者在被告知它們時從對等點下載它們),如果節點是礦工,它們將成為包含的候選者在創建的下一個塊中。
一般來說,這意味著沒有重傳:礦工和網路的其他成員盡最大努力不要忘記這些失去的交易。但是,如果失敗,並且由於某種原因(例如費用太少),交易無法生存,則最初將交易發送出去以進行重播的節點有責任。所以是的,也有重傳,但僅限於原始所有者,並且只有當它檢測到交易不在或不再在區塊鏈中時。
它始終是逐字節相同的事務,而不是使用不同輸入的等效事務。