当前位置: 主页 /

区块链

HOLOCHAIN:加密货币,必定要是区块链么?

本文发表于: 2018-09-15 22:15

(本文的观点整理自Arthur Brock的博文,并加入了一些笔者自己的思考。Arthur Brock是Holochain的作者,致力于提供一种非区块链实现的去中心化方案。)

Arthur原文地址:https://medium.com/holochain/b ... ac6ae

知乎原文:https://zhuanlan.zhihu.com/p/44137239

当提到加密货币的时候,人们首先想到的会是比特币这样的基于全局账本的区块链系统,而区块链系统伴随着很多问题:

  • 因为每个节点要冗余一份有史以来的账本,它很耗空间

  • 因为这个账本需要在所有节点中同步,它很耗带宽

  • 因为要在所有节点中达到共识,它很耗计算资源(对于POS等模型,创建区块的资源也许是可以避免的,但是验算区块的资源是不可避免的)


我们想重新抛出一个疑问,去中心的加密货币,一定要基于区块链么?本文探讨了一种非区块链实现的加密货币,看看它是如何在保留去中心性的同时,避免区块链的扩展性问题的。


上面提到的区块链的三个问题,根源的原因都是一个:区块链要求全局的共识。区块链维护着一个全局的账本,对于每一笔交易,需要全部参与者达成共识,交易的双方也必须等待这个共识达成后,才能确认交易已经达成。有趣的是,我们的社会以及自然界,充满了各种大型的去中心化交易系统,如人体内的万亿个细胞,无时无刻不在进行着物质的交易;地球上每刻都有无数的原子在进行着电子的交易。这些系统却都没有一个全局的账本,试想要一个打造一个账本来记录所有的化学反应,要耗费多少带宽和空间资源?而如果一个化学反应的发生,也要依赖其他所有原子的共识,来确定对方是否拥有某个电子,这个系统将变得多么缓慢。因此区块链的致命缺陷是可扩展性(scalability),区块链不能适应逐渐增长的规模,只要规模继续增长,总有一天会遇到问题。


如果将社会想象成一个去中心网络,我们每个人都是一个节点,那我们平时进行的交易就已经是去中心网络上的交易。不妨让我们重新想想现实中是如何交易的:

当我想从你这买某件东西,我们只要在你我之间达成共识即可,我认可你的货物,你认可我的钱,我们不需要再去寻求任何第三方的共识,不需要去询问一个全局账本。我可以确认你有钱,因为钱是从你包里掏出来的;我之后也可以再把这件货物卖掉,因为我拥有这个货物,很自然地,另一个卖家在看到我的货物时就会相信这一切。我们双方各自有一个账本,这个账本可以是我的钱包,或者我的房子,只要在里面的东西,就一定是属于我的。


这样的账本在现实世界是基于看得见摸得着的实物,而在虚拟世界里人们有的往往只是所有权的声明。这种可验证的账本在虚拟世界也存在吗?答案是肯定的。密码学数据结构可以让一个账本拥有自证其没有被篡改过的能力,这也是区块链系统中使用的技术,加密货币的基石。


这意味着,我们可以让每个节点存储自己的账本。当两个人打算进行一笔交易时,他们会相互交换各自的账本,通过检视对方的账本,确认对方拥有要交易的资产。当双方都同意这笔交易发生,他们会对相互对这一笔交易进行签名,然后把带有双方签名的交易记录追加到各自的账本上。此后,这两个新的账本又可以和其他人交易,来使用他们已获得的资源。


敏锐的读者也许会问,这种交易方式无法避免“双花”问题。确实,一个节点可以藏匿自己的交易记录,例如一个节点拥有100元钱的账本,他用这个账本买了90块钱的货物,他可以把这个有货物的账本藏起来,再将100元钱的账本拿出去交易。这其实是一个“信用”的问题,我们将在下文讨论,但是我们目前能确定的是,这种行为一定会在网络中留下痕迹,对方手里的账本可以作为证据,裁判这种失信行为将极为迅速和可靠。


比特币是发行产生的货币,每个区块会凭空发行一定数量的比特币,这使得比特币的定价成了一个问题。而更大的问题是,由于比特币拥有一个持续变化着的总量,我们必须时刻追踪每一个比特币在系统里的状态,搞清楚他们具体在哪,来防止伪造和“双花”。


