




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
区块链技术概述2017年五月 2020 1 27 1 区块链技术介绍 OBC组网与智能合约 智能合约的开发与示例 2020 1 27 2 3 继互联网后的又一大变革时代到来 互联网金融的终极形式 价值互联网的开端 RecordofThings记录一切 区块链在短短时间内获得了巨大的涟漪效应 IBM在2016年2月开放了OpenBlockChain技术并贡献给了Linux社区 引起了业界巨大轰动 那么区块链到底是怎样的一项颠覆性技术 其特点是什么 IBM区块链平台的特点是什么 未来会如何演变 区块链应用与已有应用的关系是什么 本片将对这些问题逐一解链并进行探讨 序 2020 1 27 4 区块链介绍 区块链是一种共享账本技术 商业网络中的任何参与方都可以查看交易系统记录 账本 什么是区块链 2020 1 27 5 区块链是支撑比特币的底层关键技术 区块链技术的分类 公有链Pow Pos DPos 联盟链OBC Etherenumpbft共识 私有链 2020 1 27 6 是不受监管的 抗审查的影子货币区块链确保 类现金 的货币流通唯一的 不可篡改确定的是区块链首个应用区块链不是 区块链是支撑比特币的底层关键技术 什么是区块链 2020 1 27 7 更进一步 什么是 企业级 区块链 智能合约 隐私保护 共享账本 共识 保证共享账本适当的可见性 保证交易是真实和可验证的 交易条款和交易状态内嵌在区块链系统中 驱动交易执行 所有参与者一致同意才意味着交易在网络中通过验证 跨商业网络共享的 不可更改的 分布式交易记录系统 更广泛的参与 更低的成本 更高的效率 什么是区块链 区块链是一种分布式多节点 共识 实现技术 通过区块链可以完整 不可篡改 地记录价值转移 交易 的全过程 区块链的形成按照时间先后顺序进行连接 每一个参与共识形成的节点都有一份区块链信息的完整副本 2020 1 27 8 比特币帐本 什么是区块链 2020 1 27 9 OBC帐本 什么是区块链 2020 1 27 10 共享账本 记录商业网络中的所有交易在参与者之间共享参与者通过同步获取自己的备份授权许可的 参与者只能看到适当的交易记录信息共享的记录系统 什么是区块链 2020 1 27 11 智能合约 合约中的商业规则内嵌在区块链系统中 在交易时被执行可验证的 被签署的编码在编程语言中案例 在公司债权发生转移时执行定义的合同条款 什么是区块链 2020 1 27 12 隐私保护 账本是共享的 但是参与者要求其具有隐私保护参与者需要 交易信息需要保密 身份不和交易绑定交易必须是真实的密码学是这些步骤的核心 什么是区块链 2020 1 27 13 共识 共识是交易验证与确认的过程当参与方是匿名时 交易确认代价高昂 的挖矿过程为匿名者提供验证 但需巨大计算成本 工作证明 当参与者都是已知且可信时 交易确认的成本降低多种替代方案 权益证明 欺诈性交易产生时需要验证 如债券交易 多个签名 如5个参与者中3人的同意 企业级区块链需要 可插拔的 共识 什么是区块链 2020 1 27 14 行业采用区块链的好处 减少成本及复杂度提高可发现性 可信的记录保存共享的可信流程 为什么与业务相关 2020 1 27 15 区块链 并非万能 不适用场景1 高性能 毫秒级 交易2 小型组织 无商业网络 3 寻找数据库的替代方案4 寻找消息传递的解决方案5 寻找交易处理的替代方案 为什么与业务相关 2020 1 27 16 区块链技术平台对比 2020 1 27 第一 跨组织协作 在区块链信任机制中 所有成员参与对信任价值的监督 控制和审计 对地址 链 公钥 私钥 摘要等几乎所有数据记录的要素 进行全生命周期的协作密码保护 而且是全球 随机的 一个联盟链 相当于一台全球超级密码 交换机 密钥签名服务器和密码本的总和 信用连续 第二 永不宕机 因为成员的动态运算机制 所有成员节点 进行实时同步 无法实现局部控制 全球节点的随机分布和相应在运算时钟和动态时间戳的控制下 永远不停机 信用连续 第三 成员监管 区块链强信任的技术特点 来自其节点成员无中心的安全职责 成员局部的协作综合实现了体系安全的监管全部 融监管与过程之中 实现了系统学中安全的正反馈机制 在目前的计算条件下 尚无法通过跨越动态时间戳的可靠超越 信用连续 为何要用区块链 强信任机制解决中心化系统中信用不连续问题 2020 1 27 17 18 区块链运营对比 2020 1 27 19 IBM开放区块链与Linux社区 开放持续投入 代码运行环境账簿数据结构模块化 可插式 共识框架模块化 可插式 身份服务P2P网络技术升级包 SDK API 共识算法库 插入模块 成员管理策略区块链网关开发工具管理控制台 区块链行业应用 基础部分共享账簿 SharedLedger 增值部分 模块 工具 封装 应用部分 项目核心范围内 核心API IBM社区贡献 Hyperledger项目 IBM在Blockchain上持续投入 致力于行业应用是Linux开源社区Hyperledger的主要贡献方 致力于协同其他公司共同研发 公布OpenLedger标准 规格说明书 创建基于Linux的开源共享账簿 比Bitcoin更适合行业应用 推动区块链技术在行业中的应用 行业区块链 Blockchain已经作为一种实验性 网络 服务在Bluemix上推出基于LinuxOne的开放计算平台对Blockchain的支持 IBM区块链 2020 1 27 20 IBM开放区块链 贡献给Linux社区的架构及代码 Community Code MEMBERSHIP包括OBC参与方的身份识别 隐私 可审计性 BLOCKCHAIN TRANSACTIONS经过共识过程进行分布式交易账本处理 CHAIN CODE 智能合约 提供在区块链上运行业务逻辑的能力 APIs SDKs CLI为开发人员提供以可编程方式控制区块链网络的能力 2020 1 27 21 IBM开放区块链名词解释 Transaction交易 账页中的一笔记录 用于确认一个事实 执行一段代码 chaincode Ledger账薄 账册 由首尾相连的一组区块 block 有时也称为一个账页 构成 记录交易和区块世界的状态WorldState区块世界的状态 由一组变量组成 指明交易的执行结果Chaincode交易中记录的一段代码 其执行结果会改变区块世界的状态 Worldstate ValidatingPeer验证节点 OBC区域链网络中的全功能节点 负责验证交易 记录账薄 达成共识Non validatingPeer非验证节点 OBC区域链网络中的半功能节点 负责验证交易 但不执行交易 也不记录账薄 通常用于代理ValidatingPeer 提供RESTservice转发功能Permissioned许可 只接受成员接入 不接受匿名接入Privacy隐私 OBC中任何成员都能发起交易 但只有相关方才能知道 其它无关节点无法从交易回溯到交易方Confidentiality保密 OBC中只有交易相关方可以看到交易内容 其它无关节点只能验证交易的真实性Auditability审计 如果把审计方加入OBC交易 则它可以看到交易 从而审计是否合规 2020 1 27 22 帐本结构示意 2020 1 27 2020 1 27 23 24 OBC角色划分与工作内容 成员服务 MemberServices 注册 Registration 身份管理 IdentityManagement 可审计 Auditibility 验证节点 ValidatingPeer 进行共识 Consensus 运行交易 Transaction 维护账本 Ledger 发出事件 Event 非验证节点 Non ValidatingPeer 维护节点间的安全上下文 SecureContext 代表客户向成员服务或验证节点请求服务向应用交付事件 Event 处理API请求应用 Application 认证客户把客户映射到安全上下文 SecureContext 调用RESTAPI用户 Client 登录与交易 2020 1 27 25 网络拓扑结构 整个OBC网络中含有两种节点 验证节点 ValidatingPeer 和非验证节点 Non ValidationPeer 前者是全功能节点 构成全连通拓扑结构 后者是代理节点 通常挂接在相邻验证节点上应用程序可以连接在验证节点 也可以连接在非验证节点 在OBC网络中需要有一个密钥管理结节 考虑到PBFT算法的3f 1共识机制 典型的容错 允许一个节点故障 环境需要有4个ValidationPeer节点 成员服务MemberServices 用户Client 用户Client 2020 1 27 26 单节点和多节点网络 若OBC网络中只有一个VP节点 极端简化 则应用程序可以直接与该节点连接 执行其上的Chaincode代码 这时VP节点只需要记账 不需要共识若OBC网络中有多个VP节点 则应用程序可以通过NVP节点 NVP与应用程序可以一对多 间接访问VP NVP与VP之间多对一 这时VP节点需要验证交易 运行代码 记录账薄 达成共识 2020 1 27 27 商业票据的Blockchain应用 星形架构 2020 1 27 28 IBM开放区块链参考架构概览 模块与服务 2020 1 27 29 成员管理 Membership 成员管理提供会员注册 身份保护 内容保密 交易审计功能OBC所有成员首先 通过RegistrationAuthority RA 注册获得许可然后 通过EnrollmentCertificateAuthority ECA 获得注册安全证书 ECert 第三步 可选 通过TransactionCertificateAuthority TCA 获得交易安全证书 TCert 使用二者之一签名发起交易请求与公有链不同 所有参与方不需要身份认证 可直接进行交易 2020 1 27 30 成员管理模型 2020 1 27 31 业务网络动态组建示例 第一个节点 OBC节点相关配置位于 IP 9 181 8 8validator enabled truediscovery rootnode rest enabled false 2020 1 27 32 业务网络动态组建示例 第二个节点 第二个节点向根节点发送消息DISC HELLO 含有自己区块链的高度blockNumber和PeerEndpoint 如果根节点应答的DISC HELLO消息中的区块链高度高于第二个节点当前持有的 第二个节点立刻发起synchronizationprotocol以同步账本的最新状态此后第二个节点每5秒钟向所有的已知节点 目前只知道第一个节点 发送DISC GET PEERS消息获得加入网络的其它节点第一个节点收到DISC GET PEERS消息后 回复包含了PeerEndpoint数组的DISC PEERS消息 IP 9 181 8 8validator enabled truediscovery rootnode rest enabled false IP 9 181 8 9validator enabled truediscovery rootnode 9 181 8 8discovery period 5srest enabled false 第二个节点验证节点 第一个节点验证节点根节点 2020 1 27 33 业务网络动态组建示例 第三个节点 第三个节点向根节点发送消息DISC HELLO 含有自己区块链的高度blockNumber和PeerEndpoint 如果根节点应答的DISC HELLO消息中的区块链高度高于第三个节点当前持有的 第三个节点立刻发起synchronizationprotocol以同步账本的最新状态 虽然不执行交易 但是非验证节点维护一个最新的账本副本此后第三个节点每60秒钟向所有的已知节点 第一 二个节点 发送DISC GET PEERS消息获得加入网络的其它节点 考虑到发送间隔 第二个节点应该先于第三个节点发现对方 第一 二个节点收到DISC GET PEERS消息后 回复包含了PeerEndpoint数组的DISC PEERS消息 IP 9 181 8 8validator enabled truediscovery rootnode rest enabled false IP 9 181 9 9validator enabled falsediscovery rootnode 9 181 8 8discovery period 60srest enabled true 第二个节点验证节点 第一个节点验证节点 IP 9 181 8 9validator enabled truediscovery rootnode 9 181 8 8discovery period 5srest enabled false 第三个节点非验证节点 2020 1 27 34 区块 Block 结构 messageBlock version 1 google protobuf Timestamptimestamp 2 bytestransactionsHash 3 bytesstateHash 4 bytespreviousBlockHash 5 bytesconsensusMetadata 6 NonHashDatanonHashData 7 messageBlockTransactions repeatedTransactiontransactions 1 messageNonHashData google protobuf TimestamplocalLedgerCommitTimestamp 1 repeatedTransactionResulttransactionResults 2 messageTransactionResult stringuuid 1 交易IDbytesresult 2 交易执行结果uint32errorCode 3 错误码stringerror 4 错误说明 2020 1 27 35 PBFT原理介绍 核心算法 也叫做3 phasecommit client把一个request广播到所有的replica 确保primary收到请求Primary为这个request分配一个顺序号并广播到其他replica 那些replica检查消息的有效性 同意那个顺序号且确认了message和view 如果replica有了m和有效的pre pare 就进行下一步每个replica发送一个PREPARE消息给其他的replica 所有收到2f个prepare的replica进入commit每个replica广播commit消息 一个replica收到2f个commit消息后 就执行 Execute 序号小于n的所有requestreplica直接返回结果给client client等待f 1个相同的结果 周期性地 replica会做checkpoint来清理log在内存中的prepared committedmessageReplica通过超时机制来监控primary的状态 并适时触发viewchangeprotocol来选举新的primary 代码实现 openchain consensus obcpbft pbft core go 其中 innerStack innerCPI 2020 1 27 36 账链代码 Chaincode OBC中的智能合约 是通过账链代码 Chaincode 来实现 业务逻辑 Logic 账链代码 Chaincode 智能合约 Smartcontract 它嵌在交易中 所有验证节点在确认交易时都必须执行它 执行环境是一个定制化的安全的 沙箱 Docker 目前支持Go 将来支持Java Node js 2020 1 27 37 账链代码相关概念 账链代码的分类 公开的账链代码 通过公开的交易来部署的账链代码 这些代码能被网络中任意成员调用 机密的账链代码 通过机密的交易来部署的账链代码 这些代码只能被网络中指定的做验证的成员调用 访问受控的账链代码 通过内置令牌的机密交易来部署的账链代码 这些代码能被网络中持有对应令牌的成员调用 即使这些成员不是校验者 账链代码的操作类型 部署账链代码 通过交易部署新的账链代码 调用账链代码 通过交易调用已经部署的账链代码 也可以在账链代码中调用其他的账链代码 调用操作可以修改账链代码中的变量信息 查询账链代码 通过交易查询已经部署的账链代码 也可以在账链代码中查询其他账链代码 查询操作不能修改账链代码中的变量信息 账链代码的数据存储账链代码中需要持久化的状态 State 可以存储在世界状态 WorldState 中 2020 1 27 38 VM Chaincode typeVMinterface build ctxtcontext Context idstring args string env string attachstdinbool attachstdoutbool readerio Reader error 建立chaincodeimagestart ctxtcontext Context idstring args string env string attachstdinbool attachstdoutbool error 启动chaincodestop ctxtcontext Context idstring timeoutuint dontkillbool dontremovebool error 停止chaincode typeChaincodeinterface Invoke stub ChaincodeStub functionstring args string error 调用chaincodeQuery stub ChaincodeStub functionstring args string byte error 查询chaincode messageChaincodeMessage enumType UNDEFINED 0 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 12 RESPONSE 13 QUERY 14 QUERY COMPLETED 15 QUERY ERROR 16 RANGE QUERY STATE 17 Typetype 1 消息类型google protobuf Timestamptimestamp 2 bytespayload 3 消息体stringuuid 4 消息ID 首先 ValidatingPeer在执行Deploy交易时 OBC框架会自动创建VM Docker 为其加载 build 账链代码 Chaincode 根据情况启动 start 或停止 stop 账链代码接着 Chaincodeshim会与ValidatingPeer建立反向连接 接收ChaincodeMessage指令 2020 1 27 39 Chaincode操作 2020 1 27 40 State操作 messagePutStateInfo 存数据stringkey 1 bytesvalue 2 messageRangeQueryState 批量取数据stringstartKey 1 开始key 含 字母顺序stringendKey 2 结束key 含 字母顺序 messageRangeQueryStateResponse repeatedRangeQueryStateKeyValuekeysAndValues 1 boolhasMore 2 是否还有后续数据stringID 3 messageRangeQueryStateKeyValue stringkey 1 keybytesvalue 2 value messageRangeQueryStateNext 分批取回stringID 1 messageRangeQueryStateClose 结束stringID 1 2020 1 27 41 账链代码示例 Go 账户A和B之间相互转账主函数 源代码链接 G Runcallbackrepresentingtheinvocationofachaincode ThischaincodewillmanagetwoaccountsAandBandwilltransferXunitsfrom AtoBuponinvokefunc t SimpleChaincode Run stub shim ChaincodeStub functionstring args string byte error Handledifferentfunctionsiffunction init 初始化returnt init stub args elseiffunction invoke 调用账链代码 从账户A转X元到账户returnt invoke stub args elseiffunction delete Deletesanentityfromitsstatereturnt delete stub args returnnil errors New Receivedunknownfunctioninvocation 2020 1 27 42 账链代码示例 Go 初始化函数 func t SimpleChaincode init stub shim ChaincodeStub args string byte error varA Bstring 账户地址varAval Bvalint 账户金额varerrerror 初始化A args 0 获取账户A地址Aval err strconv Atoi args 1 获取账户A初始余额iferr nil returnnil errors
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 七年级生物下册 第四单元 生物圈中的人 第八章 人是生殖和发育 第二节 人的生长发育和青春期教学设计(4)(新版)苏教版
- 七年级道德与法治下册 第三单元 在集体中成长 第六课“我”和“我们”第2框《集体生活成就我》教学设计 新人教版
- 人教版 (2019)必修 第二册Unit 3 The internet教案及反思
- 人教版八年级下册第十一章 功和机械能11.2 功率教案配套
- 剪纸魔法(教学设计)皖教版三年级上册综合实践活动
- 人教版 (新课标)八年级上册第一节 自然资源的基本特征教学设计
- 七年级地理下册 9.3 撒哈拉以南的非洲-黑种人的故乡教学设计 晋教版
- 九年级化学上册 第六单元 课题3 二氧化碳和一氧化碳教学设计 (新版)新人教版
- 一年级道德与法治上册 2 老师您好教学设计 新人教版
- 七年级生物下册 第二单元 第五章 第一节 激素与生长发育教学设计 (新版)冀教版
- 口腔检查-口腔一般检查方法(口腔科课件)
- 畜禽养殖场排查情况记录表
- 2023年高考全国甲卷数学(理)试卷【含答案】
- 弗雷德里克 桑格
- 浅谈初中数学单元整体教学的实践 论文
- 历史时期的地貌变迁优秀课件
- 心血管内科五年发展规划
- GB/T 38620-2020物位计性能评定方法
- 纳米酶研究进展
- GB/T 12009.2-2016塑料聚氨酯生产用芳香族异氰酸酯第2部分:水解氯的测定
- 弹塑性力学(浙江大学课件)
评论
0/150
提交评论