《区块链技术概述》PPT课件.ppt_第1页
《区块链技术概述》PPT课件.ppt_第2页
《区块链技术概述》PPT课件.ppt_第3页
《区块链技术概述》PPT课件.ppt_第4页
《区块链技术概述》PPT课件.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、,区块链技术概述2017年五月,区块链技术介绍,OBC组网与智能合约,智能合约的开发与示例,3,”继互联网后的又一大变革时代到来”、“互联网金融的终极形式”、“价值互联网的开端”、“Record of Things 记录一切”区块链在短短时间内获得了巨大的涟漪效应,IBM在2016年2月开放了OpenBlockChain技术并贡献给了Linux社区,引起了业界巨大轰动。那么区块链到底是怎样的一项颠覆性技术?其特点是什么?IBM区块链平台的特点是什么?未来会如何演变?区块链应用与已有应用的关系是什么?本片将对这些问题逐一解链并进行探讨。,序,4,区块链介绍,区块链是一种共享账本技术 ,商业网络中

2、的任何参与方都可以查看交易系统记录(账本),什么是区块链?,5,区块链是支撑比特币的底层关键技术,区块链技术的分类?,公有链 Pow/Pos/DPos,联盟链 OBC/Etherenum pbft共识,私有链,6,是不受监管的,抗审查的影子货币 区块链确保“类现金”的货币流通 唯一的, 不可篡改 确定的 是区块链首个应用 区块链 不是,区块链是支撑比特币的底层关键技术,什么是区块链?,7,更进一步什么是(企业级)区块链,智能合约,隐私保护,共享账本,共识,保证共享账本适当的可见性;保证交易是真实和可验证的,交易条款和交易状态内 嵌在区块链系统中,驱动 交易执行,所有参与者一致同意才 意味着交易

3、在网络中通 过验证,跨商业网络共享的,不可更改的,分布式交易记录系统,更广泛的参与,更低的成本,更高的效率,什么是区块链?,区块链是一种分布式多节点“共识”实现技术,通过区块链可以完整、“不可篡改”地记录价值转移(交易)的全过程。区块链的形成按照时间先后顺序进行连接,每一个参与共识形成的节点都有一份区块链信息的完整副本。,8,比特币帐本,什么是区块链?,9,OBC帐本,什么是区块链?,10,共享账本,记录商业网络中的所有交易 在参与者之间共享 参与者通过同步获取自己的备份 授权许可的,参与者只能看到适当 的交易记录信息 共享的记录系统,什么是区块链?,11,智能合约,合约中的商业规则内嵌在区块

4、链系统中,在交易时被执行 可验证的、被签署的 编码在编程语言中 案例: 在公司债权发生转移时执行定义的合同条款,什么是区块链?,12,隐私保护,账本是共享的,但是参与者要求其具有隐私保护 参与者需要: 交易信息需要保密 身份不和交易绑定 交易必须是真实的 密码学是这些步骤的核心,什么是区块链?,13,共识,共识是交易验证与确认的过程 当参与方是匿名时 交易确认代价高昂 的挖矿过程为匿名者提供验证,但需巨大计算成本(工作证明) 当参与者都是已知且可信时 交易确认的成本降低 多种替代方案 权益证明, 欺诈性交易产生时需要验证 (如债券交易) 多个签名(如5个参与者中3人的同意) 企业级区块链需要“

5、可插拔的”共识,什么是区块链?,14,行业采用区块链的好处,减少成本及复杂度 提高可发现性,可信的记录保存 共享的可信流程,为什么与业务相关?,15,区块链并非万能,不适用场景 1. 高性能(毫秒级)交易 2. 小型组织 (无商业网络) 3. 寻找数据库的替代方案 4. 寻找消息传递的解决方案 5. 寻找交易处理的替代方案,为什么与业务相关?,16,区块链技术平台对比,第一,跨组织协作。在区块链信任机制中,所有成员参与对信任价值的监督、控制和审计,对地址、链、公钥、私钥、摘要等几乎所有数据记录的要素,进行全生命周期的协作密码保护,而且是全球、随机的。一个联盟链,相当于一台全球超级密码、交换机、

6、密钥签名服务器和密码本的总和, 信用连续。 第二,永不宕机。因为成员的动态运算机制,所有成员节点,进行实时同步,无法实现局部控制,全球节点的随机分布和相应在运算时钟和动态时间戳的控制下,永远不停机, 信用连续。 第三,成员监管。区块链强信任的技术特点,来自其节点成员无中心的安全职责,成员局部的协作综合实现了体系安全的监管全部,融监管与过程之中,实现了系统学中安全的正反馈机制,在目前的计算条件下,尚无法通过跨越动态时间戳的可靠超越, 信用连续。,为何要用区块链强信任机制解决中心化系统中信用不连续问题,18,区块链运营对比,19,IBM开放区块链与Linux社区开放持续投入,代码运行环境 账簿数据

