现有区块链的瓶颈
- 假如有个 twitter 公链,然后我运行了一个节点,特朗普发个 twiter,我得同步数据。非洲的一个小哥发个 twitter,我也得同步数据,因为要达成“共识”。
- 假如 Airbnb 有个公链,无论谁订个房间,我都要同步数据。
- 假如 Uber 有个公链,无论谁打车,我也要同步数据。
这非常荒谬对吗,其他人打车、订房间跟我没关系,我为什么需要同步。如果每个数据都需要同步,用的人多了,用的时间长了,数据量就会大到我的电脑存不下,我可不想为了用去中心化版本的 twitter 而买个 1TB 硬盘。
而且占用存储只是一方面,运算量也会很大。
现有的区块链的 scalability 不行,也就是说当使用规模变大的时候他没法有效运转。
但其实,我只是想保证我发的 twitter 没人可以篡改,或者我花钱订的房间对方不能赖账,而且手机上就可以运行。
Holochain 的设计可能可以实现这个目标。
Holochain is designed to be fully distributed through sharding so each node only needs to hold a portion of the data instead of a full copy of a global ledger.
https://github.com/Holochain/holochain-proto/wiki#overview
组成结构
每个 holochain 都包含这3个部分:
- 应用程序
- 本地的链
- 公共的链
你可以通过应用程序:
- 往本地的 hash-chain 存数据
- 从 DHT 中获取数据
- 将本地的 hash-chain push 到 DHT
Holochain 的节点需要存储两种数据:属于他自己的一条完整的链,和公共链的分片。
Holochain splits the system state data into two parts:
- each node is responsible to maintain its own entire Xn or source chain and be ready to confirm that state to other nodes when asked and
- all nodes are responsible to share portions of other nodes’ transactions and those transactions’ meta data in their DHT shard - meta data includes validity status, source, and optionally the source’s chain headers which provide historical sequence.
https://github.com/Holochain/holochain-proto/blob/whitepaper/holochain.pdf
分片
通过“sharding分片”实现分布式存储,每个节点并不需要保存整条链,只需要保存这条链的一部分。每个人保存一部分,全网的节点加起来就可以把完整的链存很多份,即使一部分节点出问题,也不会有影响。
Holochain 的每个节点都占用一部分空间用于分片。
电子签名
hash-chain 上的每个数据都有发布者的电子签名,电子签名是用数据的 hash 值使用私钥加密后得到,如果我篡改里面的数据,就没法保持数据和电子签名的一致。数据发布到DHT 后,其他人同步接收数据前会先进行验证,拒绝接收有问题的数据。
we confirm the provenance of every piece of data, validating the signature of its author, and that it has been committed to their local chain.
https://github.com/Holochain/holochain-proto/wiki#shared-storage-on-validating-dht
网友评论