”
区块链技术重塑世界
作者赵明
区块链定义
区块链技术到底是什么?很少有人能解释清楚。市面上关于区块链的书籍有很多,内容基本都是关于区块链能做什么、区块链的未来前景等。总的来说,区块链是一套协议和一套规范,而不是具体的代码或项目。
金融行业的人会说区块链是分布式账本、分布式银行记账系统。
加密动物学家会说区块链是一个使用密码学构建的不信任网络。
程序员)可能会说区块链是一个确保最终一致性的分布式数据库。 (ps:基于对IBM Hyperledger 项目结构的理解。)
吃瓜群众可以从网上得到定义:区块链是一种起源于比特币的分布式数据库。区块链是一系列使用密码学方法生成的数据块。每个数据块包含有关比特币网络交易的信息,用于验证信息的有效性(防伪)并生成下一个块。这个概念是在中本聪的白皮书中提出的,他创建了第一个区块“创世区块”(来自维基百科)。
区块链技术三要素
p2p网络通信
集权
分布式
去中心化
注:今天所说的去中心化是一种理想状态,就像共产主义理想一样。现阶段区块链去中心化本质上是相对去中心化的。
共识算法
在影视剧中,这种弱肉强食、作伪证的情况很常见。然而,在基于p2p通信的数千个节点中,如果想要与其他节点勾结作恶,除非“大多数节点”由一个统一的组织(人)控制,有共同的利益,并且利益最大化,否则是不可能实现的。超过成本。
这里“大多数节点”用引号引起来,因为有些算法在51%的多数临界点无法达成共识。例如,PBFT需要66%以上的确认节点才能达成共识。比如现在比特币网络中就有人提出了这样的担忧,因为大约75%的算力都被中国矿池控制了。
加密算法
结合
作恶:需要在数千个平等节点中寻找作恶同谋。通常,作恶的回报不如作恶的成本。这从根本上防止了大量坏节点的出现。比如比特币的POW共识算法,即使结合了比特币网络51%以上的算力实现双花和硬分叉,也可能不足以支付电费。
停机时间:这个很容易理解。所有节点都是平等的。如果其中一台宕机,不会影响整个网络的持续运行。
区块链应用的四大前景
区块链金融
区块链技术被发现后,这句话被反复引用。不管是不是炒作,我们都要看到区块链在处理金融服务方面所具有的独特优势。银行如果不思考变革,就会被时代抛弃。不可避免的。因此,花旗银行、汇丰银行、摩根士丹利等42家巨头银行加入区块链初创公司创建的R3区块链联盟也不难理解。
价值互联网
共享经济
智能合约
开源项目
超级账本
Hyperledger项目非常适合联盟链和私有链的建设。目前,Hyperledger 的开源代码实现Fabric 由IBM 孵化,采用Go 语言开发。当前版本是0.6。还有很多陷阱,需要时间来填补。我们的项目也是基于Fabric的。因此,现在开始学习Fabric应该是一个更好的选择。
以太坊
国内现状
巴比
小蚂蚁
唯链
急性心肌梗塞
云现象
太乙
如何从技术角度理解区块链?
作者陈浩
技术人看待区块链的正确态度
我见过一些工程师。当他们第一次接触区块链时,他们都一致表示:都是成熟的技术,而不仅仅是分布式存储。从工程师的角度来看,第一反应是将这个新概念映射到自己的知识框架中,这是很自然的。但仔细审视,我们发现这种片面的认识可能会导致对区块链的误解,即作为技术人员,我们忽视了区块链的经济特性,它是一个去中心化的、完全自治的系统。
区块链本质上是一种基于P2P的价值传输协议。我们不能只看到P2P而看不到价值传输。同样,我们也不能只看到价值传输而看不到区块链的底层技术。
可以说,区块链更像是一门交叉学科,它结合了P2P网络技术、非对称加密技术、宏观经济学、经济博弈等知识,构建了价值互联网探索的新领域——。
那么什么是价值互联网呢?价值互联网可以是当前蓬勃发展的电子商务衍生出的支付业务。但是,这真的只是支付领域吗?显然这还不够,一级资本市场、实物资产的确认和转让、证券登记和交割、征信和反欺诈。仔细想一想,我们各大电商平台上恶意欺骗订单的专业差评员还太少吗?
如今的金融领域,除了支付的便利之外,在其他大多数业务中,我们就像是带着锁链行走。我们反复确认、反复审查、反复监督,我们反复搭建一个又一个大大小小的系统。小型高可用集群保证在线服务的可靠性和连续性。我们聘请了一位又一位安全工程师,交付了一个又一个渗透测试项目。为什么?因为作弊成本非常低,只要更改数据库中的一行记录,就可以提取数百万资金。
强大的互联网给了我们几乎零成本的高速信息传输通道,但不存在低成本且可靠的高速价值传输通道。所以这就是区块链将带来的。
区块链是一种公共分布式账本。这里从技术角度简单介绍一下。
想象一下有一个具有100 个节点的分布式数据库集群。目前的情况是,这100个节点的实际拥有者是一个组织,所有节点都在该组织的内网中,所以这个组织想要这100个数据库节点就为所欲为。换句话说,这100个节点处于可信赖的环境中,并由一个拥有绝对仲裁权和分配权的实体控制。
另一种情况是这样的。想象一下,这100个节点分别属于不同的人,每个人的节点数据都是相同的,即完全冗余,并且所有节点都在广域网中。换句话说,这100个节点之间没有信任,没有一个实体拥有绝对的仲裁权。
现在考虑第二种场景,可以使用什么样的算法(共识模型)来提供一个值得信赖的环境,以便:
各节点的数据交换过程不可篡改;兑换历史记录不可篡改;
各节点的数据会同步到最新数据,共识后最新数据才会被认可;
基于少数服从多数的原则,整体节点维护的数据客观反映了交易历史。
区块链本质上是解决上述第二种情况的技术方案。更准确的来说,应该称为分布式冗余链账本解决方案。我之前的文章总结了区块链的一些要素:
包含分布式数据库
分布式数据库是区块链的物理载体,区块链是交易的逻辑载体。所有核心节点都应包含区块链数据的完整副本。
区块链按时间序列化区块,区块链是全网交易数据的唯一主体
区块链只对添加有效,对其他操作无效
基于非对称加密的公私钥验证
记账节点要求可以解决/避免拜占庭将军问题
共识过程(共识进度)是进化稳定的,即面对来自不同节点的一定量的矛盾数据时不会崩溃。
共识过程可以解决双花问题
因此,作为技术人员,不仅要看到区块链所依赖的技术,还要关注区块链以外的点和方面。综合起来,区块链将会更加有趣。
区块链总体架构介绍
关于区块链技术的介绍,在各个区块链平台的社区里都有详细的资料。然而,对这些材料的总结和抽象常见概念的介绍仍然很少。本文试图进行总结。
在介绍之前,我先简单介绍一下公链和联盟链的概念。这些概念是由以太坊创始人维塔利克提出的。我在这些概念的基础上做了一些研究。
其实区分公链和联盟链非常简单。只要看看这个区块链的访问权限就可以了。如果访问区块链需要链上节点的许可,那么这就是联盟链,否则就是公有链。根据名字,我们也可以“字面意思”。公有意味着完全开放的网络,联盟意味着半开放的网络。它在成员之间共享。非会员没有自由的访问权限,所以我们也叫联盟链。权限链。
我们先来看看一些比较主流的区块链平台(公有链,全部开源):
比特币比特币
以太坊/经典以太坊以太坊经典
比特股比特股
我一般戏称他们为“三巨头”。从生态角度来看,比特币是最成熟、最稳定的。以太坊更像是冲锋在前的战士。比特股的生态系统比前两者要小得多,但从创新的角度来看,并不比前两者少。很多其他的项目都是由这三个区块链衍生出来的,所以基于这三个,你基本上就可以深入了解区块链了。
不得不提的是Linux基金会项目——HyperLedger项目(主要是联盟链,开源),该项目也旨在打造通用的区块链技术。不过我认为目前还处于开发迭代阶段,还没有具体的应用案例。按下次我不会再说了。
还有一些银行寡头之间的联盟链项目,——R3 CEV项目(联盟链,闭源),以及中国的R3项目——ChinaLedger(联盟链,闭源)。当然,这些都不是开源的,我无法获得有用的信息进行分析。所以不会展开。
从技术角度来看,不同的业务场景对区块链有不同的需求。例如,实时结算业务需要区块链提供秒级传递,这对应了区块生成速度的要求,而区块生成速度太快了。它经常导致区块链分叉并形成孤链。如果孤儿链失效,那么交易就会失效,影响区块链的最终一致性。如果频繁的分叉导致很大一部分用户交易失败,那么系统就可以被认为是不可靠的。
如果我们将这种实时性要求较高的业务插入到联盟链中,我们可以通过调整共识算法,采用快速共识模型(Consensus Model)来控制风险,避免上述问题。虽然不如公链健壮,但对于一些特殊场景来说已经足够了。因此,在架构层面,公链和联盟链的技术也必须区别对待。
不过客户端的整体设计还是有一些共同的概念,如下图:
区块链至少分为三层。最底层是一些常用的基础模块,比如基础加密算法、网络通信库、流处理、线程封装、消息封装与解码、系统时间等;
中间层是区块链的核心模块,一般包含区块链的主要逻辑,如P2P网络协议、共识模块、交易处理模块、交易池模块、简单合约或智能合约模块、嵌入式数据库处理模块等。钱包模块等;
最顶层通常是基于Json 标准RPC 的交互模块。基于Json-RPC,我们还可以做出更好的UI界面,也可以是一个web-service。
如果区块链支持智能合约,可能会分为更多层,比如增加BaaS层。区块链上的智能合约提供自治服务,比如下面的以太坊架构图(来自Google,仅供参考):
这种分层更注重区块链本身的分层,即从业务角度,而不是完全从技术角度。
我们来看看比特币的设计:
比特币的几个模块之间的耦合度其实是比较高的,有很多历史包袱。比特币的发明者——中本聪开发比特币的时候,是用VC++来开发的,VC++标准库中的sstream流处理性能令人印象深刻,以至于我不得不放弃,实现了基于向量的流处理我自己的容器。随着c++11的引入以及标准库的迭代,性能已经不一样了。
从整个图中我们可以看到,比特币的模块相对较少,也比较简单。 chain-paramters描述了整个区块链的参数设置,wallet是与地址/加密和存储相关的,mem-pool是未确认的交易池。得益于Bitcoin Core开发者的不朽贡献,目前的比特币代码质量相对于中本聪时代的比特币代码来说是相当不错的。
无论以上设计如何,一般都是以P2P网络协议为出发点。作为一个P2P钱包,它必须同时提供Service和Client。作为Service,它依赖于P2P网络协议,作为Client,它依赖于Json-RPC。
需要指出的是,“三巨头”目前采用的账户模型各有不同(所谓账户模型是指账户核算方法)。比特币使用UXTO模型,以太坊和比特股使用账户余额模型。
UXTO模型(Unspent Transaction Outputs(UTXOs)):该模型表达了转移的概念,即任何新产生的货币都只会在后续的生命周期中被转移,而不会消亡。传输本质上是加密算法的签名,带有验证控制:
账户余额模型:账户余额模型抛弃了这种强验证账户模型,即账户余额回归数字加减法,提高了交易效率。
共识算法与分发
最后,我们进入正题。本文的每个部分实际上都可以展开为一篇独立的文章。由于内容有限,我们简单说一下。
上文所说的区块链共识过程,是指客观记录全网交易数据并使其不可篡改的过程。目前,“三巨头”使用不同的共识算法(Consensus Algorithm)。比特币使用工作量证明(PoW),以太坊即将转换为权益证明(Proof of Stake),比特股使用授权权益证明(DPoS)。 (委托权益证明)。
我将上述算法称为“经济”算法。所谓经济算法,是指让作弊的成本变得可计算,并且让作弊的成本往往远远大于作弊的收益,即作弊是无利可图的。通过这个思想构建了节点间博弈的算法,并使其趋于稳定的均衡。相应的,我们在计算机领域也有分布式共识算法,比如Paxos、Raft,我也称之为传统的分布式共识算法。
它们之间最大的区别在于:系统在拜占庭将军问题场景下的可靠性,即拜占庭容错(PBFT算法支持拜占庭容错)。不过Paxos和Raft算法理论上都可能会进入投票无法通过的死循环(虽然这个概率实际上非常非常低),但是它们都满足了安全性的要求,但是放宽了活性的要求。 PBFT 也是如此。
以下是传统分布式共识算法与区块链共识流程的一些异同。我们先来看看相似之处:
仅追加
强调序列化
少数服从多数的原则
分离覆盖问题:即长链覆盖短链区块,多个节点覆盖少数节点日志。
区别如下:
传统的分布式共识算法大多不考虑拜占庭容错(拜占庭Paxos除外),即假设所有节点只经历宕机、网络故障等非人为问题,不考虑恶意节点篡改数据的问题;
传统的分布式共识算法是面向日志(数据库)的,也就是更一般的情况,而区块链共识模型是面向交易的,所以严格来说,传统的分布式共识算法应该在区块链共识模型层以下。
考虑到上述差异,结合公有链和联盟链的特点,我们有:
联盟链:一种半封闭的生态价值网络,具有点对点互不信任的节点,例如某个协会的成员。
公链:开放的生态价值网络。该层主要为产业链、私有链提供全球交易网络。
由于联盟产业链半封闭半开放的性质,采用XXX的委托证明是可行的。也可以考虑在传统共识算法的基础上加入拜占庭容错/安全保护机制进行改进。
对于公链来说,PoW/Pos/DPos等“经济”算法可能是最优算法。从技术上来说,对于上述不同的共识算法,我们很多新开发的区块链都支持一个特性:共识模块是可插拔的,以应对不同场景的需求。
下图是未来区块链生态系统示意图:
公链提供了一个值得信赖、可靠的价值传输网络,您可以在其上继续构建去中心化应用(DAPP)或部署联盟链,甚至传统数据库,并在上层构建C端应用。
这是未来区块链发展的示意图:
ref: 元界白皮书-CN(摘要)
“三巨头”中,比特币靠近“数字货币”,比特股靠近“去中心化交易所”,以太坊靠近“去中心化组织”。事实上,区块链与现实的接触点仍然在图中所示的位置。因此,区块链仍然是一个正在成长的东西。基于图5,我们希望构建一个基础设施完善的价值传输网络和上层应用丰富的区块链生态系统,这仍然需要巨大的努力。
下一个目标是资产数字化(类似于资产证券化)。例如,我们可以将稀有物品(艺术品/古董)数字化,将知识产权数字化,将票据资金等收入权数字化。这将大大提高市场运行的效率,配备智能合约,甚至人工智能,可编程社会不再是梦想。
喜欢我们的人会喜欢,爱我们的人会分享!