这听起来不是个好主意,事实上,我们认为基于双向信用(mutual credit)实现的货币会更好。我们选择让整个系统的货币总量为0,当某个账户的余额增加时,必然有账户的余额减少相同的数额。设想这个体系的第一笔交易:Alice因某物想支付给Bob20点信用,而他们此时都拥有0的余额,交易达成后,Alice将拥有-20的余额,而Bob拥有+20的余额。负数的余额意味着债务,Alice必须卖出什么来偿债。而Bob可以用这20点债权购买Alice或者其他商户能提供的别的东西,或许是20美元。当债务结清的时候,双方的余额会重归于0,Alice获取了他的物品,而Bob将获取他的20美元。


这听上去也许很奇怪,Alice使用了他尚未拥有的钱!而这正是我们经济体系运作的方式,我们对每个参与者可以有基础的信任,允许他们负一定额度的债。而如果一个人的履约经历良好,我们可以提高他的负债额度,否则我们就不能让他继续扩大债务了。我们可以根据某个公认的公式,通过一个人的交易记录计算出他的负债额度,这个公式可以根据实际情况确定。


敏锐的读者相信已经想到了,如果有一个人不断建立新的账户,把钱转给别的账户,不就产生了很多的钱?(这也叫巫女攻击,Sybil Attacks)


Arthur对这个问题的回答是,对账号进行分类,如匿名账号将拥有0的负债额度,只能用他们实际已获得的钱;而拥有担保人的、用现实中财产担保的等等,则可以拥有高一点的负债额度。另外,每个账号被创建的时候,可以要求他先得到系统里现有的10个人的担保。


可以看出这个加密货币的实现,是极其依赖信用的,甚至可以说是实名制货币也没错,但是我认为相当合理。Arthur还设计了一个体系来维护节点间的关系,包括发现有人失信(如尝试“双花”)时,要如何通知别的节点,来将此人列入黑名单。同时他也认为采用一些中心化手段来提高安全性是可行的,可以有人专门运行高性能的服务器,来提供公证服务,也就是存储各个账户的最新账户版本,如果交易的一方发现公证人那的版本,比交易对方提供的版本要新,那么他就有尝试“双花”的嫌疑。由于任何作恶都会留下痕迹,即使公证人出现信用问题,这一切也都是可以追溯的,这应该足以维持一个良性循环。


另外,笔者认为,对账号进行分类的做法可能是有问题的,当A和B交易时,当B发现A的账本里有一笔来自C的钱,他不能确定这个C的类别。即使C本身不是匿名者,但是他可能是骗局的一部分,在使用一笔来自匿名者的负债。再进一步讲,账户分类是要达成共识的,那么什么样的人才可以通过负债发行大量货币,以支撑起这个系统的货币供应量?不同人的看法不同,就像有的人信任政府,有的人不相信,他们可能永远无法在这个体系里达成共识。


Holochain的设计里提到,这个货币体系应当可以支持多种货币的交互,这部分Arthur没有细说,但是我将其理解为发行不同债权的能力,每个人都可以自由的发行新种类的债权,而只要别人认可,不同债权间可以相互兑换。而关键是,通过账本中的债权类型,可以找到发行这种债权的人,如果你认可这个人,那你就可以接受以这种债权结算的交易。


这样一来,我们不用再考虑系统的货币供应量问题,因为不同种类的债权可以很容易和现实的财产锚定。例如一个人或组织可以以黄金为锚定,发行黄金债权,并承诺1点债权可以在他那兑换1g黄金,之后这个发行方可以长期维持债务,让正数的债权在市场中自由流通。只要用户依照发行方提供的信用依据,愿意相信他,就很容易确定债权的价值,不会再有定价问题。


笔者认为不管Holochain的具体实现怎样,文章中描述的设计非常吻合我对类似联邦式去中心化的审美。我对区块链是持续看衰的,因为它的性能缺陷和流行共识算法的中心化趋向。比起区块链的数据中心(data-centric)实现,我认为Holochain这种节点中心(Agent-centric)的实现更有前景,欢迎各位与我多多交流XD。





发文时比特币价格:44971.8838778
柚子eos价格:37.596660823
以太坊价格:1545.71604214
etc价格:77.9273366756

0 个评论

要回复文章请先登录注册