深度学习
目前,全球有数个区块链技术平台,其中比特币(Bitcoin)、以太坊(Ethereum)、瑞波(Ripple)和Linux基金会的开源项目超级账本(Hyperledger Fabric)比较有代表性。
此外,还有比特股(Bitshare)、恒星(Stellar)、R3 Corda等国外区块链技术以及国内一些公司研发的区块链应用平台。
1.3.1 比特币
比特币(Bitcoin)是最早、全球使用最广泛的区块链技术,具有最去中心化、最多分布节点、最公平等特点。
比特币提出了一个不需要信用中介的数字货币系统,通过数字签名(Digital Signatures)使得在线支付能够直接由一方发起并支付给另外一方,中间不需要通过任何的金融机构。同时为了防止双重支付(Double- Spending),它提出了一种采用工作量证明机制的点对点网络来记录交易的公开信息,该网络通过随机散列(Hashing)对全部交易加上时间戳 (Time),将它们合并入一个不断延伸的基于随机散列的工作量证明(Proof of Work)的链条作为交易记录,形成的交易记录将不可更改。只要诚实的节点能够控制绝大多数CPU的计算能力,就能使攻击者难以改变交易记录。节点之间的 工作,大部分是彼此独立的,只需要很少的协同。每个节点都不需要明确自己的身份,可以随时离开网络,若想重新加入网络也非常容易。节点通过自己的计算力进 行投票,表决它们对有效区块的确认,它们不断延长有效的区块链来表达自己的确认,并拒绝在无效区块之后延长区块以表示拒绝。可以说,比特币包含了一个点对 点数字货币系统所需要的全部规则和激励措施。
在比特币这种去中心化的公有区块链系统中,在相互间没有信任基础的前提下需要有一种完成点对点交易的共识机制。比 特币发行的共识机制基于工作量证明算法(挖矿),使用过程基于点对点支付和全局记账,货币有效性基于追溯验证算法。“挖矿”过程就是把系统中没有记录的现 有交易打包到区块里,通过系统提供的计算“挖矿”难度的随机数不断遍历,最先达到条件的会获得记录区块的权利。随后节点将该区块记录通过网络发布广播,全 网其他节点在验证该区块满足条件,同时区块记录的交易符合规定后,分别把该区块记录的信息更新到自己节点的区块链上,从而形成全网账本的共识。
比特币区块链核心技术的框架采用C++语言开发,共识算法采用PoW算法,工作量(挖矿)证明获得记账权,容错50%,实现全网记账,公网性能TPS小于7,开源地址为:https://github.com/bitcoin/bitcoin。比特币发行并运行到现在,说明了区块链技术在数字货币领域的可行性,但其并不能完全代表区块链技术,它只有唯一的数字资产(比特币),而且没有图灵完备的编程语言平台,允许开发人员建立更广泛的分布式账本系统应用。
比特币区块链推出的时间比较早也不够强大(如不支持智能合约)。现在当人们提到“区块链”时,往往已经与比特币网络没有直接联系了,除非特别指出是承载比特币交易系统的“比特币区块链”。但比特币仍是区块链最早也是截至目前数字货币方面最大并且在全球各地经常提及的应用。
在比特币源代码基础上,照搬或进行较小改动之后,还出现了一些区块链技术体系,其中包括一些山寨币,例如彩色币(染色币)等,还有以锚定比特币为基础的比特币侧链等。
1.3.2 以太坊
以太坊是一个通用的数字代币平台[3], 它通过一套图灵完备的脚本语言(Ethereum Virtual MachineCode,EVM语言)建立应用,采用多种编程语言实现协议(编程并不需要直接使用EVM语言,而是使用类似C语言、Python、 Lisp等高级语言,再通过编译器转成EVM语言),采用Go语言编写的客户端作为默认客户端(即与以太坊网络交互的方法,支持其他多种语言的客户端)。 以太坊ETH的开源地址:https://github.com/ethereum。
以太坊的核心目标是智能合约,它可以看作是一个以太坊系统里的自动代理人。它有一个自己的以太币地址,当用户向合 约地址发送一笔交易后,该合约就会被激活,然后根据交易中的额外信息,合约运行自身的代码,最后返回一个结果,这个结果可能是从合约地址发出的另外一笔交 易。需要指出的是,以太坊中的交易不只是发送以太币而已,它还可以嵌入相当多的额外信息。如果一笔交易是发送给合约的,那么这些信息就非常重要,因为合约 将根据这些信息来完成自身的业务逻辑。智能合约的引入对区块链2.0有着极大的推动作用,而作为早期推动智能合约的区块链平台,以太坊一度为广大区块链社 区所看好。智能合约配合友好的界面和一些额外的小支持,可以让用户基于合约搭建各种千变万化的DApp应用,这样使得开发人员开发区块链应用的门槛大大降 低。以太坊架构图如图1-4所示。
图1-4 以太坊架构图
以太坊合并了很多对比特币用户来说十分熟悉的特征和技术,同时自己也进行了很多修正和创新。比特币区块链纯粹是一个关于交易的列表,而以太坊的基础单元是账户。以太坊区块链跟踪每个账户的状态,所有以太坊区块链上的状态转换都是账户之间价值和信息的转移。账户分为两类:
·外部账户,由私人密码控制;
·合约账户,由它们的合约编码控制,只能由外部账户“激活”。
对于大部分用户来说,两者的基本区别在于外部账户是由人类用户掌控——因为他们能够控制私钥,进而控制外部账户。 而合约账户则是由内部编码管控。如果它们是被人类用户“控制”的,那也是因为程序设定了它们被具有特定地址的外部账户所控制,进而被持有私钥控制外部账户 的人控制着。“智能合约”这个流行的术语指的是在合约账户中编码——交易发送给该账户时所运行的程序。用户可以在区块链中部署编码来创建新的合约。
以太坊迭代周期比较快,使得依赖于以太坊特别是以太坊公网的商业应用比较容易受到攻击。The DAO(The DistributedAutonomous Organization,去中心化自治组织)是区块链业界最大的众筹项目,它在短时间内就募集了价值1.3亿美元的数字货币。2016年6月17日,由 于其编写的智能合约存在重大缺陷,运行在以太坊公有链上的The DAO智能合约遭遇攻击[1]。导致300多万以太币资产被分离出The DAO资产池。The DAO官方交流社区DAOhub称,在黑客风波结束及所有的以太币被解锁后,返还所有的以太币,并关闭The DAO。
1.3.3 瑞波
瑞波(Ripple)是开放源码的点到点支付网络,它可以轻松、廉价、安全、跨国界地进行转账。转账对象可以是互联网上的任何一个人,无论他在世界的哪个地方;被转账的可以是清算货币、虚拟货币、数字资产或任意一种有价值的资产。
瑞波使用的共识机制是RPCA,可以通过特殊节点的投票,在很短的时间内对交易进行验证和确认。瑞波客户端不需要下载区块链,它在普通节点上舍弃掉已经验证过的总账本链,只保留最近已验证的总账本和一个指向历史总账本的链接,因而同步和下载总账本的工作量很小。
作为世界上第一个开放的支付网络,瑞波于2015年下半年对外公布了其InterLedger协议项目,该项目的 目标就是打造全球统一的支付标准,创建统一的网络金融传输协议。通过瑞波支付网络可以转账任意一种货币,包括美元、欧元、人民币、日元或者比特币,简便、 易行、快捷,交易确认在几秒内完成,交易费用几乎是零,没有所谓的跨行异地以及跨国支付费用。而且由于是P2P软件,所以没有任何个人、公司或政府操控瑞 波,任何人都可以创建一个账户。
目前,瑞波币和以太坊之间正在争夺世界第二大加密货币的地位,胜负尚未决出。2017年早些时候,瑞波网络已实现 在3.7s内能够完成7万笔交易。瑞波公司为其瑞波共识账本(RCL)和互联账本协议(ILP)引入了新的功能(托管和支付通道),这提高了瑞波币 (XRP)的交易吞吐量,这些改进使得瑞波网络的可扩展性达到了Visa的级别,也就是其交易吞吐量将可与Visa抗衡。
1.3.4 区块链商用平台:超级账本
超级账本(Hyperledger)是Linux基金会的区块链项目,致力于发展跨行业的商用区块链平台技术[4]。 超级账本项目自创立伊始便吸引了众多行业的领头羊,包括金融业、银行、互联网行业、运输业、制作业等。目前,超级账本项目在全球拥有超过100个成员,包 括Cisco、IBM、Intel、J.P.Morgan、荷兰银行、SWIFT等。基于区块链技术、智能合约及其他相关技术,超级账本项目致力于建立新 一代的分布式账本交易应用平台,从而在简化商业流程和法律事务的同时,建立起商业信任、透明、审查能力。旗下的Hyperledger Fabric子项目是以IBM早期捐献出的Open Blockchain为主体搭建而成,当时共向HyperLedger贡献了44000行开源代码。
HyperLedger Fabric是一个带有可插入各种功能模块架构的区块链实施方案,目标是打造成一个由全社会共同维护的开源超级账本。开源地址:https://github.com/hyperledger/fabric。 Fabric的主要框架核心开发语言是Go语言,其更适合于联盟链。早在2016年IBM宣布,计划提供开源代码并持续向超级账本项目 (Hyperledger Project)贡献区块链代码。IBM将提供经过IBM测试与认证的超级账本区块链代码,以及在多种技术平台上进行安装的方法,以便开发者可以在容器 (Container)内执行超级账本的代码,并开始快速构建商品溯源、贸易融资、信用证、供应链以及企业贷款等区块链网络。
可以说,Hyperledger是对传统区块链模型的革新,在某种程度上是允许创建授权和非授权的区块链。Hyperledger还通过提供一个针对身份识别、可审计、隐私安全和健壮的模型,使得缩短计算周期、提高规模效率和响应各个行业的应用需求成为可能。
利用超级账本平台,用户可以轻松地搭建起企业级的区块链网络。在这个网络中,每名成员都可以访问实时更新、加密过 的账本,并能查询及发起交易。一旦交易经过共识流程的验证,它就会立即加入到网络中所有的账本中,并且不能更改。交易结果迅速、私有、保密且易于审计。另 外,早期的超级账本还定义了协议规范:Open Blockchain Protocol Specification,并以此建立了区块链平台Hyperledger Fabric,并可以用于一系列B2B和B2C交易相关的行业案例中。为了满足这些功能及要求,Hyperledger Fabric的实现利用了下述概念:
·智能合约(smart contracts)
·数字资产(digital assets)
·记录存储系统(system of record repositories/stores)
·基于共识的去中心化网络(decentralized consensus-based network)
·可插拔的共识算法及共识模型(pluggable consensus algorithms/models)
·加密安全机制(cryptographic security)
这些概念和功能让Hyperledger Fabric架构结合了3个范畴:成员管理、区块链和智能合约(Chaincode)。这3个范畴是按逻辑划分的,而不是在物理上对独立过程、地址空间或(虚拟)机器的组件分割。
(1)成员管理服务
成员管理提供了诸多服务,包括身份管理、网络隐私、保密及审查。对于非准入型区块链,参与者不需要提供认证许可, 所有的节点都平等地发起交易、验证交易及累积账本。也就是说,在非准入型区块链中没有身份的区别。成员管理服务结合PKI技术和去中心化/共识,将非准入 型区块链转变为准入型区块链。在准入型区块链中,参与者通过注册获取身份认证许可(注册证书),并且通过参与类型区分类别。通过使用身份认证许可,用户可 以向交易认证中心(TCA)申请伪匿名认证许可。只有使用这样的许可信息(即交易证书)用户才可以发起交易。此外,交易证书在区块链上永久存在,审查人员 可以以此追溯交易。
(2)区块链服务
通过建立在HTTP/2上的P2P协议,区块链服务管理分布式账本。账本上的数据结构被高度优化,从而支持对世界状态复制的高效哈希算法。此外,在部署智能合约时,还可以指定不同的共识算法,如PBFT、RAFT、PoW和PoS等。
(3)智能合约
智能合约在Fabric中称为“链码”。链码服务为链码在验证节点上的执行提供了安全轻量级的沙箱。执行环境是一 个“锁定”且安全的容器及一组签名镜像,包含安全操作系统和链码语言、运行时、SDK层。链码语言包括Go、Java和Node.js。此外,可以根据需 求来启用其他语言。在网络中,验证节点与链码可以发出事件,应用程序可以监控并响应这些事件。目前已经预置了一些事件类型,链码还可以发出用户自定义事 件。
1.3.5 区块链技术平台比较
各个区块链技术平台各有千秋,前面提到的共识机制、是否有智能合约功能、适用场景等都是进行比较的主要内容。
1)智能合约:1995年,跨领域法律学者和密码学家尼 克·萨博(Nick Szabo)首次提出了“智能合约”(Smart contract)这一术语。当一个预先编好的条件被触发时,智能合约执行相应的合同条款。从本质上讲,这些智能合约的工作原理类似于其他计算机程序的 if-then语句,智能合约只是以这种方式与真实世界的资产进行交互。以太坊和HyperLedger Fabric等以智能合约为核心的区块链越来越受到重视。
2)适用场景:通常把区块链分为“公有链” (Public blockchain)、“私有链”(Private blockchain)和“联盟链”(Consortium blockchain)3种。公有链对所有人开放,任何人都可以参与比特币,这是最典型的公有链;联盟链仅对特定的组织团体开放;私有链仅对单独的个人或 实体开放。现在业内普遍认为联盟链介于公有链和私有链之间,可视为“部分去中心化”,公众可以查阅和交易,对于验证交易或发布智能合约等功能需要获得联盟 许可。在非数字货币之外的场景中引入区块链技术时,使用哪种区块链,需要对诸多因素进行权衡决策。短期内,主流金融机构仍难以接纳公有链。共识算法的对比 如表1-1所示。
表1-1 共识算法比对
[1] The DAO编写的智能合约中有一个splitDAO函数,攻击者通过此函数中的漏洞重复利用自己的资产不断从The DAO项目的资产池中分离资产给自己。
来源:我是码农,转载请保留出处和链接!
本文链接:http://www.54manong.com/?id=1089
微信号:qq444848023 QQ号:444848023
加入【我是码农】QQ群:864689844(加群验证:我是码农)
全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试
var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!
评论专区