鸵鸟区块链

Holochain代码评审区块链巨无霸

HOLOCHAIN 2018-12-14 16:54 854
摘要:

​今天我们来谈谈Holochain。

今天我们来谈谈Holochain。它到底是何方神圣?它和传统blockchain有什么区别?这个项目到底怎么样?

背景

大家已经知道blockchain事实上就是一个global online database。blockchain储存数据的核心科技里很重要的一点就是,每个参与者的电脑上都有一份数据拷贝。这有两个好处:

  1. 去中心化。数据不再由一个中心机构所掌控,而是存在于个人的电脑上。

  2. 数据可信度。因为任何修改都要拷贝到全网节点,并且每个节点都要对其验证。想要进行任何篡改是非常困难的事。

然而blockchain储存数据的这个核心科技原理也造成了一个非常致命的瓶颈,就是scalability,所以没法大规模地投入使用。因为任何修改都要同步到全网所有节点,处理交易的速度极其慢,而且拷贝越多速度越慢。这个问题不解决,会非常影响blockchain的发展与应用。

image.png

(Blockchain的交易同步流程,图片来源www.netguardians.ch)

这个时候,holochain就上场了!

image.png

Holochain也是一个和blockchain一样,想达到去中心化和加强数据可信度这些目标。但是,holochain被认为是一个后区块链技术。为什么呢?就是因为holochain的科技解决了blockchain的瓶颈,能够大规模铺垫商业应用。那么Holochain到底是用了是那么技术来达到这个效果,我们现在就来了解一下。

核心原理

首先,Holochain是什么?用它自己的官方定义来说,它就是“a network for building fully distributed peer to peer customized applications”。意思就是,他也和blockchain一样,终极目的是提供一个平台,可以开发并且运行各种去中心化应用(Dapps)。

而它和blockchain不同之处就在于,blockchain是以数据为中心(data-centric),而holochain是以代理人为中心(agent-centric)。

数据为中心 vs 代理人为中心 

以数据为中心的意思就是,A有个blockchain,这是原始数据所在地(source chain),它可以被B, C, D和N多其他用户复制;每一次A的blockchain做出修改,B,C,D和所有其他的拷贝都会跟着更改。我的数据是在A这个blockchain里面,这个source chain是在中心(center),而B,C,D这些拷贝全都是边缘的(edge),被动跟着变。

Holochain的不一样就在于,它是以代理人为中心(agent-centric)。什么叫以代理人为中心?这个就是holochain的核心原理,需要好好说说。

所谓agent-centric, 就是每个参与者手里都有一些数据,每个代理人(agent)都有更改自己数据的权限。当他们把自己手里这份数据修改完之后,再传输到中心的一个存数据的地方。这就有点像Git, 一个version control的工具。想象一下,几个人联合做一个写代码的项目,每个人都有一个branch并且在自己的branch上写一点代码,写好了push到中心,最后大家把各个branch合并起来成为一个完整的项目—关键点就在于,每次更改,都是在相关的branch上更改,改好了再push到中心,因此在一个branch上进行更改的时候,其他branch能够不受任何影响的照常工作。Holochain也是一样。

image.png

