第0章 引言
现在市场上有不计其数的区块链项目,多如牛毛,各个项目都认为自己是最牛逼的,都声称自己能改变世界。区块链1点零,2点零,3点零,现在已经有项目喊自己是区块链5点零了。在这样下去,区块链250点零也很快就要到了。
我们真的需要那么多的区块链吗?这个世界到底需要一个什么样的区块链。
第1章 以太坊的智能合约
以太坊被称为区块2.0,以太坊的成功,带来了区块链恐怖的创新热潮,无数的区块链操作系统项目被发明出来,都称自己是公链。给整个行业带来了公链之争。如果你做一个区块链项目,如果不能实现以太坊的功能,好像就是一种耻辱的落后。比特币就是被太多人称为落后的技术。
比特币作为一个笨协议是一种耻辱的落后吗?完全不是,基于比特币现金的二层网络可以实现所有以太坊的创新,同时可以保持很低的手续费和无限的可扩展性。
以太坊的做法是将合约代码托管到区块链上,并且要求所有的节点执行计算这些代码。托管到区块链上就可以获得合约代码不可修改,所有节点执行也是必然会产生相同的结果,所以使用代码的用户是不需要单独信任一个节点的,他只需要相信这个以太坊网络,就可以获得确定性结果。这就是我们讲的代码无须信任化,就是不需要单独信任某个单一的节点,甚至是可以自己运行一个非挖矿节点来验证。
我们举个例子会更清晰,在以太坊上执行了一整年的eos众筹合约的基本原理是这样的,用户会向eos的合约地址发以太币,用以购买代币,合约每隔23小时会计算一下收到多少以太币,然后使用200万除以收到的以太币总数,就得到一个以太坊可以买到多少个eos,然后合约就可以计算出每个用户购买到多少代币,最后用户可以调用合约来取回他买到的eos代币。
使用以太坊来执行这个合约得到的好处是,合约代码是托管到以太坊区块链上,公开透明,不可篡改,规则是定死了的,对所有人都是公平的。用户只需要相信以太坊这个网络不会出问题,那就可以通过这个合约来购买eos的代币,保证童叟无欺。
而问题是这样的,手续费很高,以太坊可处理的交易数量非常少,平均每秒太约能处理15到30笔。这个问题是非常大的,可以让使用一种攻击手法来获得更便宜的价格。
eos的众筹是同时在一级市场和二级市场展开的。我们称直接通过eos合约来购买代币称为一级市场,通过交易所来买代币,称为二级市场。
eos的合约是每23小时结算一次,在离结算前10分钟,一般一级市场的价格会大大低于二级市场,然后在最后10分钟内,就会有大量的人涌入进一级市场买币,并且在二级市场卖出,通过这样来实现搬砖套利。
而在这10分钟内,如果有人对以太坊全网发起大量的交易,就可以堵塞整个网络,以防止别人往合约地址里转币,从而维持一级市场的低价。这样的事情发生过非常多次。
前一段时间的佛魔3D也被人通过制造了3分钟的拥堵时间,从而拿走了巨额奖金。
你很难想象在一个金融系统上,可以制造一个禁止所有竞争对手,只有你一个人来操作的事情。试想,如果你在一个交易所,可以禁止所有其他用户3分钟参与交易,只有你来交易的后果吗?
以太坊将所有的合约都托管到主链上,并且在主链上执行必然会带来这样的结果。让我们来看看比特币现金是怎么做的。
第2章 比特币现金的解决方案
比特大陆的姜家志他们在比特币现金上搞了一个虫洞项目,海外也有团队搞了Keoken项目,现在又出来一个bitcointoken,使用的原理都差不多。都是基于比特币现金区块链的二层智能合约平台。
基本原理这样的,所有的合约代码以交易的方式托管到比特币现金主链上,存放在op return字段里,但比特币现金主链并不执行合约代码。合约代码托管在比特币现金主链,就获得了代码的不可篡改性。
而代码的执行则交给虫洞的客户端来执行,虫洞客户端会读取比特币现金主链上的代码,然后执行,并反馈给网络结果,并且将执行结果以交易的方式再次写入比特币现金区块。这样执行的结果也获得了不可逆性。
因为以太坊的合约是所有的矿工节点都会执行并且会得出一个相同的结果,而虫洞协议只是BCH矿工节点不执行合约,而是交给其他节点去执行,请问,这两者的安全性是一样的吗?
第3章BCH二层网络的安全性分析
在安全模型性上,虫洞的安全性和以太坊的安全性也是一样的。在以太坊上,安全模型是这样的。比如我们要在以太坊网络执行1+1这个合约,正确的结果就是2。
以太坊的矿工,在挖到一个区块后,就会执行这个合约,他执行的结果必然是2,但他可以作恶,故意骗所有用户是3,用户也是没有办法的。但其他矿工节点,也会去执行这个合约,如果他们执行的结果是2,那就会孤立掉这个作恶的矿工的区块,这个矿工就会损失掉一个区块的奖励和手续费。所以说,这就是所谓的区块链是无须信任的根本原理,是因为我们认为区块链网络上的挖矿节点没有人会冒被孤立区块的风险,去发布一个假的结果。
普通用户不运行完整节点,也没关系,他只需要随机访问网络上的其他完整节点,并索要合约结果,一对比就知道有没有问题了。因为网络是开放的,任何作恶的节点是无法阻止用户去访问其他节点查询对比结果的。
而虫洞的安全模型也是一样的,合约代码和执行结果都被托管到比特现金主链区块上,合约的执行是由虫洞客户端执行,并将执行结果发到BCH主链上。我们先假定虫洞客户端是不作恶的。BCH主链上的矿工有可能作恶吗?这是不可能的,因为BCH主链区块上的矿工不可能冒被孤立区块的风险故意去制造一个和正确结果相冲突(双花掉对的结果交易)的假的执行结果。矿工节点确实可以打包一个假的合约结果,但它无法删除正确的合约结果,那这就不会影响用户的资产。
现在我们假定某一个虫洞客户端会作恶呢?所有的虫洞客户端都可以识别出真的执行结果,并反馈给用户。但如果有一个虫洞客户端要作恶,故意给用户一个假的合约结果,毫无疑问,矿工节点都会打包这个假的合约结果,但这个作恶的客户端无法阻止用户去访问别的客户端的获得正确的结果的,矿工节点也不会拒绝打包这些正确的结果。用户就可以通过更换客户端来获得正确的结果。这和以太坊是一样的,以太坊节点也是可以欺骗连在它上面的轻钱包的,但节点是无法偷钱的,用户只需要将私钥导入到另外一个钱包,就可以获得正确的余额。
有没有可能一个虫洞客户端和矿池合作,来完成诈骗呢?这个类似于矿池节点整合了虫洞客户端。同样不可能,因为其他这个作恶的虫洞客户端发出的错误结果,确实是会,但和上面第一种,矿池节点不敢冒自己区块被孤立的风险去双花掉对的合约结果,只有对的合约结果被其他矿工记录在区块上,用户的资产就可以换一个钱包就可以在链上读取出正确的结果。
最后,有没有可能所有的虫洞节点都来作恶呢?那就是遇到诈骗集团,和设计一个诈骗合约一样的。这和以太坊上的合约也是一样的,以太坊可以设计一个诈骗合约,骗所有人的钱。
第4章 比特币现金的主链+二次网络的架构的优点
比特币现金这种在主链托管代码,但不执行,在二层网络节点上执行的做法,不会对主链造成巨大的压力。这样主链就可以保证非常大的可扩展性。
而且在二次网络本身,各个合约之间是没有关联的,也无须关联,这样二层网络上的合约是可以无限扩展的。
就目前以太坊的架构,我们很难想象,在主链上可以同时运行10万个合约,但使用比特币现金的二层网络架构,那可以运行无数个合约。
第5章 如果我是对的或错的,区块链的未来是什么样子?
如果我们是对的,那以太坊带来的区块链操作系统,让整个世界错误的在这个方向上走了四年多。
以太坊的成功,让区块链世界里几乎所有人都在追求创造各种新奇的区块链操作系统,今年新挤进加密数字货币市值排行版前20的,eos,cardano ada,波场,小蚁Neo,都是区块链操作系统,还有排行更后一点的。
比特币现金提出的二层网络智能合约平台,终于给区块链世界带来的一点新的希望。如果我们是对的,那未来比特币现金将会占据整个加密数字货币市值的大部分份额,大量的区块链业务会迁移到比特处现金网络上来,形成巨大的网络协同效应。
如果如果我是错的呢?我并没有100%的信心说我这套逻辑肯定是对的,因为太多的人不同意我的说法,他们也都是一些牛逼的人,聪明的人,很多人也是本着改变世界的心态来参与,而不是跑来骗钱的。他们这些人甚至有大量的海归,说着流利的英语,博士学位,写的代码都是牛逼的算法,……
但如果真的是我错了,那区块链的世界应该是这样的:各种链非常多,各条链都会占据部分市场,而在所有这些链的顶端,会存在另外一种特殊的链,跨链的链。闪电网络,中继,侧链,都是拥有跨链的功能,现在最火的跨链的项目包括cosmos,波卡,闪电网络,都是试图在各种链上完成衔接作用,在跨链协议上形成网络效应。
第6章 结束语
我们需要的是一个主链可以无限扩展的笨协议,配上二层网络来实各种的智能终端的区块链。只要比特币现金的主链可以无限扩展,区块可以是32M,64M,128M,……,1G,32G,比特币现金的笨协议加上智能终端必然改变世界。