7、结构 模块化(可插式)共识框架 模块化(可插式)身份服务 P2P网络技术升级包,SDK(API) 共识算法库(插入模块) 成员管理策略 区块链网关 开发工具 管理控制台,区块链行业应用,基础部分 共享账簿 (Shared Ledger),增值部分 (模块、工具、 封装),应用部分,项目核心范围内,核心API,IBM 社区贡献,Hyperledger项目,IBM在Blockchain 上持续投入,致力于行业应用 是Linux开源社区 Hyperledger的主要贡献方,致力于协同其他公司共同研发,公布Open Ledger标准(规格说明书),创建基于Linux的开源共享账簿(比Bitcoin更适

8、合行业应用) 推动区块链技术在行业中的应用(行业区块链) Blockchain已经作为一种实验性(网络)服务在Bluemix上推出 基于LinuxOne的开放计算平台对Blockchain的支持 ,IBM区块链,20,IBM 开放区块链: 贡献给Linux社区的架构及代码,Community + Code,MEMBERSHIP 包括OBC参与方的身份识别,隐私,可审计性。 BLOCKCHAIN | TRANSACTIONS 经过共识过程进行分布式交易账本处理。 CHAIN-CODE “智能合约”, 提供在区块链上运行业务逻辑的能力。 APIs, SDKs, CLI 为开发人员提供以可编程方式控

9、制区块链网络的能力。,21,IBM开放区块链名词解释,Transaction 交易。账页中的一笔记录,用于确认一个事实,执行一段代码(chaincode) Ledger 账薄(账册)。由首尾相连的一组区块(block,有时也称为一个账页)构成,记录交易和区块世界的状态 World State 区块世界的状态。由一组变量组成,指明交易的执行结果 Chaincode 交易中记录的一段代码,其执行结果会改变区块世界的状态(World state) Validating Peer 验证节点。OBC区域链网络中的全功能节点,负责验证交易、记录账薄、达成共识 Non-validating Peer 非验证

10、节点。 OBC区域链网络中的半功能节点,负责验证交易,但不执行交易,也不记录账薄,通常用于代理 Validating Peer,提供REST service转发功能 Permissioned 许可。只接受成员接入,不接受匿名接入 Privacy 隐私。OBC中任何成员都能发起交易,但只有相关方才能知道,其它无关节点无法从交易回溯到交易方 Confidentiality 保密。OBC中只有交易相关方可以看到交易内容,其它无关节点只能验证交易的真实性 Auditability 审计。如果把审计方加入OBC交易,则它可以看到交易,从而审计是否合规,22,帐本结构示意,23,OBC角色划分与工作内容,

11、成员服务(Member Services) 注册(Registration) 身份管理(Identity Management) 可审计(Auditibility) 验证节点(Validating Peer) 进行共识(Consensus) 运行交易(Transaction) 维护账本(Ledger) 发出事件(Event) 非验证节点(Non-Validating Peer) 维护节点间的安全上下文(Secure Context) 代表客户向成员服务或验证节点请求服务 向应用交付事件(Event) 处理API请求 应用(Application) 认证客户 把客户映射到安全上下文(Secure

12、 Context) 调用REST API 用户(Client) 登录与交易,24,网络拓扑结构,整个OBC网络中含有两种节点,验证节点(Validating Peer)和非验证节点(Non-Validation Peer)。前者是全功能节点,构成全连通拓扑结构,后者是代理节点,通常挂接在相邻验证节点上 应用程序可以连接在验证节点,也可以连接在非验证节点,在OBC网络中需要有一个密钥管理结节,考虑到PBFT算法的3f+1共识机制,典型的容错(允许一个节点故障)环境需要有4个Validation Peer节点,成员服务 Member Services,用户Client,用户Client,25,单节

13、点和多节点网络,若OBC网络中只有一个VP节点(极端简化),则应用程序可以直接与该节点连接,执行其上的Chaincode代码,这时VP节点只需要记账,不需要共识 若OBC网络中有多个VP节点,则应用程序可以通过NVP节点(NVP与应用程序可以一对多)间接访问VP(NVP与VP之间多对一),这时VP节点需要验证交易、运行代码、记录账薄、达成共识,26,商业票据的Blockchain应用-星形架构,27,IBM开放区块链参考架构概览(模块与服务),28,成员管理(Membership),成员管理提供会员注册、身份保护、内容保密、交易审计功能 OBC所有成员 首先,通过Registration Au

