区块链以和区块链技术总结

上传人:大米 文档编号:499408726 上传时间:2023-01-22 格式:DOC 页数:17 大小:736.69KB
返回 下载 相关 举报
区块链以和区块链技术总结_第1页
第1页 / 共17页
区块链以和区块链技术总结_第2页
第2页 / 共17页
区块链以和区块链技术总结_第3页
第3页 / 共17页
区块链以和区块链技术总结_第4页
第4页 / 共17页
区块链以和区块链技术总结_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《区块链以和区块链技术总结》由会员分享,可在线阅读,更多相关《区块链以和区块链技术总结(17页珍藏版)》请在金锄头文库上搜索。

1、 WORD格式可编辑 区块链以及区块链技术总结区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念。从技术角度来看,这是一个牺牲一致性效率且保证最终一致性的的分布式的数据库,当然这是比较片面的。从经济学的角度来看,这种容错能力很强的点对点网络,恰恰满足了共享经济的一个必须要求低成本的可信环境。本次分享一下聊聊区块链技术,以及目前区块链技术架构,并且介绍一下价值互联网。由于区块链是一个新兴的技术概念,本文所有的观点仅代表个人观点,未必全部正确。#1. 技术人员看待区块链的正确姿势区块链虽然是一个新兴的概念,但它依赖的技术一点也不新,如非对称加密技术、P2P网络协议等。好比乐高积木,积木块是

2、有限的,但是不同组合却能产生非常有意思的事物。我接触过一些工程师,初次接触区块链时,不约而同的表达了:都是成熟的技术,不就是分布式存储嘛。站在工程师的角度,第一反应将这种新概念映射到自己的知识框架中,是非常自然的。但是细究之下发现,这种片面的理解可能将对区块链的理解带入一个误区,那就是作为一个技术人员,忽略了区块链的经济学特性一个权力分散且完全自治的系统。区块链本质上是一个基于P2P的价值传输协议,我们不能只看到了P2P,而看不到价值传输。同样的,也不能只看到了价值传输,而看不到区块链的底层技术。可以这么说,区块链更像是一门交叉学科,结合了P2P网络技术、非对称加密技术、宏观经济学、经济学博弈

3、等等知识,构建的一个新领域针对价值互联网的探索。那什么是价值互联网?价值互联网可以是当下如日中天的电子商务所衍生的支付业务。但,真的只是支付领域吗?很显然这是不够的,一级资本市场,实体资产确权与转移,证券登记交割、证信与反欺诈。我们再仔细想想,我们的各大电商平台的专业差评师,恶意刷单还少吗?如今的金融领域,除了支付比较便利之外,在其他绝大部分的业务中,我们就像是被套着锁链走路一样,我们反复确认,反复审核,反复监督,我们反复构建一个又一个的大大小小的高可用集群,保证线上服务的可靠性与连续性,我们雇佣一个又一个的安全工程师,交付一个又一个的渗透测试项目。为什么?因为作弊的成本太低了,低到只要改数据

4、库的一行记录就可以提取上百万的资金。强大的互联网给了我们成本几乎为零的高速信息传输通道,却没有一个成本低廉可靠的高速价值传输通道,那么这也就是区块链即将带来的。区块链是一个公共的分布式总账,下面从技术角度简单介绍一下:想象有一个100台的分布式数据库集群,现在的情况是这100个节点实际上的拥有者是一个机构,并且所有节点处在该机构的内网当中,所以这个机构想让这100个数据库节点干嘛就干嘛,换句话说这100个节点之间是处于一个可信任的环境,并且受控于一个实体,这个实体具有绝对仲裁分配权。另外的情况是这样的,想象这100个节点分别归不同的人所有,且每个人的节点数据都是一样的,即完全冗余,并且所有的节

