原文標題:《6Block 李白:Swarm(BZZ)技術原理分享》
近期,背靠以太坊基金會的Swarm(BZZ)市場如火如荼,氛圍毫不遜色于Chia。2021年2月14日,Swarm官方發布了測試網“百萬空投”計劃,吸引社區用戶積極參與,截至目前測試網節點已超24萬個, 6月4日,Swarm基金會發推特表示:Bee主網將于6月13日進行軟啟動,緊接著5173934個項目代幣BZZ將于臺北時間6月15日凌晨1:00在CoinList上開啟公募, 市場對火熱出圈的Swarm充斥著各種聲音,石榴礦池李白將根據文件傳輸協議從FTP到Swarm的技術演變進行分享,讓大家更好的從技術層面理解Swarm是怎么設計的,為什么要如此設計,也希望大家能聽到關于Swarm(BZZ)最真實、最純粹的聲音,望開卷有益!
背 景
Swarm官網:https://swarm.ethereum.org/
官方Twitter地址:https://twitter.com/ethswarm
官方部落格地址:https://medium.com/ethereum-swarm
互聯網的誕生是為了解決數據的分享和傳輸問題,互聯網的開放與自由,也讓我們迎來了資訊爆炸的時代,但隨著時間的發展,互聯網的資訊逐漸走向封鎖,因此才有了當下Swarm和IPFS等一系列技術的產生。
Swarm的愿景
Swarm是去中心化數據存儲和分布式技術,其愿景:CensorshipResistant,用一句話概括:Swarm= BitTorrent + Tor + Layer 2,下面將具體展開分享。
BitTorrent
>>>斷點續傳
- 把文件拆分(split)成小塊(chunk)
- 按塊進行并行的傳輸
- 傳輸完成后對chunk進行校驗(hash)->
- 根據chunk恢復出文件
解決了:網路不穩定環境下大型文件傳輸的問題。未解決:服務端的帶寬無法承受大量用戶同時下載,
>>>Chunk Address
- 用chunk的hash值作為唯一的地址
>>>BitTorrent
解決了:通過用戶之間互相傳輸數據的方式,來解決大量用戶同時下載時的帶寬不足問題。未解決:Tracker的中心化問題,
>>>DHT
- 去中心化的tracker
- 每個節點都是tracker
- chunk太多,hash table太大
- kv變動難以通知所有節點
- Distributed Hash Table(DHT)
- 每個節點存一部分kv,查找時先找節點再連接以獲取kv
- 一組kv同時保存在多個節點,防止單點故障
>>>KAD網路
- node address
- 隨機選擇和chunk address一樣的地址
- 定義距離:XOR
- 每個node存和自己address接近的chunk
- node 0101:
- node 0100:
- node 0110: chunk 0111: 20.20.20.20, 30.30.30.30, 40.40.40.40
- node 0010: chunk 0011: 30.30.30.30
- node 1110:chunk 1111: 30.30.30.30, 40.40.40.40, 50.50.50.50
在KAD網路如何查找一個chunk的IP list:
- node除了會存hash table的一部分之外,還會存所有能連上的node list(address和IP)
- 探索node
- 連node,獲取其node list
- 對list中node依次嘗試連接
- 查找chunk
- 從node list中找到距離最近的node
- 連接后獲取其hash table,如果目標chunk存在則返回
- 否則獲取其node list,從中尋找距離更近的node
- 下載chunk:直連所在node
電驢、IPFS及BT升級后均用了KAD網路,通過封禁chunk所在node的ip,就阻止了chunk的傳播,KAD網路:
解決了:tracker的中心化問題
未解決:防火墻的問題
Tor
>>>Tor
Tor(The Onion Router)的核心技術“洋蔥路由”,是在1990年代中期由美國海軍研究實驗室的員工為保護美國情報通信而開發的軟體,通過relay的方式可以:
- 繞過防火墻
- 保護隱私性
>>>Swarm網路
- Swarm的第一個創新點:
- 以relay的方式通信
- node的hash table,value不再是存有chunk的node IP,而是chunk本身
- 區別:
- 文件是push進網路中的
- 更大的上傳下載帶寬
- 臨近的node會sync chunk
- chunk存儲于多個node
Swarm 網路:
解決了:防火墻的問題
未解決:節點利益
BT是自愿做種子,Tor也是自愿成為節點的,而在Swarm網路中,必須給提供服務者(帶寬、存儲)提供獎勵,才能維持網路的長期運行。
Layer2
Swarm依附于以太坊網路, 其可以理解為以太坊網路的Layer2。
>>>流量獎勵
Swarm網路中需要提供帶寬和存儲資源才能成為節點,首先先分享下如何按流量來分配獎勵:
(1)鏈下支付,鏈上結算
如何創建一個節點:
- owner質押bzz創建chequebook
- owner A給B發cheque
- owner B向chequebook A發起結算請求
- chequebook A結算bzz給chequebook B
- A、B客戶端同步chequebook最新狀態
(2)鏈下共識
- 不給cheque超過閾值就加黑名單
>>>存儲獎勵
- 流程
- 上傳者把錢壓在合約
- 存儲者提供存儲證明從合約拿錢
- 狀態:功能還不成熟
- 0.6版本
- 效果
- 上傳者只付流量費也能存,但是數據容易被清理
結論
(1)目標明確,技術創新
- 熱數據,censorship resistant,有可能出現現象級產品
- BitTorrent + Tor + Layer 2
(2)經濟模型不成熟
- 上傳下載都要錢,注冊節點也要錢,ETH和BZZ
- 無空挖機制,難以激勵節點在線
(3)功能未充分測試,急于上線
- 可先在CoinList上公募,再研究鏈