深度学习
基于比特币网络的核心思想,以太坊项目提出了许多创新的技术概念,包括智能合约、基于账户的交易、以太币和燃料等。1.智能合约智能合约(SmartContract)是以太坊中最为重要的一个概念,即以计算机程序的方式来缔结和运行各种合约。最早在上世纪90年代,NickSzabo等人就提出过类似的概念,但一直因为缺乏可靠执行智能合约的环境,而被当作一种理论设计。区块链技术的出现,恰好补充了这一缺陷。以太坊支持通过图灵完备的高级语言(包括Solidity、Serpent、Viper)等来开发智能合约。智能合约作为运行在以太坊虚拟机(EthereumVirualMachine,EVM)中的应用,可以接受来自外部的交易请求和事件,通过触发运行提前编写好的代码逻辑,进一步生成新的交易和
以太坊项目的基本设计与比特币网络类似。为了支持更复杂的智能合约,以太坊在不少地方进行了改进,包括交易模型、共识、对攻击的防护和可扩展性等。7.3.1 智能合约相关设计1.运行环境以太坊采用以太坊虚拟机作为智能合约的运行环境。以太坊虚拟机是一个隔离的轻量级虚拟机环境,运行在其中的智能合约代码无法访问本地网络、文件系统或其他进程。对同一个智能合约来说,往往需要在多个以太坊虚拟机中同时运行多份,以确保整个区块链数据的一致性和高度的容错性。但另一方面,这也限制了整个网络的容量。2.开发语言以太坊为编写智能合约设计了图灵完备的高级编程语言,降低了智能合约开发的难度。目前,Solidity是最常用的以太坊合约编写语言之一。智能合约编写完毕后,用编译器编译为以太坊虚拟机专用的二进制格式(EVMbytec
7.4.1 客户端和开发库以太坊客户端可用于接入以太坊网络,进行账户管理、交易、挖矿、智能合约等各方面操作。以太坊社区现在提供了多种语言实现的客户端和开发库,支持标准的JSON-RPC协议。用户可根据自己熟悉的开发语言进行选择:·go-ethereum:Go语言实现;·Parity:Rust语言实现;·cpp-ethereum:C++语言实现;·ethereumjs-lib:javascript语言实现;·Ethereum(J):Java语言实现;·ethereumH:Haskell语言实现;·pyethapp:Python语言实现;·ruby-ethereum:Ruby语言实现。上述实现中,go-ethereum的独立客户端Geth是最常用的以太坊客户端之一。用户可通过安装Geth来接入以
本节将介绍如何安装Geth,即Go语言实现的以太坊客户端。这里以Ubuntu16.04操作系统为例,介绍从PPA仓库和从源码编译这两种方式来进行安装。7.5.1 从PPA直接安装首先安装必要的工具包:$apt-getinstallsoftware-properties-common之后用以下命令添加以太坊的源:$add-apt-repository-yppa:ethereum/ethereum$apt-getupdate最后安装go-ethereum:$apt-getinstallethereum安装成功后,则可以开始使用命令行客户端Geth。可用geth--help查看各命令和选项,例如,用以下命令可查看Geth版本为1.6.1-stable:$gethvers
以太坊社区有不少提供智能合约编写、编译、发布、调用等功能的工具,用户和开发者可以根据需求或开发环境自行选择。本节将向开发者介绍使用Geth客户端搭建测试用的本地区块链,以及如何在链上部署和调用智能合约。7.6.1 搭建测试用区块链由于在以太坊公链上测试智能合约需要消耗以太币,所以对于开发者开发测试场景,可以选择本地自行搭建一条测试链。开发好的智能合约可以很容易地切换接口部署到公有链上。注意测试链不同于以太坊公链,需要给出一些非默认的手动配置。1.配置初始状态首先配置私有区块链网络的初始状态。新建文件genesis.json,内容如下;{ "config":{ &q
本节将介绍一个用Solidity语言编写的智能合约案例。代码来源于“Solidity官方文档”中的示例。该智能合约实现了一个自动化且透明的投票应用。投票发起人可以发起投票,将投票权赋予投票人;投票人可以自己投票,或将自己的票委托给其他投票人;任何人都可以公开查询投票的结果。7.7.1 智能合约代码实现上述功能的合约代码如下所示,并不复杂,语法跟JavaScript十分类似:pragmasolidity^0.4.11;contractBallot{ structVoter{ uintweight; boolvoted;
欲戴王冠者,必承其重(Uneasyliestheheadthatwearsacrown)。超级账本(Hyperledger)项目是首个面向企业应用场景的开源分布式账本平台。在Linux基金会的支持下,超级账本项目吸引了包括IBM、Intel、Cisco、DAH、摩根大通、R3等在内的众多科技和金融巨头的贡献参与,以及在银行、供应链等领域的积极应用实践。超级账本社区在成立一年多时间以来,也得到了广泛的关注和飞速的发展,目前已经拥有超过140家企业会员。本章将介绍超级账本项目的发展历史和社区组织,以及旗下的多个顶级开源项目的情况,还将展示开源社区提供的多个高效开发工具。最后面向开发者介绍如何参与到超级账本项目中,进行代码贡献。
2015年12月,由开源世界的旗舰组织Linux基金会牵头,30家初始企业成员(包括IBM、Accenture、Intel、J.P.Morgan、R3、DAH、DTCC、FUJITSU、HITACHI、SWIFT、Cisco等),共同宣布了Hyperledger联合项目成立。超级账本项目为透明、公开、去中心化的企业级分布式账本技术提供开源参考实现,并推动区块链和分布式账本相关协议、规范和标准的发展。项目官方网站为hyperledger.org。超级账本成立之初,就收到了众多的开源技术贡献。IBM贡献了4万多行已有的OpenBlockchain代码,DigitalAsset则贡献了企业和开发者相关资源,R3贡献了新的金融交易架构,Intel也贡献了分布式账本相关的代码。作为一个
每一个成功的开源项目都离不开一个健康、繁荣的社区。超级账本社区自成立之日起就借鉴了众多开源社区组织的经验,形成了以技术开发为主体、积极面向应用的体系结构。超级账本社区的项目开发工作由技术委员会(TechnicalSteeringCommittee,TSC)指导,首任主席由来自IBM开源技术部的CTOChrisFerris担任;管理委员会主席则由来自DigitalAssetHoldings的CEOBlytheMasters担任。另外,自2016年5月起,Apache基金会创始人BrianBehlendorf担任超级账本项目的首位执行总监(ExecutiveDirector)。社区十分重视大中华地区的应用落地和开发情况,2016年12月,“大中华区技术工作组”正式
超级账本(Hyperledger)所有项目代码托管在Gerrit和GitHub(只读,自动从Gerrit上同步)上。目前,主要包括如下顶级项目:·Fabric:包括Fabric、FabricCA、FabricSDK(包括Node.Js、Python和Java等语言)和fabric-api等,目标是区块链的基础核心平台,支持PBFT等新的共识机制,支持权限管理,最早由IBM和DAH发起;·Sawtooth:包括arcade、core、dev-tools、validator、mktplace等。是Intel主要发起和贡献的区块链平台,支持全新的基于硬件芯片的共识机制ProofofElapsedTime(PoET);·Iroha:账本平台项目,基于C++实现,带有不少面向Web和Mobi