官术网_书友最值得收藏!

2.2 比特幣中的P2P網絡

在比特幣網絡中,每個節點可隨機連接到其他節點,節點也可隨時加入網絡或離開網絡。整個網絡的節點總數是不確定的。各個節點在進行信息更新時,它們并不是實時一致的,而是只需在一定時間內達到一致。也就是說,部分節點的退出或崩潰,并不會帶來整個網絡的癱瘓;用戶的加入和退出并不會對整體網絡產生太大影響。

節點與節點之間的信息交換,主要以交易廣播的方式體現。交易廣播通過泛洪(flooding)的方式來實現。具體來說,節點發起一個交易的時候,會將這筆交易的信息告知所有相鄰節點,相鄰節點將根據存儲的歷史交易信息校驗這筆交易是否可以進行,如果校驗通過,這一交易信息會繼續接力傳播給下一批相鄰節點。交易信息會像漣漪一樣在節點群里擴散、傳播開來。當節點接收到的交易信息與該節點交易池的信息重合,即表明這一信息已經傳播一次,這才終止廣播。由于每個交易有獨一無二的哈希值,通過哈希值查詢交易信息是否重復非常方便。

需注意的是,在P2P網絡中,由于帶寬等原因,信息的傳遞往往是有延遲的。因此不同節點的交易池內容略有不同。如果有人發起雙重支付攻擊,并且兩筆支付到達了同一個節點,誠實的節點將會僅保留一個交易,另一個不再廣播,最終網絡中不同的節點可能在短時間內存在記錄不同交易的分歧,但是沒關系,隨著時間的推移,共識機制保證了最終只會記錄一筆交易,使得雙重支付攻擊無法成立。

簡要而言,比特幣項目在P2P網絡中建立起一個現金支付系統,主要依靠以下因素:節點之間地位對等;交易信息在節點間以泛洪的方式傳播;節點檢查交易是否成立;由共識機制確定合法的交易信息。

主站蜘蛛池模板: 五峰| 宾川县| 天镇县| 华蓥市| 云南省| 渑池县| 闵行区| 申扎县| 新宁县| 女性| 沈丘县| 崇礼县| 康平县| 安塞县| 大洼县| 雷州市| 得荣县| 葵青区| 伽师县| 肥乡县| 安徽省| 娄底市| 江阴市| 咸阳市| 乾安县| 微博| 安平县| 中山市| 固始县| 泸西县| 凉山| 温州市| 宁阳县| 潢川县| 仁寿县| 仁怀市| 阜康市| 怀远县| 大宁县| 通榆县| 巴塘县|