14、thority(RA)注册获得许可 然后,通过Enrollment Certificate Authority(ECA)获得注册安全证书(ECert), 第三步(可选),通过Transaction Certificate Authority(TCA)获得交易安全证书(TCert) 使用二者之一签名发起交易请求 与公有链不同(所有参与方不需要身份认证,可直接进行交易),29,成员管理模型,30,业务网络动态组建示例:第一个节点,OBC节点相关配置位于 在配置文件的peer小节中, validator_enabled为true表示节点是验证节点,否则是非验证节点 discovery_rootnod

15、e在启动时使用,当这个参数被设置时节点会使用discovery protocal查找其他节点。这个参数是网络上另外一个节点的IP,这个节点作为网络上所有节点进行discover的起始点。 rest_enabled表明节点是否接受REST请求,对于生产环境一般把验证节点设置为false,只让非验证节点接受来自应用的REST请求 第一个节点 验证节点 根节点,IP: validator_enabled : true discovery_rootnode: rest_enabled: false,31,业务网络动态组建示例:第二个节点,第二个节点向根节点发送消息DISC_HELL

16、O,含有自己区块链的高度blockNumber和PeerEndpoint。 如果根节点应答的DISC_HELLO消息中的区块链高度高于第二个节点当前持有的,第二个节点立刻发起synchronization protocol以同步账本的最新状态 此后第二个节点每5秒钟向所有的已知节点(目前只知道第一个节点)发送DISC_GET_PEERS消息获得加入网络的其它节点 第一个节点收到DISC_GET_PEERS消息后,回复包含了PeerEndpoint 数组的DISC_PEERS消息,IP: validator_enabled : true discovery_rootnode:

17、 rest_enabled: false,IP: validator_enabled : true discovery_rootnode: discovery_period: 5s rest_enabled: false,第二个节点 验证节点,第一个节点 验证节点 根节点,32,业务网络动态组建示例:第三个节点,第三个节点向根节点发送消息DISC_HELLO,含有自己区块链的高度blockNumber和PeerEndpoint。 如果根节点应答的DISC_HELLO消息中的区块链高度高于第三个节点当前持有的,第三个节点立刻发起synchronizatio

18、n protocol以同步账本的最新状态,虽然不执行交易,但是非验证节点维护一个最新的账本副本 此后第三个节点每60秒钟向所有的已知节点(第一、二个节点)发送DISC_GET_PEERS消息获得加入网络的其它节点(考虑到发送间隔,第二个节点应该先于第三个节点发现对方) 第一、二个节点收到DISC_GET_PEERS消息后,回复包含了PeerEndpoint 数组的DISC_PEERS消息,IP: validator_enabled : true discovery_rootnode: rest_enabled: false,IP: validator_e

19、nabled : false discovery_rootnode: discovery_period: 60s rest_enabled: true,第二个节点 验证节点,第一个节点 验证节点,IP: validator_enabled : true discovery_rootnode: discovery_period: 5s rest_enabled: false,第三个节点 非验证节点,33,区块(Block)结构,message Block version = 1; tobuf.Timestamp ti

20、mestamp = 2; bytes transactionsHash = 3; bytes stateHash = 4; bytes previousBlockHash = 5; bytes consensusMetadata = 6; NonHashData nonHashData = 7; message BlockTransactions repeated Transaction transactions = 1; message NonHashData tobuf.Timestamp localLedgerCommitTimestamp = 1; repeated

21、 TransactionResult transactionResults = 2; message TransactionResult string uuid = 1;/ 交易 ID bytes result = 2;/ 交易执行结果 uint32 errorCode = 3;/ 错误码 string error = 4;/ 错误说明 ,34,PBFT原理介绍: 核心算法 (也叫做3-phase commit),client把一个request广播到所有的replica, 确保primary收到请求 Primary为这个request分配一个顺序号并广播到其他replica;那些replic

22、a检查消息的有效性,同意那个顺序号且确认了message和view;如果replica有了m和有效的pre-pare, 就进行下一步 每个replica发送一个PREPARE消息给其他的replica,所有收到2f个prepare的replica进入commit 每个replica广播commit消息,一个replica收到2f个commit消息后,就执行(Execute)序号小于n的所有request replica直接返回结果给client, client等待f+1个相同的结果。 周期性地,replica会做checkpoint来清理log在内存中的prepared/committed m

