




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2.开源区块链技术平台比特币、以太坊与超级账本可以写机构名称目录CONTENTS01BITCOIN比特币02ETHEREUM以太坊04SUMMARY课程总结03HYPERLEDGER超级账本0506REFERENCE参考资料ASSIGNMENT课后习题00PART引导思考几个问题区块链1.0和区块链2.0的技术架构是怎样的?区块链有哪些特征?区块链有哪些关键技术?学习目标知识目标掌握开源区块链技术平台相关基础知识熟悉比特币底层区块链技术、以太坊和超级账本的基本原理了解三种区块链技术平台的处理流程技能目标理解三个开源区块链技术平台学习重点比特币区块链技术的算法处理流程、以太坊状态转换函数及区块确认算法和超级账本中的智能合约学习难点以太坊状态转换函数及区块确认算法和超级账本中的智能合约01PART比特币一种P2P形式的虚拟的加密数字货币2.1.1比特币简介
添加你的副标题文字说明及简要标题文字概述2010年,Laszlo使用10000个比特币购买了两张价值25
美元的披萨被认为是比特币在现实世界中的第一笔交易。2017年,区块链技术随着数字货币的价格暴涨而站在风口之上。2010年的那两块披萨,能够在2017年末价值1.9亿美元。密码学运筹学数学基础?底层技术实质?货币电子货币网络虚拟电子货币由开源的P2P软件产生什么是比特币?区块链:一个分布式数据库系统、去中心化的记账系统互联网技术比特币底层技术?2.1.1比特币简介2008年11月1日中本聪《白皮书》在比特币的世界里,永远是共同建设比个人为恶收获要大的多。在信息不对称情况下,去中心,形成信任机制2.1.1比特币简介
添加你的副标题文字说明及简要标题文字概述构建比特币数据结构与交易信息加密传输的基础技术狭义来讲:区块链是一种按照时间顺序将数据区块依次连接形成的一种链式数据结构,并以密码学方法保证数据块的不可篡改和不可伪造。广义来讲:是利用区块链式数据结构来验证与存储数据,利用分布式节点共识算法来生成和更新数据,利用密码学的方式保证数据传输和访问安全,利用自动化脚本代码组成的智能合约来便成和操作的一种全新的分布式基础架构与计算范式。2.1.1比特币简介
2.1.2比特币底层区块链技术(比特币交易过程)在比特币的世界里,永远是共同建设比个人为恶收获要大的多。1.动态组网P2P网络传输;动态加入/退出3.共识机制竞争协商、保持一致;众人管理、抵抗欺诈2.账本结构特点:时序、公开、可追踪、不可篡改第3章第2章第5章2.1.2比特币底层区块链技术(3个核心技术)1.账本数据结构2.算法处理流程3.协议报文格式消息头消息体2.1.2比特币底层区块链技术比特币总账本数据结构区块头的数据结构交易的数据结构TxIn的数据结构挖矿奖励的数据结构TxOut的数据结构挖矿记账过程难度系数调整交易的签名与校验过程账链的竞争与协商过程2.1.2比特币底层区块链技术-1账本数据结构……账本1账本2账本3账本4账本5账本n字节数/B字段名数据类型描述80blockheaderBlock_header区块头(BlockHeader)可变transactioncountCompactSizeunit交易数量(含第一个补贴交易)可变transactionsRawtransaction交易排列顺序与默克尔树(MerkleTree)一致表2-1比特币总账本数据结构区块头区块头区块头区块主体1M表2-2区块头Blockheader的数据结构字节数/B字段名数据类型描述4versionUnit32_t区块版本:1,2,3,4……32Previousblockheaderhashchar[32]前一个区块的哈希值32Merkleroothashchar[32]默克尔根的哈希值4timeUnit32_t矿工开始计算区块头哈希值的本地时刻4nBitsUnit32_t目标阈值(编码),区块头哈希值必须小于等于目标阈值4nonceUnit32_t掷骰子随机数,为了更改区块头内容,使其哈希值小于等于目标阈值Height012表2-3交易的数据结构表2-4TxIn(输入)的数据结构字节数/B字段名数据类型描述4versionUnit32_t交易版本可变txIncountCompactSizeunit交易输入量可变txIntxIn输入明细可变txOutcountCompactSizeunit交易输出量可变txOuttxOut输出明细4Lock_timeUnit32_t记录时间或者区块号字节数/B字段名数据类型描述36previous_outputOutpoint上一笔交易的输出点可变Script
bytesCompactSizeunit脚本长度可变Signaturescriptchar[]脚本内容,公钥验证后可执行4sequenceUnit32_t序号,默认0xffffffff表2-5挖矿奖励的数据结构表2-6TxOut(输出)的数据结构字节数/B字段名数据类型描述32hashChar[32]32个0,无上一笔交易号4indexUnit32_t0xffffffff可变script
bytesCompactSizeunit脚本长度,最长100B可变heightscript账簿高度,共4B可变CoinbasescriptChar[]脚本内容,最长100B4sequenceUnit32_t序号,默认为0x00000000字节数/B字段名数据类型描述8valueInt64_t金额(单位是satoshi),可以为01+Pk_scriptbytesCompactSizeunit脚本长度,最长10000B(收款方公钥地址)可变Signaturescriptchar[]脚本内容,执行条件1.为什么记账?2.谁的帐为准?3.如何奖励记账的人?4.如何实现挖矿记账过程?挖矿?当用户向比特币网络中发布交易后,需有人对交易进行确认,形成新的区块,串联到区块链中。在一个互相不信任的分布式系统中,该由谁来完成这件事情呢?比特币网络采用了“挖矿”的方式来解决这个问题。区块链包含N个随时间排序的块,每个块都有一个指向前一区块的指针,所有块通过这个指针形成一个链,所以称为区块链。第一个块称为创世区块
2.1.2比特币底层区块链技术-2算法流程处理-(1)挖矿记账过程2.1.2比特币底层区块链技术-2算法流程处理-(1)挖矿记账过程挖矿:从计算机和代码的角度说,是反复执行Hash函数并检测执行结果的具体过程。是参与维护
比特币网络的节点,通过协助生成新区块获取一量新增比特币的过程。区块:用字符串表示,分区块头+块记账哈希函数:Hash(原始信息)=摘要信息Hash(张三借给李四100万,利息1%,1年后还本息……)=AC4635D34DEF(信息简化标识隐藏加密)
Hash运算产生新块头部:Hash:sha256(sha256(字符串))得到256位数矿工:挖矿的程序或者机器统称矿工区块高度:区块在区块链中的序号,成为区块的高度挖矿本质:执行Hash函数的过程,Hash函数是一个单输入单输出函数,输入数据就是一个区块头merkel树:MerkleTree是一种数据结构中所说的树,网上大都称为MerkleHashTree,这是因为它所构造的MerkleTree的所有节点都是Hash值。2.1.2比特币底层区块链技术-2算法流程处理-(1)挖矿记账过程生成空白区块按序生成默克尔根计算散列值XX满足条件?获得创建区块权利填入nonce,签名封装区块全网广播Y不停掷骰子如监听到新交易决定是否加入区块如监听到新公布区块删除账本中区块N2.1.2比特币底层区块链技术-2算法流程处理-(2)难度系数调整比特币网络每产生2016个区块(两周)后,会根据之前2016个区块的计算时间以及算力进行数学难题的难度调整,通过将数学解的阈值提高或降低来减少或增加难度,使每个区块的计算时间维持在大约10分钟的范围。2.1.2比特币底层区块链技术-2算法流程处理-(3)交易签名与验证比特币的交易,图片来源:比特币白皮书一个简易的交易(简化示意图)交易涉及到UTXO:未花费的交易输出签名证明我同意把这笔钱给你;证明你拥有这笔钱;证明这个交易是你创建的且没被修改过,严密的数学理论和算法来保证。签名验证的目的:证明交易是付款人发起资金目的是收款人交易对象(钞票)来路正规2.1.2比特币底层区块链技术-2算法流程处理-(4)检验与协商选择检验账簿收到临时帐页全网广播后,每个节点对其进行验证证明,通过后将其链到本地账簿协商选择由于网络延时,有时一个节点会先后收到多个正确的临时帐页,各节点在“最大工作量分支”追加新账簿,广播全网,“最长工作链”胜出。2.1.2比特币底层区块链技术-3协议报文格式表2-7消息头的报文格式字节数/B字段名数据类型描述4startstringchar[4]虚拟网络标识12commandnamechar[12]消息体中的消息类型,以0x00补齐4payloadsizeUnit32_t消息体长度(单位为B),最长32MB4chechsumchar[4]消息体的哈希值的前4B。若消息体为空则sha256d(null)前4B=0x5d6e0e2比特币采用请求/应答模式,所有消息通过P2P在网络中传播。比特币的报文分为两部分:消息头(MessageHeader)消息体(MessagePayload)图2-2消息体2.1.2比特币底层区块链技术-3协议报文格式表2-8Getheaders的报文格式字节数/B字段名数据类型描述4versionUnit32_t协议版本可变HashcountcompactSize区块头哈希数量,通常为1~200可变BlockHeaderhasheschar[32]区块头哈希数组,按账簿从高到低排序32Stophashchar[32]最后一个区块哈希2.1.2比特币底层区块链技术-3协议报文格式表2-9Headers的报文格式字节数/B字段名数据类型描述可变countcompactSize区块头哈希数量,通常为1~200可变HeadersBlock_header所有匹配的区块头,中间用0x00分隔,即交易数量参见区块头(80B格式)2.1.2比特币底层区块链技术-3协议报文格式表2-10Headers的报文格式字节数/B字段名数据类型描述可变countcompactSizeInventory的数量,最大500可变inventoryinventoryInventory数组02PART以太坊开源的具有智能合约功能的公共区块链平台以太坊少年-以太坊创始人-维塔利克·布特-V神网瘾少年爱玩《魔兽世界》,大学上到一半就辍学基本概念?账户(accounts)状态(state)损耗和费用(gasandfees)交易(transactions)区块(blocks)交易执行(transactionexecution)挖矿(mining)工作量证明(proofofwork)和比特币什么关系?什么是以太坊?有什么用?通过智能合约平台解决比特币的不足在金融行业有巨大的应用2.2.1以太坊简介-2013年发起区块链2.0时代的代表引入图灵完备虚拟机运行区块链脚本代码一个开源平台,可以创建和发布去中心化的应用程序本质:基于交易的状态机1.以太坊账户2.消息和交易2.2.2以太坊基本原理3.以太坊状态转换函数4.代码执行5.区块链和挖矿以太坊2.2.2以太坊基本原理-1以太坊账户以太坊有两种账户:外部账户(externallyownedaccounts),由密钥控制,无代码与之关联合约账户(contractaccounts),由智能合约的代码控制,有代码与之关联两种账户都由四部分组成:2.2.2以太坊基本原理-2消息和交易消息:在某种程度上类似于比特币的交易一个消息就是一个交易消息消息发送者消息接收者GasLimt可选的数据域合约实际输入数据消息的组成交易:是指存储从外部账户发出的消息的签名数据包。交易消息接收者签名以太币账户余额GasLimitGASPRICE交易的组成2.2.2以太坊基本原理-3以太坊状态转换函数图2-3以太坊状态转换函数APPLY(S,TX)->S'一笔新交易初始状态交易后状态交易是外部世界和以太坊内部状态的桥梁。2.2.2以太坊基本原理-3以太坊状态转换函数2.2.2以太坊基本原理-4代码执行(详见第4章)智能合约产生的目的和价值:模块化、自动执行交易以太坊合约代码:EVM代码,执行非常简单EVM编译合约模块:对底层Solc编译器进行封装,提供RPC接口给外部服务,编译智能合约ledger模块:对账户系统更新和修改EVM执行模块:解析和执行合约代码智能合约,就是一些代码,运行整个分布式网络中。网络中的每一个节点都是一个全节点好处:容错性强坏处:效率低,消耗资源与时间。因为执行计算要花钱,而要执行的运算量与代码直接相关每个在网络运行的底层操作都需要一定量的gas。gas代表的是执行所需要花费的成本理想的智能合约需要模块化,可重用,并支持组件升级2.2.2以太坊基本原理-5区块链和挖矿以太坊区块链:一个金矿,里面有多少金子是由以太坊的源代码来定义的。区块
:区块对应现实中从金矿挖出来的金子(每挖出一个区块,挖出区块的节点都会有一定的奖励)矿工
:参与以太坊网络挖矿的节点称为矿工.矿工通过执行"挖矿"这一动作使得以太坊持续不断的产生新的区块,每个区块包含在一段时间内的交易.区块不断的被挖掘并被所有节点确认,从而保证了以太坊网络的交易被确认并上链.挖矿:所谓挖矿即节点利用自己的算力,通过计算产生区块的过程.03PART超级账本核心项目?Fabric与比特币的关系?相同:区块链不同:联盟链,准入限制什么是超级账本?有什么用?针对比特币公有链效率低支持各种商业应用场景2.3.1超级账本简介-详见第4章区块链实施方案IBM贡献给Linux基金会的商用分布式账本面向企业应用的全球最大的分布式开源项目HyperledgerFabric1.架构2.账本结构2.3.2超级账本基本原理3.智能合约4.交易流程超级账本2.3.2超级账本基本原理-1.架构图2-5Fabricv1.0新构架智能合约执行节点背书者图2-6Fabricv1.0的多链和多通道2.3.2超级账本基本原理-1.架构图2-7Fabricv1.0的多链和多通道2.3.2超级账本基本原理-3.智能合约(详见第4章)图2-8Fabricv1.0用户智能合约执行过程(a)验证部署智能合约(b)执行交易2.3.2超级账本基本原理-4.交易流程图2-9Fabricv1.0交易总流程2.3.2超级账本基本原理-4.交易流程2.3.2超级账本基本原理-4.交易流程图2-10背书交易的执行序列图图2-11提交交易的执行序列图2.3.3后续发展-相对v1.0V1.1修改bugV1.2增加新特性:私有数据、服务发现、访问控制、插拔式背书验证V1.3增加新特性:使用Identity实现MSP设计密钥级背书策略使用分页查询数据库链码语言扩展基于Peer节点通道的服务V1.4增强可维护性增强可操作性改进应用的编程模型私有数据加强采用分布式共享账本采用类似的底层网络传输协议借助图灵完备的语言建立区块链上的程序注重区块链数据隐私和安全,具备可追溯难篡改特性。相同点以太坊以设计公有链为出发点,是公有链超级账本以智能合设计为中心,侧重对生态圈商用网络业务的支持是联盟链。以太坊自带货币系统超级账本不自带货币系统(Fabric2.0具备UTXO设计)不同点2.3.4超级账本和以太坊的比较04PART课程总结区块链技术是一系列技术的集成。比特币(BitcoinCore):C++编写,根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。比特币是一种P2P形式的虚拟的加密数字货币。点对点的传输意味着一个去中心化的支付系统。以太坊(Ethereum):一个开元的具有智能合约功能的提供的开发环境简单安全。通过其专用加密货币以太币(Ether,简称“ETH”)提供去中心化的以太虚拟机(EthereumVirtualMachine)来处理点对点合约。超级账本(Hyperledger
):一个旨在推动区块链跨行业应用的开源项目,由Linux基金会在2015年12月主导发起该项目,成员包括金融,银行,物联网,供应链,制造和科技行业的领头羊。本章总结Summary比特币系统架构比特币系统架构以太坊系统架构超级账本架构主流平台对比主流平台对比05PART参考资料参考资料一个故事告诉你比特币的原理及运作机制BitcoinWhitepaperBitcoin'sAcademicPedigreeBitcoinBlockExplorer
2017WasBitcoin'sYear.2018WillBeEthereum’sOnPublicandPrivateBlockchains
/en/bitcoin-core///
HyperledgerFabric06PART课后习题思考题什么是比特币?什么是区块链?核心技术有哪些?区块链的基本的数据结构是什么?什么是以太坊?什么是超级账本?什么是智能合约?比特币、以太坊、超级账本之间的关系?课后习题:选择题1.比特币是哪一年被发明的?A
2008
B
2001
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025物业停车管理合同
- 物业服务信息反馈工作流程
- 2025年石油石化技能考试-催化剂交换洗涤过滤工历年参考题库含答案解析(5卷100道集合-单选题)
- 小学跳绳个性化教学计划
- 2025年特种消防车驾驶员高级(官方)-行车安全常识历年参考试题库答案解析(5卷100道集合-单选题)
- 2025年煤炭矿山职业技能鉴定考试-采制样工考试历年参考题库含答案解析(5卷100道集合-单选题)
- 2025年中国智能防盗锁行业市场调查研究及投资策略研究报告
- 2025年火电电力职业技能鉴定考试-电气专工试题历年参考题库含答案解析(5卷100道集合-单选题)
- 船舶工程技术精控定位试题及答案
- 2025年中国静力压桩机行业市场全景调研及投资规划建议报告
- 卒中常见并发症及处理
- 种植牙手术告知书范本
- 动作经济原则手边化POU改善
- 中学历史学科的核心素养-教师发展中心课件
- 【基于杜邦分析法的爱美客公司盈利能力研究】14000字
- 酒旅餐饮商家直播间通用话术大全10-46-16
- 后疫情时代技工院校学生健康安全状况调查报告
- 地铁接触网直流融冰的研究与应用
- 九招致胜课件完整版
- 2014年欧洲儿童急性胃肠炎诊治指南
- 销售管培生培养方案
评论
0/150
提交评论