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