摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接分析比特幣網(wǎng)絡(luò)一種去中心化點(diǎn)對(duì)點(diǎn)的網(wǎng)絡(luò)架構(gòu)原文已更新,請(qǐng)讀者前往原文閱讀比特幣采用了基于互聯(lián)網(wǎng)的點(diǎn)對(duì)點(diǎn)分布式網(wǎng)絡(luò)架構(gòu)。比特幣網(wǎng)絡(luò)可以認(rèn)為是按照比特幣協(xié)議運(yùn)行的一系列節(jié)點(diǎn)的集合。
本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)
原文鏈接:分析比特幣網(wǎng)絡(luò):一種去中心化、點(diǎn)對(duì)點(diǎn)的網(wǎng)絡(luò)架構(gòu)原文已更新,請(qǐng)讀者前往原文閱讀
比特幣采用了基于互聯(lián)網(wǎng)的點(diǎn)對(duì)點(diǎn)(P2P:peer-to-peer)分布式網(wǎng)絡(luò)架構(gòu)。
比特幣網(wǎng)絡(luò)可以認(rèn)為是按照比特幣P2P協(xié)議運(yùn)行的一系列節(jié)點(diǎn)的集合。
本文來(lái)分析下比特幣網(wǎng)絡(luò),了解它跟傳統(tǒng)中心化網(wǎng)絡(luò)的區(qū)別,以及比特幣網(wǎng)絡(luò)是如何發(fā)現(xiàn)相鄰節(jié)點(diǎn)的。
為了更好的理解P2P網(wǎng)絡(luò),我們先來(lái)看看傳統(tǒng)的中心化模型:
這是一種典型的星型(“中心化”)結(jié)構(gòu),我們常見(jiàn)B/S及C/S網(wǎng)絡(luò)架構(gòu)就是這種模型,C1 、C2 、C3等之間沒(méi)法直接的連接,C節(jié)點(diǎn)如果要連接必須要通過(guò)中心化S節(jié)點(diǎn)做為橋梁。
中心化節(jié)點(diǎn)充當(dāng)服務(wù)者、中介作用,比如我們沒(méi)有辦法把資金直接從一個(gè)人轉(zhuǎn)移給另一個(gè)人,必須通過(guò)銀行這個(gè)中介。
P2P網(wǎng)絡(luò)是指位于同一網(wǎng)絡(luò)中的每臺(tái)計(jì)算機(jī)都彼此對(duì)等,各個(gè)節(jié)點(diǎn)共同提供網(wǎng)絡(luò)服務(wù),不存在任何“特殊”節(jié)點(diǎn),每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)以扁平(flat)的拓?fù)浣Y(jié)構(gòu)相互連通。
對(duì)比中心化網(wǎng)絡(luò),在P2P網(wǎng)絡(luò)中不存在任何服務(wù)端(server)、中央化的服務(wù)。
P2P網(wǎng)絡(luò)的節(jié)點(diǎn)之間交互連接、協(xié)同,每個(gè)節(jié)點(diǎn)在對(duì)外提供服務(wù)的同時(shí)也使用網(wǎng)絡(luò)中其他節(jié)點(diǎn)所提供的服務(wù),每個(gè)節(jié)點(diǎn)即是服務(wù)端又是客戶端。
P2P網(wǎng)絡(luò)模型除應(yīng)用于比特幣網(wǎng)絡(luò),使用廣泛的BT下載就是基于P2P網(wǎng)絡(luò)。
P2P網(wǎng)絡(luò)不僅僅去除了中心化帶來(lái)的風(fēng)險(xiǎn)(中心化可能作惡),還可以提高傳輸?shù)男?。(中心化網(wǎng)絡(luò)當(dāng)能也有優(yōu)點(diǎn))
如何發(fā)現(xiàn)節(jié)點(diǎn)既然每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)都是平等的(是指在網(wǎng)絡(luò)層面上節(jié)點(diǎn)是平等的,但各節(jié)點(diǎn)在功能上可以有不同的分工, 如錢包節(jié)點(diǎn)、挖礦節(jié)點(diǎn)等),不存在任何“特殊”中心節(jié)點(diǎn),那么當(dāng)新的網(wǎng)絡(luò)節(jié)點(diǎn)啟動(dòng)后,它是如何跟其他的節(jié)點(diǎn)建立連接,從而加入到比特幣網(wǎng)絡(luò)呢?
在中心化網(wǎng)絡(luò)中,新加入的節(jié)點(diǎn)只要連接“特殊”的中心節(jié)點(diǎn)就可以加入網(wǎng)絡(luò)。
為了能夠加入到比特幣網(wǎng)絡(luò),比特幣客戶端會(huì)做一下幾件事情:
節(jié)點(diǎn)會(huì)記住它最近成功連接的網(wǎng)絡(luò)節(jié)點(diǎn),當(dāng)重新啟動(dòng)后它可以迅速與先前的對(duì)等節(jié)點(diǎn)網(wǎng)絡(luò)重新建立連接。
節(jié)點(diǎn)會(huì)在失去已有連接時(shí)嘗試發(fā)現(xiàn)新節(jié)點(diǎn)。
當(dāng)建立一個(gè)或多個(gè)連接后,節(jié)點(diǎn)將一條包含自身IP地址消息發(fā)送給其相鄰節(jié)點(diǎn)。相鄰節(jié)點(diǎn)再將此消息依次轉(zhuǎn)發(fā)給它們各自的相鄰節(jié)點(diǎn),從而保證節(jié)點(diǎn)信息被多個(gè)節(jié)點(diǎn)所接收、保證連接更穩(wěn)定。
新接入的節(jié)點(diǎn)可以向它的相鄰節(jié)點(diǎn)發(fā)送獲取地址getaddr消息,要求它們返回其已知對(duì)等節(jié)點(diǎn)的IP地址列表。節(jié)點(diǎn)可以找到需連接到的對(duì)等節(jié)點(diǎn)。
在節(jié)點(diǎn)啟動(dòng)時(shí),可以給節(jié)點(diǎn)指定一個(gè)正活躍節(jié)點(diǎn)IP, 如果沒(méi)有,客戶端也維持一個(gè)列表,列出了那些長(zhǎng)期穩(wěn)定運(yùn)行的節(jié)點(diǎn)。這樣的節(jié)點(diǎn)也被稱為種子節(jié)點(diǎn)(其實(shí)和BT下載的種子文件道理是一樣的),就可以通過(guò)種子節(jié)點(diǎn)來(lái)快速發(fā)現(xiàn)網(wǎng)絡(luò)中的其他節(jié)點(diǎn)。
節(jié)點(diǎn)通信簡(jiǎn)述比特幣節(jié)點(diǎn)通常采用TCP協(xié)議、使用8333端口與相鄰節(jié)點(diǎn)建立連接, 建立連接時(shí)也會(huì)有認(rèn)證“握手”的通信過(guò)程,用來(lái)確定協(xié)議版本,軟件版本,節(jié)點(diǎn)IP,區(qū)塊高度等。
當(dāng)節(jié)點(diǎn)連接到相鄰節(jié)點(diǎn)后,接著就開(kāi)始跟相鄰節(jié)點(diǎn)同步區(qū)塊鏈數(shù)據(jù)(輕量級(jí)錢包應(yīng)用其實(shí)不會(huì)同步所有區(qū)塊數(shù)據(jù)),節(jié)點(diǎn)們會(huì)交換一個(gè)getblocks消息,它包含本地區(qū)塊鏈最頂端的哈希值。如果某個(gè)節(jié)點(diǎn)識(shí)別出它接收到的哈希值并不屬于頂端區(qū)塊,而是屬于一個(gè)非頂端區(qū)塊的舊區(qū)塊,就說(shuō)其自身的本地區(qū)塊鏈比其他節(jié)點(diǎn)的區(qū)塊鏈更長(zhǎng),并告訴其他節(jié)點(diǎn)需要補(bǔ)充區(qū)塊,其他節(jié)點(diǎn)發(fā)送getdata消息來(lái)請(qǐng)求區(qū)塊,驗(yàn)證后更新到本地區(qū)塊鏈中。
深入淺出區(qū)塊鏈 - 系統(tǒng)學(xué)習(xí)區(qū)塊鏈,打造最好的區(qū)塊鏈技術(shù)博客
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/23937.html
摘要:引言給迷失在如何學(xué)習(xí)區(qū)塊鏈技術(shù)的同學(xué)一個(gè)指引,區(qū)塊鏈技術(shù)是隨比特幣誕生,因此要搞明白區(qū)塊鏈技術(shù),應(yīng)該先了解下比特幣。但區(qū)塊鏈技術(shù)不單應(yīng)用于比特幣,還有非常多的現(xiàn)實(shí)應(yīng)用場(chǎng)景,想做區(qū)塊鏈應(yīng)用開(kāi)發(fā),可進(jìn)一步閱讀以太坊系列。 本文始發(fā)于深入淺出區(qū)塊鏈社區(qū), 原文:區(qū)塊鏈技術(shù)學(xué)習(xí)指引 原文已更新,請(qǐng)讀者前往原文閱讀 本章的文章越來(lái)越多,本文是一個(gè)索引帖,方便找到自己感興趣的文章,你也可以使用左側(cè)...
摘要:區(qū)塊鏈作為比特幣交易的底層技術(shù),支撐了比特幣安全性和可靠性交易。而比特幣的一舉一動(dòng)無(wú)形中提高了人們對(duì)區(qū)塊鏈的關(guān)注度。當(dāng)前,區(qū)塊鏈技術(shù)正處于階段,技術(shù)服務(wù)商將是該階段最先受益的,其次為金融供應(yīng)鏈和文娛領(lǐng)域應(yīng)用場(chǎng)景較為成熟的公司。區(qū)塊鏈作為比特幣交易的底層技術(shù),支撐了比特幣安全性和可靠性交易。而比特幣的一舉一動(dòng)無(wú)形中提高了人們對(duì)區(qū)塊鏈的關(guān)注度。針對(duì)這一技術(shù)在上的價(jià)值以及方向,不少機(jī)構(gòu)認(rèn)為,將率先...
摘要:和比特幣協(xié)議有所不同的是,以太坊的設(shè)計(jì)十分靈活,極具適應(yīng)性。超級(jí)賬本區(qū)塊鏈的商業(yè)應(yīng)用超級(jí)賬本超級(jí)賬本是基金會(huì)下的眾多項(xiàng)目中的一個(gè)。證書(shū)頒發(fā)機(jī)構(gòu)負(fù)責(zé)簽發(fā)撤 showImg(https://segmentfault.com/img/bV2ge9?w=900&h=385); 從比特幣開(kāi)始 一個(gè)故事告訴你比特幣的原理及運(yùn)作機(jī)制 這篇文章的定位會(huì)比較科普,盡量用類比的方法將比特幣的基本原理講出來(lái)...
摘要:不光是技術(shù)領(lǐng)域,其他如哲學(xué)自然科學(xué)數(shù)學(xué)等領(lǐng)域,這種現(xiàn)象也是屢見(jiàn)不鮮,區(qū)塊鏈的產(chǎn)生和發(fā)展也是遵從了這個(gè)模式。以太坊登場(chǎng),區(qū)塊鏈以太坊是創(chuàng)立發(fā)明的,這個(gè)俄羅斯小伙子很早就在比特幣領(lǐng)域做開(kāi)發(fā)新聞的報(bào)道,最后自立門戶開(kāi)發(fā)了以太坊。 1、史前紀(jì)事,區(qū)塊鏈?zhǔn)非霸?showImg(http://files.jouypub.com/static/images/bd67cbaca4ac41a78e01...
摘要:但只要提到去中心化,人們第一時(shí)間想到的還是去中心化交易所。那么,交易所為什么要去中心化安全問(wèn)題自年開(kāi)始,全世界范圍內(nèi)的中心化交易所就接連出現(xiàn)代幣被黑客盜走的事件。 去中心化的前世今生1990年,伯納斯?李爵士發(fā)明了萬(wàn)維網(wǎng),他希望網(wǎng)絡(luò)是去中心化的,能將世界所有人都聚合在一起,互相協(xié)作,所以他將萬(wàn)維網(wǎng)免費(fèi)交給世人使用。但不久前,伯納斯?李爵士在接受《名利場(chǎng)》雜志采訪時(shí),表達(dá)了對(duì)當(dāng)前互聯(lián)網(wǎng)的...
閱讀 669·2021-10-09 09:41
閱讀 654·2019-08-30 15:53
閱讀 1082·2019-08-30 15:53
閱讀 1216·2019-08-30 11:01
閱讀 1575·2019-08-29 17:31
閱讀 994·2019-08-29 14:05
閱讀 1722·2019-08-29 12:49
閱讀 417·2019-08-28 18:17