本文將解釋與鏈上網(wǎng)絡(luò)擴容、區(qū)塊傳播和其它主題相關(guān)的技術(shù)概念。2009年,世界上的第一個比特幣節(jié)點誕生了。在這里,節(jié)點指的是運行了可以為比特幣網(wǎng)絡(luò)提供服務(wù)的專門軟件的計算機。隨后交易將會被存儲到區(qū)塊中并向網(wǎng)絡(luò)廣而告之,這個區(qū)塊隨后將會被傳播到網(wǎng)絡(luò)上的所有節(jié)點。由于用戶對比特幣的需求不斷增加,一個區(qū)塊可能無法盡快傳播到各個節(jié)點。
通過致密區(qū)塊來擺脫傳播困境并解決其它的新問題
比特幣核心開發(fā)人員已經(jīng)認識到了上述問題,并研究出了被稱作致密區(qū)塊的解決方案。這個方案非常簡單。致密區(qū)塊方案僅公告交易的標識符列表,而不是在比特幣網(wǎng)絡(luò)上公告每一筆交易。由于幾乎所有的交易都會被每個節(jié)點所存儲,因此接收到公告信息的節(jié)點可以找到已經(jīng)識別的交易并據(jù)此構(gòu)建區(qū)塊,然后再安全地驗證區(qū)塊的有效性。如果缺少任何交易,該節(jié)點還可以從關(guān)聯(lián)節(jié)點申請這些交易的數(shù)據(jù)。致密區(qū)塊可以減少對帶寬的要求,但它會引入了一個可能的新步驟——申請缺失的交易的數(shù)據(jù)。
由于申請缺失的新交易的數(shù)據(jù)需要雙向溝通,因此它可能會造成延遲。Bitcoin Unlimited已經(jīng)計劃降低對申請缺失交易的數(shù)據(jù)的需求了。舉個例子,如果區(qū)塊需要某個節(jié)點的數(shù)據(jù),那么包含所有已知交易的布隆過濾器就會發(fā)送申請。這樣一來,發(fā)送數(shù)據(jù)的節(jié)點就可以預(yù)測到申請數(shù)據(jù)的節(jié)點缺失了哪一筆交易并將交易的標識符列表發(fā)回給后者。這樣的操作也稱Xtreme thinblocks或Xthin傳播。
毒塊攻擊延緩區(qū)塊傳播
上述協(xié)議和之前的另一篇文章中提及的Graphene協(xié)議都依賴于可傳播交易資訊的節(jié)點,并以此提高區(qū)塊傳播的效率。但如果交易數(shù)據(jù)不可用,那么這些協(xié)議最終將無法提高區(qū)塊傳播的效率。
實際上,礦工可以選擇將區(qū)塊中的交易存儲到尚未向網(wǎng)絡(luò)廣而告之的區(qū)塊,即所謂的毒塊。它不僅會使區(qū)塊傳播無法加速,而且,失敗的區(qū)塊傳播加速還會延遲實用信息的共享。因此,毒塊將會導致網(wǎng)絡(luò)上的卡頓,有些節(jié)點可能已經(jīng)更新了創(chuàng)建時間更早的某些區(qū)塊的信息,而有些區(qū)塊還需要繼續(xù)跟進。在這種情況下,毒塊更有可能成為孤塊并被網(wǎng)絡(luò)所忽略。
毒塊只能由礦工創(chuàng)建。不過,在考慮到經(jīng)濟激勵的情況下,礦工一般都不愿意創(chuàng)建毒塊。換句話說,網(wǎng)絡(luò)有著足夠的靈活性來抵制毒塊并維持網(wǎng)絡(luò)的正常運行。