深度学习
对于分布式系统的拜占庭问题,从计算机科学的角度,FLP与CAP定理已经告诉我们无解。研究人员及科学家只有从其他地方寻找灵感。其实并不用花太多时间,他们就会发现,真实的人类世界就是一个分布式系统。如果科技畅销书《三体》的世界真的存在,那么太阳系和三体人所在半人马座的星球同时发生了爆炸,对于我们地球人而言,肯定是太阳系的爆炸先发生,因为光肯定是先到达地球。而在三体人看来,他们会首先观测到半人马座的爆炸。对于同样的事件,不同的系统接收到事件的顺序是不一样的。不同的系统运行速度也是不一样的。再加上通信的信道是有问题的。在上面三体人的例子里,我们假设光线的传递是毫无障碍的。但是如果光线被传播途中的黑洞给吞噬了,消息永远接收不到怎么办?比特币的天才之处在于参照人类社会的组织方式和运作方式
天下武功唯快不破,因此在互联网时代,很多软件采取的都是先开发一个简化版,然后再快速迭代,这边功能少了就加上,那边功能弱了就补上,数据量大了就增加存储器,性能不够了就增加服务器,一切看起来似乎都是没什么问题的,扩展嘛,什么纵向扩展、横向扩展,一切跟着需求来,还能给憋住了不成?然而,当这些问题进入到区块链的场景,情况就有些不那么好对付了,尤其是对于使用广泛、节点众多的系统(如比特币),典型的问题就是由于区块容量限制导致交易确认缓慢,从而严重制约比特币网络的交易处理能力,而比特币是分布式结构,并不能简单地依靠传统的升级服务器来处理。为了解决这些问题,社区发起了各种讨论,就目前讨论比较多的解决方案来说,有隔离见证、直接扩容、侧链以及闪电网络。考虑到比特币的问题具有广泛的代表性,因此本
首先我们要解释什么是比特币的扩容问题,为什么比特币要扩容。比特币的扩容问题来自一个很直接的现实,那就是保存在比特币区块链上的数据块的物理大小限制是1MB。任何大于1MB的区块都会被比特币网络当作攻击而被拒绝接受,这是当初由中本聪对比特币核心的设计决定的,逻辑规则都写在了源码中。大家都知道比特币其实就是一个分布式的公共记账(数据库)系统。也就是说,比特币本质其实是拿来记账用的,当然大部分情况是对比特币这个数字货币记账。由比特币底层技术发展起来的区块链技术也是对各种承载价值以及数据状态进行记账。比特币的数据包含交易数据及其对应的货币台账,我们简单想一想,最主要的问题来自大家在日常交易转账的时候,需要不断地把交易数据发送到网络中的节点,经过矿工打包成区块后广播给其他节点,每个节点验
在了解侧链技术之前,我们先看如下的对话。Alice:我有两个不同的数字货币钱包:比特币和以太币,我可以将比特币从比特币钱包地址转到以太币钱包地址吗?Bob:一般情况下当然不可以啦,比特币和以太币是两个完全不同技术和构架的区块链,它们的价值不能直接转换。Alice:那有什么办法可以做到两个不同的区块链数字货币之间直接做价值转换?Bob:那就必须引入侧链,侧链协议可以将比特币从主链上转移到侧链上来。但是需要在比特币主链上先冻结,然后在别的链上激活。我们知道区块链本质是公共账本技术,主链承载的都是账本核心交易数据(或价值)。当一笔交易的信息太大或复杂的时候,会在不影响账本数据一致性和安全性的基础上通过引入侧链的技术来分流数据量(或价值)。传统意义上的侧链就是指将比特币(价值)从比特币主链上来回转移
闪电网络(LightningNetwork)是一个点对点对等网络,完全去中心化的数字货币微支付系统。这个微支付系统的理念适用于比特币、以太币和莱特币这样的数字货币,针对以太坊上的以太币,有一个叫雷电网络的微支付系统,原理类似。闪电网络的亮点是它完全基于买卖双方的独立双向支付通道,不需要任何形式的押金担保,也不需要任何信任的第三方即可实现实时的海量交易。闪电网络在实际应用中一般先开辟一个支付通道,并提交给一个微支付网络,这个微支付网络能通过多重签名的方式确保价值网络安全的单向流动。最重要的一点是闪电网络实际通过微支付的通道,将交易剥离出比特币区块链来进行,而且剥离主链的交易次数是无限的,这从根本上解决了大量交易都放在比特币主链上进行,从而造成比特币性能严重降低的问题[1]。闪电网
现在我们看到的很多区块链基础技术构架都是单链形态。但在现实社会各个产业价值网络中,多链结构的技术更符合复杂价值逻辑的实际应用,各行各业或者说各个领域都有可能针对不同的业务场景去构造一条链,这些平行的链之间会存在数据交互的需求,即便是在同一个业务场景下,也有可能构建一组共同配合工作的链来完成复杂的业务逻辑,这个时候各个链之间的交互能力就会变得重要起来。我们在此提出了用跨链连接器连接多个可根据商业应用场景分别构建起来的价值链的多链架构理念。如图所示,不同的链之间可以通过一个专门设计的跨链连接器进行互连,跨链连接器就类似于机械部件中的连接件,在软件领域中有个专门的术语叫“中间件”,在这样的一个中间件中可以定义大家共同遵循的数据接口规范,各种不同的链只要提供针对接口规范的接口实现,就
比特币开创了去中心化密码货币的先河,五年多的时间充分检验了区块链技术的可行性和安全性。比特币的区块链事实上是一套分布式的数据库,如果再在其中加进一个符号——比特币,并规定一套协议使得这个符号可以在数据库上安全地转移,并且无需信任第三方,这些特征的组合完美地构造了一个货币传输体系——比特币网络。然而比特币并不完美,其中协议的扩展性是一项不足,例如比特币网络里只有一种符号——比特币,用户无法自定义另外的符号,这些符号可以是代表公司的股票,或者是债务凭证等,这就损失了一些功能。另外,比特币协议里使用了一套基于堆栈的脚本语言,这语言虽然具有一定灵活性,使得像多重签名这样的功能得以实现,然而却不足以构建更高级的应用,例如去中心化交易所等。以太坊从设计上就是为了解决比特币扩展性不足的问题。
6.1.1 项目背景区块链技术是建立信任机制的技术,常常被认为是自互联网诞生以来最具颠覆性的技术。然而自从比特币诞生后,一直以来都没有很好的开发平台,想要借助于区块链技术开发更多的应用还是具有相当难度的,直接使用比特币的架构来开发则很复杂繁琐。事实上,比特币仅仅被设计为一个加密数字货币系统,只能算是区块链技术的一个应用,虽然也具备一些指令程序解析能力,但只是非常基础的堆栈指令,无法用来实现更广阔的业务需求。以太坊是目前使用最广泛的支持完备应用开发的公有区块链系统,本章我们就来介绍一下在该系统中应用的开发与部署方式。与比特币相比,以太坊属于区块链2.0的范畴,是为了解决比特币网络的一些问题而重新设计的一个区块链系统。人们发现比特币的设计只适合加密数字货币场景,不具备图灵完备性,