肖臻公开课(六)——比特币中的网络
本筆記對(duì)應(yīng)北京大學(xué)肖臻老師《區(qū)塊鏈技術(shù)與應(yīng)用》公開(kāi)課第六課。
0.前言
在本節(jié)課中,肖老師主要講了比特幣的底層網(wǎng)絡(luò)實(shí)現(xiàn)。以計(jì)算機(jī)網(wǎng)絡(luò)傳統(tǒng)架構(gòu)來(lái)說(shuō),比特幣網(wǎng)絡(luò)工作在應(yīng)用層,底下的網(wǎng)絡(luò)層是一個(gè)P2P覆蓋網(wǎng)絡(luò)。
要明確一點(diǎn),比特幣網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)是平等的不存在某些P2P網(wǎng)絡(luò)中的超級(jí)節(jié)點(diǎn)和主節(jié)點(diǎn)。
1.加入網(wǎng)絡(luò)與離開(kāi)網(wǎng)絡(luò)
- 加入網(wǎng)絡(luò):
在加入網(wǎng)絡(luò)前,首先要尋找一個(gè)種子節(jié)點(diǎn)。種子節(jié)點(diǎn)會(huì)告訴你它知道的其他節(jié)點(diǎn)。
節(jié)點(diǎn)與節(jié)點(diǎn)之間通過(guò)TCP進(jìn)行通信,便于穿透防火墻。
- 離開(kāi)網(wǎng)絡(luò):
離開(kāi)網(wǎng)絡(luò)不需要通知其他節(jié)點(diǎn),直接離線即可,其他網(wǎng)絡(luò)沒(méi)接收到此節(jié)點(diǎn)的消息就知道此節(jié)點(diǎn)離線了。
- 比特幣網(wǎng)絡(luò)設(shè)計(jì)原則:
魯棒、簡(jiǎn)單、而非高效。
2.交易傳播
- 比特幣每個(gè)節(jié)點(diǎn)都維護(hù)了一個(gè)**“鄰居”節(jié)點(diǎn)的列表**,每次發(fā)送消息,都向此列表中所有節(jié)點(diǎn)發(fā)送消息,接到過(guò)的消息不會(huì)再次轉(zhuǎn)發(fā),即:洪泛法。注意,“鄰居節(jié)點(diǎn)”的選擇是隨機(jī)的,這樣有利于魯棒性。
- 比特幣每個(gè)節(jié)點(diǎn)還維護(hù)一個(gè)待上鏈的交易列表,節(jié)點(diǎn)每次接到交易后,就通過(guò)以上的過(guò)程對(duì)交易進(jìn)行傳播。但是要注意3點(diǎn):
1.如果此交易驗(yàn)證后,不合法,那么就不會(huì)進(jìn)行傳播。
2.如果節(jié)點(diǎn)接受到一個(gè)有沖突的交易,那么以自己已經(jīng)保存的交易為準(zhǔn),新接受到的交易不會(huì)受理。
3.如果發(fā)布的區(qū)塊鏈中包含的交易,與自己集合中的交易有沖突,那么刪除自己集合中的交易。
3.區(qū)塊傳播
區(qū)塊傳播與交易傳播是類(lèi)似的,在驗(yàn)證其合法性后,并檢查是否是在最長(zhǎng)合法鏈上,然后采用洪泛法進(jìn)行傳播。
注意1:因?yàn)閭鞑シ绞降脑蛳拗?#xff0c;所以比特幣系統(tǒng)中設(shè)計(jì)一個(gè)區(qū)塊最大只有1M,即便如此,一個(gè)區(qū)塊的傳播仍然需要幾十秒。
注意2:BEST EFFORT,比特幣網(wǎng)絡(luò)的傳輸是“盡最大努力交付”的一個(gè)網(wǎng)絡(luò)。
總結(jié)
以上是生活随笔為你收集整理的肖臻公开课(六)——比特币中的网络的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 安卓开发,拼接屏幕、大屏幕、户外广告无人
- 下一篇: 小谈星际的操作与APM