收到一封信的時候咱們不知道什麼

網絡的情況可能會很複雜,在收到一份信息(packet)的時候,有不少東西是不肯定的:服務器

來自何方

信息在互聯網中傳播,一般要經過不少中轉節點,通過各類路徑。除非是點對點的IP直連(IPv6),不然沒法肯定信息是從哪裏發出的,是否有中間人劫持。因此須要經過加密手段來保證信息的真實性,好比在微信聊天的時候,微信服務器會驗證雙方的身份,你收發的全部消息,都會被加密傳輸,這個過程是由微信的客戶端和服務器來完成。信息被簽名以後,咱們才能確保發出人的身份。在訪問網站的時候也是同樣,域名和證書綁定,DNS服務商有可能劫持一個域名,但沒法得到對應的證書,因此HTTPS能夠有效地解決DNS劫持。微信

什麼時候發出

信息內能夠包含發出的時間,只要這個時間是可信的就行。但若是信息內沒有時間戳,咱們是沒法肯定這個信息在什麼時候發出的,也沒法肯定收到信息的順序。在傳輸層使用TCP協議能夠確保在一個連接內,內部全部信息的順序是肯定的(packets有編號)。網絡

可靠的信息傳輸

可靠的信息傳輸,是指咱們至少要肯定這個信息的發出者,因此必定要有加密和驗證手段。網站

其次,要保證這個消息能夠發出去,不會半路就丟失,須要有廣播機制,全世界最早進的網絡節點來廣播這個消息(只要消息量足夠大,這個成本就可以忽略不及,參考電信系統)。加密

在時間上須要使延遲控制在可接受的範圍內,保證信息的時效性不會受損。接口

最後,信息的順序要能夠肯定。ip

overlay 的點對點網絡

overlay 的網絡是指創建在現有的 TCP/IP 協議構成的 Internet 之上的網絡,屬於應用層。Bitcoin的網絡便是一種overlay的網絡,使用Bitcoin網絡的商家,不須要介入第三方的中介服務,只須要本身搭建一個SPV節點,鏈接到其它的節點(SPV or FullNode),就能夠快速地獲取到最新的區塊頭。理論上,SPV節點能夠第一時間接收到全部的交易,其只須要保留和本身的地址有關的交易便可,而後經過默克爾樹來驗證交易是否存在於區塊中。當區塊體積變得很是大(1G以上),驗證整個區塊的工做只能由礦工的高級節點來完成,商家只須要保證本身的SPV節點鏈接到了足夠多的礦工節點,確保可以第一時間接收到區塊便可,這樣就能減小關注了錯誤的分叉的狀況出現。同時,能夠加速交易的廣播,防止被雙花。域名

當IPv6得到普及後,客戶和商家能夠點對點地傳播信息(天涯海角的兩我的就像面對面同樣討價還價),每條信息別人不用知道,可是每條信息都有發出者的簽名以做爲證據。兼顧了隱私和誠信(假名而非匿名)。it

因此,商業友好型的SPV節點應該具備如下功能:class

  • 可以同時鏈接大量的礦工節點(10~100個)
  • 可以應對大量的新交易(過濾和廣播)
  • 可以ip點對點傳播消息(加密和解密手段)
  • 接口方便擴展,快速改形成各類服務器。
相關文章
相關標籤/搜索