23、essage Replica通过超时机制来监控primary的状态,并适时触发view change protocol来选举新的primary。,代码实现: /openchain/consensus/obcpbft/pbft-core.go ; 其中:innerStack=innerCPI,35,账链代码(Chaincode),OBC中的智能合约,是通过账链代码(Chaincode)来实现。 业务逻辑(Logic) = 账链代码(Chaincode) = 智能合约(Smart contract) 它嵌在交易中,所有验证节点在确认交易时都必须执行它。 执行环境是一个定制化的安全的“沙箱”(Doc

24、ker) 目前支持Go, 将来支持Java, Node.js,36,账链代码相关概念,账链代码的分类: 公开的账链代码:通过公开的交易来部署的账链代码,这些代码能被网络中任意成员调用。 机密的账链代码:通过机密的交易来部署的账链代码,这些代码只能被网络中指定的做验证的成员调用。 访问受控的账链代码:通过内置令牌的机密交易来部署的账链代码,这些代码能被网络中持有对应令牌的成员调用(即使这些成员不是校验者)。 账链代码的操作类型: 部署账链代码:通过交易部署新的账链代码。 调用账链代码:通过交易调用已经部署的账链代码,也可以在账链代码中调用其他的账链代码。调用操作可以修改账链代码中的变量信息。 查

25、询账链代码:通过交易查询已经部署的账链代码,也可以在账链代码中查询其他账链代码。查询操作不能修改账链代码中的变量信息。 账链代码的数据存储 账链代码中需要持久化的状态(State),可以存储在世界状态(World State)中。,37,VM REGISTER = 1; REGISTERED = 2; INIT = 3; READY = 4; TRANSACTION = 5; COMPLETED = 6; ERROR = 7; GET_STATE = 8; PUT_STATE = 9; DEL_STATE = 10; INVOKE_CHAINCODE = 11; INVOKE_QUERY =

26、12; RESPONSE = 13; QUERY = 14; QUERY_COMPLETED = 15; QUERY_ERROR = 16; RANGE_QUERY_STATE = 17; Type type = 1;/ 消息类型 tobuf.Timestamp timestamp = 2; bytes payload = 3;/ 消息体 string uuid = 4;/ 消息 ID ,首先,Validating Peer在执行Deploy交易时,OBC框架会自动创建VM(Docker),为其加载(build)账链代码( Chaincode),根据情况启动(start)或

27、停止(stop)账链代码 接着,Chaincode shim会与Validating Peer建立反向连接,接收ChaincodeMessage指令,38,Chaincode操作,39,State操作,message PutStateInfo / 存数据 string key = 1; bytes value = 2; message RangeQueryState / 批量取数据 string startKey = 1;/ 开始key(含),字母顺序 string endKey = 2;/ 结束key(含),字母顺序 message RangeQueryStateResponse repea

28、ted RangeQueryStateKeyValue keysAndValues = 1; bool hasMore = 2;/ 是否还有后续数据 string ID = 3; message RangeQueryStateKeyValue string key = 1;/ key bytes value = 2;/ value message RangeQueryStateNext / 分批取回 string ID = 1; message RangeQueryStateClose / 结束 string ID = 1; ,40,账链代码示例(Go),账户A和B之间相互转账 主函数(源代码

29、链接:G),/ Run callback representing the invocation of a chaincode/ This chaincode will manage two accounts A and B and will transfer X units from / A to B upon invokefunc (t *SimpleChaincode) Run(stub *shim.ChaincodeStub, function string, args string) (byte, error) / Handle different functions if func

30、tion = “init” / 初始化 return t.init(stub, args) else if function = “invoke” / 调用账链代码,从账户A转X元到账户 return t.invoke(stub, args) else if function = delete / Deletes an entity from its state return t.delete(stub, args) return nil, errors.New(Received unknown function invocation),41,账链代码示例(Go),初始化函数:,func (t

31、 *SimpleChaincode) init(stub *shim.ChaincodeStub, args string) (byte, error) var A, B string / 账户地址 var Aval, Bval int / 账户金额 var err error . . . / 初始化 A = args0 / 获取账户A地址 Aval, err = strconv.Atoi(args1) / 获取账户A初始余额 if err != nil return nil, errors.New(“Expecting integer value for asset holding”) B = args2 . . . fmt.Printf(“Aval = %d, Bval = %dn”, Aval, Bval) / 将变量信息写入账本中 err = stub.PutState(A, byt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论