5、点是处在广域网当中,换句话说就是这100个节点之间是不信任的,且不存在一个实体,它拥有绝对仲裁权。现在考虑第二种情况,采用什么样的算法(共识模型)能够提供一个可信任的环境,使:“1. 每个节点交换数据过程不被篡改;交换历史记录不可被篡改; 2. 每个节点的数据会同步到最新数据,且承认经过共识的最新数据; 3. 基于少数服从多数的原则,整体节点维护的数据本身客观反映了交换历史。”区块链本质上就是要解决以上第二种情况的一种技术方案,更确切的说应该叫分布式的冗余的链式总帐本方案。有关区块链的一些要素,在我以往的文章里有总结过一些:“1. 包含一个分布式数据库 2. 分布式数据库是区块链的物理载体,区

6、块链是交易的逻辑载体,所有核心节点都应包含该条区块链数据的全副本 3. 区块链按时间序列化区块,且区块链是整个网络交易数据的唯一主体 4. 区块链只对添加有效,对其他操作无效 5. 基于非对称加密的公私钥验证 6. 记账节点要求拜占庭将军问题可解/避免 7. 共识过程(consensus progress)是演化稳定的,即面对一定量的不同节点的矛盾数据不会崩溃 8. 共识过程能够解决double-spending问题 ”所以作为一个技术人员,不应当只看到了区块链所依赖的技术,更应该关注区块链以外的点和面,综合来看,区块链将会有趣得多。#2. 区块链的一般性架构介绍有关区块链本身的发展史,网络上

7、资料比较多,本文不再赘述。而有关区块链技术的介绍,在各个区块链平台的社区是有详细资料的,但是针对这些资料的总结,以及抽象出一共通概念的介绍,还是凤毛麟角,本文尝试总结一下。在介绍之前,我想稍微介绍一下公有链,联盟链的概念,这些概念是以太坊创始人Vitalik提出的,我在这些概念的基础上做了一些研究。其实区分公有链、联盟链很简单,只要看这个区块链的访问权限就可以了,如果访问该区块链需要获得链上节点的许可,那么这是一个联盟链,否则是公有链。根据名称,我们也可以”望文生义“,公有表示一个完全开放的网络,联盟表示一个半开放的网络,成员之间是共享的,非成员身份是没有自由访问权限的,所以我们也称联盟链为许

8、可链。下面我们来看几个比较主流的区块链平台(公有链,皆开源):“1. 比特币 Bitcoin 2. 以太坊 Ethereum/经典以太坊 Ethereum Classic 3. 比特股 Bitshares ”我一般戏称为”三巨头“,从生态上来看,比特币是最为成熟稳定的,以太坊更像是一个冲在前面的勇士,比特股相比前两位生态要小很多,但是从创新的角度,也不亚于前两位。其他的很多项目,是从这三个区块链上衍生出来的,所以以这三个为基础,基本上可以吃透区块链了。不得不提的还有Linux基金会项目HyperLedger项目(主打联盟链,开源),也是旨在打造一个通用的区块链技术,不过我认为目前尚在开发迭代当

9、中,还没有具体的应用案例,按下不讲。另外还有一些好玩的联盟链项目R3 CEV项目(联盟链,闭源),以及中国的R3项目ChinaLedger(联盟链,闭源),当然这些不是开源的,我无法获得有用的资料进行分析,所以就不展开了。从技术上来看,针对不同的业务场景,对区块链有不同需求,比如实时结算业务,要求区块链提供秒级的交割,相对应的就是出块速度的要求,而出块速度过快往往会导致区块链分叉(fork),形成孤儿链,孤儿链是无效的,那么交易也就作废了,影响了区块链的最终一致性。如果频繁产生分叉造成相当比例的用户交易失效,那么可以认为系统是不可靠的。如果我们将这种实时性要求比较高的业务安插到联盟链中,就可以

10、控制风险,通过调整共识算法,利用快速一致共识模型(Consensus Model)来避免上述问题,虽然不如公有链那么健壮,但对某些特殊场景足够了。所以架构层面,对公有链和联盟链的技术也要差异化对待。不过客户端整体的设计还是有一些通用的概念的,如下图:(图1)一个区块链至少分为三层:最底层是一些通用的基础模块,比如基础加密算法,网络通讯库,流处理,线程封装,消息封装与解码,系统时间等;中间一层是区块链的核心模块,一般包含了区块链的主要逻辑,如P2P网络协议,共识模块,交易处理模块,交易池模块,简单合约或者智能合约模块,嵌入式数据库处理模块,钱包模块等等;最上面一层,往往都是基于Json Stan

