近期,背靠以太坊基金会的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上公募,再研究链