以太網(wǎng)和IP與TCP是如何運(yùn)作的
最近,在比特幣和比特幣現(xiàn)金社區(qū),甚至在更大的加密貨幣生態(tài)系統(tǒng)中對(duì)閃電網(wǎng)絡(luò)(Lightning Network)產(chǎn)生的諸多混淆引起了我的注意。因此,我想跟大家分享我在嚴(yán)格的網(wǎng)絡(luò)背景下對(duì)比特幣、區(qū)塊鏈以及閃電網(wǎng)絡(luò)的觀點(diǎn)。
為了理解區(qū)塊鏈與閃電網(wǎng)絡(luò)是如何運(yùn)作的,我們應(yīng)該從 Twitter 與 Reddit 充滿硝煙的戰(zhàn)場(chǎng) (并沒(méi)有產(chǎn)生好結(jié)果 )退一步,并回顧一下那些支持我們互聯(lián)網(wǎng)的網(wǎng)絡(luò)協(xié)議與系統(tǒng)。在理解了如何通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)與互聯(lián)網(wǎng)的運(yùn)作解決比特幣自身的擴(kuò)展限制后,我相信你會(huì)受益匪淺。本文我主要介紹的三個(gè)協(xié)議分別是:以太網(wǎng)(Ethernet), IP和TCP。通過(guò)了解這些協(xié)議是如何運(yùn)作的,我們就可以更好地解答很多比特幣以及所有區(qū)塊鏈中有關(guān)擴(kuò)展的問(wèn)題。 簡(jiǎn)單介紹完,讓我們開(kāi)始吧。
如今,計(jì)算機(jī)網(wǎng)絡(luò)中最常見(jiàn)的兩種數(shù)據(jù)傳輸(data transmission)的形式是廣播(broadcast)和單播(unicast)。還有其他形式例如任播(anycast)和組播(multicast),但本文將不會(huì)涉及到。我們先來(lái)定義并理解這些數(shù)據(jù)傳輸?shù)男问健?/p>
廣播指信息從網(wǎng)絡(luò)中的一個(gè)點(diǎn)傳送到所有其他點(diǎn);一對(duì)所有的數(shù)據(jù)傳輸模式。
-圖為廣播數(shù)據(jù)模式-
單播指信息從網(wǎng)絡(luò)中的一個(gè)點(diǎn)傳送到另一個(gè)點(diǎn);一對(duì)一的數(shù)據(jù)傳輸模式。
-圖為單播數(shù)據(jù)模式-
基于對(duì)以上數(shù)據(jù)傳輸形式的理解,我們很快發(fā)現(xiàn)區(qū)塊鏈交易就類似于廣播的通信形式。當(dāng)在比特幣網(wǎng)絡(luò)進(jìn)行了一筆交易時(shí),這筆交易信息就會(huì)被傳送或廣播到網(wǎng)絡(luò)中所有 連接的節(jié)點(diǎn)。也就是說(shuō),在比特幣網(wǎng)絡(luò)中,所有節(jié)點(diǎn)都必須接收并記錄下任何一筆存在或產(chǎn)生的交易。區(qū)塊鏈交易的運(yùn)作與傳統(tǒng)的以太網(wǎng)集線器(ethernet hubs) 對(duì)數(shù)據(jù)傳輸?shù)奶幚矸浅O嗨啤?/p>
過(guò)去,我們總是依賴于以太網(wǎng)集線器來(lái)進(jìn)行計(jì)算機(jī)之間的數(shù)據(jù)傳輸。顯然,我們發(fā)現(xiàn)以太網(wǎng)集線器本身的局限性導(dǎo)致它不能擴(kuò)展。 舊時(shí)的以太網(wǎng)集線器嚴(yán)格支持廣播傳輸,來(lái)自于一個(gè)接口(interface)或端口(port)的數(shù)據(jù)將會(huì)被廣播并復(fù)制到網(wǎng)絡(luò)的其他接口或端口。形象一點(diǎn)就是,想象在一個(gè)100人的網(wǎng)絡(luò)中,如果你想發(fā)送給我一張1 MB大小的圖片,那么這張1 MB大小的圖片也會(huì)相應(yīng)地需要復(fù)制99次并廣播至其他的所有 網(wǎng)絡(luò)用戶。
在比特幣網(wǎng)絡(luò)中,我們也能觀察到類似的現(xiàn)象,來(lái)自一個(gè)節(jié)點(diǎn)的數(shù)據(jù)(一次交易或一個(gè)區(qū)塊)被廣播并復(fù)制到其他所有的網(wǎng)絡(luò)節(jié)點(diǎn)。如同舊時(shí)的傳統(tǒng)以太網(wǎng)集線器,區(qū)塊鏈在實(shí)現(xiàn)數(shù)據(jù)傳輸與通訊方面可以說(shuō)是很差的媒介了。作為一名網(wǎng)絡(luò)工程師,考慮擴(kuò)展像比特幣那樣基于廣播的鏈上交易的全球支付網(wǎng)絡(luò)系統(tǒng)對(duì)我來(lái)說(shuō)是不切實(shí)際的。即使到今天,我們網(wǎng)絡(luò)工程師在跨越以太網(wǎng)和局域網(wǎng) (LAN network)時(shí)都非常小心謹(jǐn)慎,更不用說(shuō)擴(kuò)展到全球范圍了。
全面地來(lái)看,也就是說(shuō)如果我們通過(guò)像區(qū)塊鏈和以太網(wǎng)集線器那樣嚴(yán)格依靠于廣播數(shù)據(jù)傳輸來(lái)重新設(shè)計(jì)互聯(lián)網(wǎng),我們等于是要把世界上的每個(gè)人、主機(jī)和設(shè)備都集中在同一個(gè)局域網(wǎng)段(LAN segemnt)或廣播域( broadcast domain)中。那么互聯(lián)網(wǎng)將會(huì)變成一個(gè)巨大的平面局域網(wǎng), 所有 通信都將會(huì)被復(fù)制與廣播到每一臺(tái)設(shè)備。當(dāng)您打開(kāi)這篇文章閱讀時(shí),每一個(gè) 互聯(lián)網(wǎng)的其他設(shè)備都會(huì)被迫下載這篇文章。換句話說(shuō),整個(gè)互聯(lián)網(wǎng)就會(huì)戛然而止。
在計(jì)算機(jī)網(wǎng)絡(luò)中,應(yīng)用最頻繁的通信形式是依靠于單播數(shù)據(jù)傳輸,或點(diǎn)對(duì)點(diǎn)傳輸?;ヂ?lián)網(wǎng)上大部分通信都是從一臺(tái)計(jì)算機(jī)發(fā)送到另一臺(tái)計(jì)算機(jī),我們不再需要依賴于盲目的廣播傳輸數(shù)據(jù),希望接收者能夠接收或看到數(shù)據(jù)。我們能夠準(zhǔn)確地將信息發(fā)送,路由并傳遞給我們一個(gè)或多個(gè)接收方。我們前面已經(jīng)了解到在廣播網(wǎng)絡(luò)中發(fā)送1 MB大小的圖片是要被復(fù)制并廣播到網(wǎng)絡(luò)中每一位用戶的。相反,在支持單播數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)中,我們能夠明確地將圖片文件適當(dāng)?shù)貜钠瘘c(diǎn)發(fā)送到終點(diǎn)。
對(duì)我來(lái)說(shuō),閃電網(wǎng)絡(luò)是比特幣的IP層(我知道這些數(shù)據(jù)傳輸形式同時(shí)存在于以太網(wǎng)和IP中)。但是,我確實(shí)認(rèn)為這種類比有助于我們更好地理解這些復(fù)雜又抽象的概念:比特幣、閃電網(wǎng)絡(luò)以及通道 (channels)等等。
先忽略辯論雙方中持續(xù)了一段時(shí)間的有關(guān)閃電的所有解釋還有那些過(guò)于簡(jiǎn)單的定義?;c(diǎn)時(shí)間,讓我們客觀地仔細(xì)地看看閃電并確定我們所知道的。關(guān)于閃電我們知道什么?閃電網(wǎng)絡(luò)允許我們鎖定自己的比特幣并與其他人建立通道。還知道其他什么?我們可以在構(gòu)成渠道的兩點(diǎn)之間發(fā)送或接收交易。還知道其他什么?我們還可以進(jìn)一步把交易路由到正確的目的地。
了解了這些關(guān)鍵知識(shí)點(diǎn)后,我們就能發(fā)現(xiàn)閃電能使原本只支持廣播傳輸?shù)南到y(tǒng) [比特幣] 實(shí)現(xiàn)單播傳輸。對(duì)我來(lái)說(shuō),比特幣中的閃電節(jié)點(diǎn)等同于IP主機(jī),我們最終能夠執(zhí)行或發(fā)送一對(duì)一或點(diǎn)對(duì)點(diǎn)交易至其準(zhǔn)確的接收方。在傳統(tǒng)的IP協(xié)議中,我們發(fā)送接收數(shù)據(jù)包(data packets);在閃電網(wǎng)絡(luò)中,我們發(fā)送接收比特幣。IP協(xié)議使我們能夠從過(guò)去的小而原始的網(wǎng)絡(luò)擴(kuò)展成今天的全球巨頭,互聯(lián)網(wǎng)。同樣的,閃電也將能擴(kuò)展我們的全球比特幣網(wǎng)絡(luò)。
如果說(shuō)閃電節(jié)點(diǎn)可被視為IP主機(jī),我就將閃電通道視為建立好的TCP連接。舉個(gè)例子,在今天的互聯(lián)網(wǎng),當(dāng)我們嘗試連接一個(gè)網(wǎng)頁(yè),我們會(huì)打開(kāi)一個(gè)TCP連接到能讓我們下載該網(wǎng)頁(yè)HTML源代碼的網(wǎng)頁(yè)服務(wù)器。或者,當(dāng)我們下載一個(gè)torrent格式的文件,我們將會(huì)打開(kāi)TCP連接至互聯(lián)網(wǎng)中其他計(jì)算機(jī),以便于傳送torrent數(shù)據(jù)。
在閃電網(wǎng)絡(luò)中,我們與各方建立通道使其能夠像TCP那樣直接[點(diǎn)對(duì)點(diǎn)]發(fā)送與接收數(shù)據(jù)(交易)。如果說(shuō)區(qū)塊鏈?zhǔn)且蕴W(wǎng),那么閃電節(jié)點(diǎn) (Lightning Nodes)就是我們的IP,閃電通道(Lightning Channels)就是我們的TCP。
總的來(lái)說(shuō),我觀察到閃電網(wǎng)絡(luò)擁有許多與我們?cè)缫汛嬖诘闹С钟?jì)算機(jī)網(wǎng)絡(luò)的網(wǎng)絡(luò)技術(shù)與協(xié)議的相似之處,并且我認(rèn)為這是在重新設(shè)計(jì)互聯(lián)網(wǎng)。從技術(shù)的角度來(lái)看,我不認(rèn)為鏈上擴(kuò)展比特幣會(huì)有用,我擔(dān)心未來(lái)會(huì)發(fā)生類似廣播風(fēng)暴(broadcast storm)的事件。我衷心希望通過(guò)閃電網(wǎng)絡(luò)能實(shí)現(xiàn)我們新的單播傳輸方式。 更重要的是,我對(duì)比特幣的網(wǎng)絡(luò)時(shí)代充滿興奮與期待。
當(dāng)所有人的目光都集中在區(qū)塊鏈技術(shù)上的時(shí)候,我更期待閃電網(wǎng)絡(luò)。閃電是比特幣的TCP/IP 協(xié)議棧 。我們將會(huì)在閃電上執(zhí)行交易。所有東西都會(huì)建立在閃電上。閃電能夠支持我們的應(yīng)用和其他協(xié)議與層。也就是說(shuō),主要的比特幣區(qū)塊鏈會(huì)成為什么?它將會(huì)并應(yīng)該保持一個(gè)去中心化,防篡改且無(wú)法回滾的基礎(chǔ)層,為我們提供比特幣的密碼學(xué)證據(jù)。
我們社區(qū)和行業(yè)中的某些個(gè)人和組織散播恐懼并警告我們有關(guān)“閃電中心”(“l(fā)ighTIng hub”)的錯(cuò)誤信息,卻沒(méi)有意識(shí)到他們鏈上交易的擴(kuò)展方法只會(huì)將我們推向一個(gè)真正的(以太網(wǎng))中心設(shè)計(jì)的方向。如果比特幣失去了它去中心化的基層,我們將會(huì)失去比特幣。過(guò)去9年的努力將只會(huì)帶來(lái)一個(gè)龐大的中央廣播中心,僅有少數(shù)人有能力運(yùn)作這只怪物。