1、
凌晨写完上篇文章意犹未尽,于是我趁胜追击,在浏览数篇文章后觉得还是应该读原文,于是干脆开着有道词典划词翻译功能,读起了MIXIN的英文版白皮书,并一口气读掉17页,同时喝掉了当天的第三杯咖啡。
凌晨三四点,满脑子的新奇兴奋;疲惫涌来的时候难以入睡,也睡不踏实。这意味着,我该缓缓劲儿,整理一下认知脉络了。
下文即是我对近几次新增知识点的脉络整理。
2、
区块链的本质,是一种不可篡改的数据库技术。注意:不可篡改是一种追求,且需要用程序设计来保证的,并非是一个天然的结果。
古典的数据库技术支持增删查改四大类操作,而在区块链技术中,只支持增查,不支持删改。
查这个行为,相对简单。
针对“增”这个行为,有几层问题要解决:
- what:数据库中记录的是哪些数据?
- who:谁能往数据库中增加数据?
- why:为什么要往数据库中记录这些数据?
- how:如何实现往数据库中新增数据,且实现不可篡改?
3、
关于how,至少有2大类方式,一类是顺序链接的区块链,另一类是有向无环图DAG。
前者譬如BTC,ETH,EOS都是此类,后者譬如IOTA,byteball,MIXIN。
无论是哪一类,都面临着同样的一个核心问题,即“拜占庭容错”。拜占庭容错,解决的是“安全问题”,即:如何保证在有作恶节点的情况下,整个系统还能正常运转,正确运转?换言之,即便出现错误,也能修复之?“安全问题”的核心,是双花问题。即:同一个币,是否会被用了2次甚至更多次?
拜占庭容错经历了2个解决方案,最初是同步拜占庭容错机制即PBFT,然后是异步拜占庭容错机制aBFT,或部分异步拜占庭容错机制。PBFT存在着效率慢的问题。某种意义上BFT已经可以等同于aBFT了。
拜占庭容错的不同方案,是在解决安全问题的基础上,提高效率。
4、
作为一种数据库技术来说,目前的区块链链上所能存储的数据非常之少,仅几百G数据就能使之达到极大瓶颈,遑论达到古典数据库中的几百T的数据。
于是决定哪些数据上链保存,成为了一个非常重要的业务决策。而为什么链上仅仅只记录这些数据,就能实现不可篡改,能满足业务需求呢?则是在决策时需要审慎考虑的。
上述性能瓶颈,包括至少2个维度,一个是链上存储数据文件的累积大小,另一个则是与链交互的反应速率。
在顺序链接的区块链中,比如EOS,通过修改节点数量,节点打包出块的数量与时间间隔、广播及确认签名的时机等,是在尝试实现性能的突破。当然也有一些其他解决方案,譬如闪电网络、侧链等。
另外一种思路,则是采用有向无环图DAG。在这个解决方案中,无需“打包出块”,每条交易就是一个被处理、被确认的对象。且因为没有顺序等待,随着边和顶点越来越多,新产生的交易被处理、被确认的效率能越能达到网络通讯的极限。
5、
那么,这里有一个逻辑问题,到底是安全第一,效能第二,还是效能第一、安全第二呢?
又或者说,除了这种非此即彼的硬排序,是否有能在安全与性能之间有所权衡呢?
6、
除了安全和性能,还有一个重要的指标是可拓展性。
我们知道,BTC网络、ETH网络和EOS网络是无法直接联通的。公链和不同的联盟链、私有链也是无法直接连通的。每个“链”都是一颗自转的小星球,与其它“链”甚至会产生竞争关系。每个链哪怕再拓展,也会有自己的能力瓶颈与资源瓶颈。
一个有趣的项目立志于 mix in one,去做以上各颗星球之间的连接,它就是MIXIN.ONE。
7、
在解决HOW这个问题时,要解决的是安全、性能、可拓展性,同时解决how的过程也是解决what 和why与who的过程。
在who这个问题上,谁有权利往数据库中增加数据?即:记账呢?
POW理论上人人可以去解谜题,但只有解答正确的人,才有权利记账。
POS理论上所有持票的人都有权利记账,持票越多,获得记账权利的概率就越大。
DPOS则是通过投票选举出记账的人,仅有有限的节点来记账。
无论POS还是DPOS,都面临持票人参与度并不高的情况。同时也需要面临一个问题,即散户存的币,被钱包或交易所挪用投票怎么办?
一个延展问题是,记账不是你想记,想记就能记的。这里面有4个角色:一条数据行为的发起者与接受者,一条数据行为的执行者,一条数据行为的记录者,一条数据行为的验证者。这4个角色的定义范畴,门槛等,在不同项目中,有着不同的区别。
比如在bitcoin中,只有有权利记账的人才能执行数据行为并通过打包出块记录下来,而所有参与挖矿的人都可以参与验证。
那么其它区块链项目呢?
以上即为我关于区块链认知的大致脉络整理。
网友评论