(git工作原理1:其中alice, david, bob和clair都有自己工作的branch。图片来源https://nvie.com)

image.png

(git工作原理2:每个人的branch如何和其它的整合在一起,最终同步到orgin branch上)

自带分片(sharding)的数据结构

除了以上提到的agent-centric模式以外,holochain在底层数据结构上也做了创新。那是一个叫做分布式哈希表(Distributed Hash Table)的数据结构,简称DHT。每条hash chain通过DHT来分配agent。关于DHT,这里简单地来说两句。这个其实就是区块君在纽约的线下技术分享上提到过的一个分布式数据结构。它是在原有的哈希表基础上加入了分片(sharding)的环节,把一张大表拆分成无数小表,然后自动对应到每个节点。

image.png

(Distributed hash table,图片来源https://en.wikipedia.org/wiki/Distributed_hash_table)

关于DHT有很多有趣的细节,之后区块君会单独写一篇文章来给大家详细介绍,这里不再赘述。我们先回到前面的话题继续说下去。每个Agent在收到分配下来的hash chain以后,通过自己的相邻节点来管理,并且可以用自己的private key对自己chain上的任何更改进行签名,从而确保数据的真实性和可信度。所以,这个确保数据真实可信的重要“签名”是在每个人自己的“邻居”节点群完成,而不是像blockchain一样在中心进行修改和签字然后同步到全网,但是最终还是可以保证数据的完整和一致性。

image.png

(holochain工作原理,图片来源https://holochain.org/)

Holochain如何解决Scalability问题

说了这么多,终于可以回答文章开头提出的问题了——holochain为啥解决了blockchain的scalability issues?Blockchain之所以慢,就因为它的共识算法的核心就是要保证全网节点的同步(forces consensus over entire network),所以随着节点数量的增加,它的速度也被拖慢了。而holochain这种agent-centric的科技,在验证的时候只要与它的邻居节点进行互动就可以了。另外一点很重要的是,由于holochain底层用到的DHT是自带分片技术的数据结构,所以它每个节点都能充分利用起来处理大量的数据。这里我们用一些数学工具来简单分析一下比特币,以太坊和Holochain的算法复杂度对比:

bitcoin

由于每个交易进来都需要验证它的签名,并且需要在当前整个区块中过一遍所有的历史交易来确保没有双花。假设整个区块的交易总数为n。所以单笔交易的算法处理度为O(n),所有交易的总复杂度则为O(n^2)。如果节点的总数为m,则全网的复杂度为O(m*n^2)。这种平方级的复杂度也是极大地限制了比特币交易广播的带宽。

Ethereum

与比特币类似,只是它每笔交易的处理时间取决于实际的智能合约的虚拟机代码执行。所以单笔交易处理的复杂度为c+F(n,m)。其中n为当前区块交易总数,m为以太坊客户端总数。由于每个节点也都需要处理所有的交易,所以全网的复杂度为O(m*n*F(n,m))。

Holochain

每当一个新的交易出现的时候,Holochain会先用DHT来分配对应的Agent来进行处理。假设Agent总数为m,分配过程的算法复杂度则为c+log(m)。这是通过 DHT的分片算法决定的。当Agent获取一个新的交易数据的时候,它会广播到它相邻的q个节点,最终会在其中r个节点中进行备份。假设这些节点验证数据的复杂的度为v(n,m),所以综合在一起,单笔交易处理的算法复杂度为

c+log(m)+q+r*v(n,m)

于是全网的总复杂的度为O(n(log(m)+v(n,m)))。由于每个Agent被分配的到的概率为1/m,所以平均下来它的总算法复杂度为O(n(log(m)+v(n,m))/m)

Holochain的数据验证过程

最后,我们来看一下holochain在数据验证的时候到底怎么做。当我想验证一个修改是否合法,我首先看这个修改到底是被谁修改的,我通过之前讲到的这个“签名”(或者说,与这个修改所关联的private key)找到进行这个修改的人(或者边缘端edge) 。找到之后,其他的相邻节点就开始看,这个修改是否符合我们这个项目的规则(validation rules)。如果符合规则,修改就是合法的,然后通过;不合规则,这个修改就不通过。所谓项目规则,就是开发人员最开始在使用holochain来开发app的时候制定的规则。比如,我利用holochain开发一个转账的应用,那我的规则之一就是,账户里必须有足够的余额。那么当一笔交易产生时,所有的相邻节点就会验证账户里是否有足够余额来决定这个修改(也就是这笔交易)是否合法。

项目进度

与很多其他项目不同,holochain是先开发技术之后再发币。目前,holochain的技术已经比较成型,开发人员可以用javascript或者lisp开发holochain的应用. 他们现在有两个用于写holochain validation rules的virtual machines,以及用holochain 技术构建的一些应用程序,比如模拟板twitter和一个聊天系统。此外,他们还开发了一个用于检测各个情景下处理能力,宽带,以及储存能力的基准测试套件(benchmarking suite)。下一步要做的就是为大规模应用程序进行可扩展性测试(scalability tests)。

而且Holochain的融资方式可谓是非常良心,它是通过卖出的硬件获得的利润来决定融多钱。比如卖出2000万美金的硬件,他们就融2000万。现在很少有那么良心的项目了。

团队

holochain的2位创始人是Arthur brock(chief architect)和Eric Harris-braun(executive engineer)。两人都是连续创业者,他们于2008年开始合作,一同创始以及管理一个叫metacurrency的货币平台。Holochain是二人的第二次创业合作。

Arthur Brock于1989年毕业于michigan state university(本科),专修人工智能(artificial intelligence)。毕业后他在通用汽车,  克莱斯勒和其他几个科技公司做了一系列AI以及数据库还网络方面的工作,直到成为"Dream Team Techonologies和"Targeted Currencies Network"这两个公司的CTO。2008年左右开始,Authur Brock开始连续创业(虽然他的一些创业项目早在2004年就开始了),把他在AI领域的技能经验投入到社交架构与建设中,尤其是通过建设货币系统来设计一系列激励和反馈模式来帮助从学校到公司等各种各样的组织达成一系列目标。Brock从2016年12月起开始经营holochain,现已有1年8个月。

Eric Harris-braun于1988年毕业于耶鲁大学计算机系(本科)。他的领域是为新经济设计和构建软件基础设施。他早在2003年就开始连续创业,所经营的公司包括之前提到的metacurrency, 该项目正在为各种规模的社区创建一个平台来设计和部署他们自己的货币。同时,eric harris-braun也是Glass Bead Software(一家点对点网络应用程序提供商)和Harris-Braun Enterprises(一家自由软件开发商店)的联合创始人。和Harris-Braun Enterprises创建的软件包括,为医疗保健行业专门设计的复杂的数据收集网站。,一个用于渔业捕捞监测的Android应用程序,以及一个线上写作工坊。

除去两个创始人,holochain现有9个员工,分别负责UX/UI, DevOps, 以及软件工程。他们来自全球各地—加拿大,德国,澳大利亚,瑞典,英国,美国—并且都在科技领域拥有相当丰富的工作经验。

image.png

(Holochain团队,图片来源https://holochain.org/))

社群

holochain在主要的社交平台上都有足迹。Facebook page有2300左右的followers,  Reddit也是2300左右subscribers,twitter大约1万followers,Telegram接近9000个用户。尤其是telegram从6月到现在,两个月的时间内用户数几乎翻了一倍。此外,holochain在全美以及全世界各地举办了或者即将举办一系列科技论坛,峰会,hackathon, 以及创始人演讲和访谈。

总结

从以上几点来看,Holochain确实是区块链中的一股清流。与众不同的核心科技,接近成型的平台建设,经验丰富的创始团队,和关注度迅速增长的社群,holochain的未来还是比较可观的。

来源:区块链中那些事儿(ID:Block-talk)

声明: 鸵鸟区块链所有发布内容均为原创或授权发布,如需转载,请务必注明文章作者以及来源:鸵鸟区块链(微信公众号:MyTuoniao),任何不尊重原创的行为鸵鸟区块链都将进行责任追究!鸵鸟区块链报道和发布内容,不构成任何投资建议。

HOLOCHAIN

——

38 篇 作品
3.86W 总阅读量