11、dard RPC的交互模块,基于Json-RPC,我们还可以做出更好的UI界面,也可以是一个web-service。如果区块链 支持智能合约,可能还要分更多的层,比如增加BaaS层,区块链上的智能合约提供自治的服务,比如下面这张以太坊的架构图(来自google,仅作参考):(图2)这种分层更加关注的是区块链本身的分层,即业务上的视角,而不完全是技术的。我们再转向比特币的设计:(图3)比特币几个模块之间的耦合度其实比较高,而且有不少历史包袱,比特币的发明者中本聪在开发比特币的时候,使用VC+开发,而VC+的标准库中的sstream流处理性能非常感人,不得不放弃,自行实现了了基于vector的流处

12、理容器。而随着c+11的推出以及标准库的更新迭代,性能不可同日而语。从整张图我们可以看出,比特币的模块比较少,也比较简单。chain-paramters描述了整个区块链的参数设置,wallet是与地址/加密还有存储相关的,mem-pool是未确认的交易池。得益于比特币核心开发者的不朽贡献,相比中本聪时代的比特币代码,现在的比特币代码质量已经相当不错了。以上无论哪种设计,一般都要从P2P网络协议作为切入,作为一个P2P钱包,既要提供Service也要提供Client,作为Service依赖P2P网络协议,作为Client依赖Json-RPC。需要指出的是,目前”三巨头”所使用的账户模型是不同的(

13、所谓账户模型是指账户记账方法),比特币使用UXTO模型,以太坊和比特股使用账户余额模型。UXTO模型(Unspent Transaction Outputs (UTXOs)):此模型表达了一种转移的概念,即任何产生的新币,在以后的生命周期中,只有转移,没有消亡,转移实质上是由加密算法的签名与验证控制的:(图4)账户余额模型:账户余额模型摒弃了这种强验证的账户模型,即账户余额回归到数字加减,这样做提升了交易的效率。#3. 共识算法与分布式终于来到重点了,本文每节其实都可以展开成为独立的文章,内容所限,简单讲。所谓区块链共识过程,在上文有所提及,是指如何将全网交易数据客观记录并且不可篡改的过程。目

14、前”三巨头”分别使用不同的共识算法(Consensus Algorithm), 比特币使用工作量证明PoW(Proof of Work),以太坊即将转换为权益证明PoS(Proof of Stake),比特股使用授权权益证明DPoS(Delegated Proof of Stake)。以上这些算法我称之为“经济学”的算法,所谓经济学的算法,是指让作弊成本可计算,且让作弊成本往往远大于作弊带来的收益,即作弊无利可图,通过这种思想构造一个用于节点之间博弈的算法,并使之趋向一个稳定的平衡。相对应的我们还有计算机领域的分布式一致性算法,例如Paxos、Raft,我也称之为传统分布式一致性算法。他们之间

15、的最大区别是:系统在拜占庭将军(Byzantine Generals Problem)情景下的可靠性,即拜占庭容错(PBFT算法支持拜占庭容错)。然而无论是Paxos还是Raft算法,理论上都可能会进入无法表决通过的死循环(尽管这个概率其实是非常非常低的),但是他们都是满足safety的,只是放松了liveness的要求, PBFT也是这样。下面是一些传统分布式一致性算法和区块链共识过程的异同点:相同点:“1. Append only 2. 强调序列化 3. 少数服从多数原则 4. 分离覆盖的问题:即长链覆盖短链区块,多节点覆盖少数节点日志 ”不同点:“1. 传统分布式一致性算法大多不考虑拜占庭容错(Byzanetine Paxos除外),即假设所有节点只发生宕机、网络故障等非人为问题,并不考虑恶意节点篡改数据的问题; 2. 传统分布式一致性算法是面向日志(数据库)的,即更通用的情况,而区块链共识模型面向交易的,所以严格来说,传统分布式一致性算法

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号