区块链全册配套精品完整课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《区块链全册配套精品完整课件.ppt》由用户(罗嗣辉)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 区块 链全册 配套 精品 完整 课件
- 资源描述:
-
1、区块链全册配套课件区块链全册配套课件区块链技术分享课程安排 精通比特币 玩转以太坊 搞定hyperledger比特币起源 一种点对点的电子现金系统 中本聪(satoshi) 日裔美国人,物理学学士,隐居于洛杉矶某山脚下,不愿谈及和承认与比特币有关。 创世区块:“ The Times 03/Jan/2009 Chancellor on brink of second bailout for banks ” (2009 年 1 月 3 日,财政大臣正处于实施第二轮银行紧急援助的边缘)创世交易 Block0 :https:/blockchain.info/block/000000000019d668
2、9c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f Block443222: https:/blockchain.info/block/000000000000000001b2a29dc4e088ab46deffc8c58ed365b1a71e921376028c现有银行系统的缺点 中心化(数据中心、异地备灾):缺点:易篡改、易产生灾难、易无法服务; 有账户系统:缺点:易篡改; 货币发行:货币即数字,想发多少发多少(央行发行)- 货币超发是政府对人民财富掠夺最简单快捷有效的方法; 隐私性:无政府主义者想拥有更好的财富隐私性;比特币的优点 去中心化,
3、数万(甚至更多)个节点上运行完整数据拷贝; 无账户系统,发明UTXO,了不起的发明! 发行机制:通过coinbase交易发行,每4年减半,从50,目前已减至12.5。上限:2100万个,永不超发,且无法超发! 隐私性:强。你只知道某个地址拥有多少比特币,但并不知道它是谁的。但从监管角度来说可能是一个缺点。比特币的缺点 隐私性强,成为犯罪分子的结算工具,目前贩毒、洗钱等大量采用比特币; 分布式系统,软件更新困难,目前的扩容之争就是个典型的例子。交易 Transaction 设想一个典型的银行交易; 比特币的交易: confidence: Appeared in best chain at hei
4、ght 438889, depth 1. in PUSHDATA(71)30440220428401ac86cb8db137b994a284ff9f4e7d79560c98f4873a19517ef01212dcba022023e6a4ac9f26ba40e3e29bd35994f835f9b59b527aa41336e6fbca8d2cd31cc601 PUSHDATA(33)03a081d66a312d9ff080b55c75b6bed1f06ef41eb822880e3321dab98db2b86631 outpoint:61ad817969055ccfa374c7806e1857406
5、2e1100ab72e393bc216f1d8e6ff3042:1 out DUP HASH160 PUSHDATA(20)f3ab1573aa9b9ae55597a430f8a3ef2de23554c7 EQUALVERIFY CHECKSIG 0.00041339 BTC out DUP HASH160 PUSHDATA(20)3eaa9a51dbc9c091e1436154c5865dc4c3468298 EQUALVERIFY CHECKSIG 0.00264682 BTC prps UNKNOWNTransaction details 每个transaction 拥有一个hash,算
6、法:dSHA256 = SHA256(SHA256(transactionbytes) Why dSHA256? About hash: MD5、SHA-1、SHA-2(比特币采用)、SHA-3(以太坊、hyperledger采用) Transaction包含n个input, m个output N,m 可以无限大吗? Input包含:之前一个output的引用(通过txid和output index(从0开始计数))以及SigScript(签名) Output包含:pubScript(地址脚本),比特币数量UTXO Output分为两种: UTXO:还没有被花费的output STXO:已经被
7、花费掉的output 每个完整节点维护一份完整的UTXO索引,不在UTXO中的交易将被拒绝; 每个地址的余额由它拥有的所有UTXO累加计算而得;Transaction fee 所有input btc总和都多于output btc总和,多余的部分即为transaction fee; 一个交易最少的交易费用为0.0001BTC,低于此将被矿工拒绝; 交易费用将被矿工获得(通过把它们加入coinbase交易中); 矿工按fee/kbyte,来决定优先打包哪些交易; Why transaction fee? 防攻击 奖励矿工矿工 比特币节点分为:普通完整节点(peer)、矿工节点(miner)和SPV
8、节点; 由矿工打包交易,形成区块链: Transaction - block - blockchain 矿工的3个问题: 问题1:由谁来打包交易?(因为有很多矿工) 问题2:何时打包交易? 问题3:如何打包交易?问题1:由谁打包交易? PoW:Proof of work 规则:每个区块生成的hash值小于目标值,谁快谁来打包。 Hash的生成: 算法:dSHA256(headerbytes) Header字段:version(4)、prev_block_hash(32)、merkle_root_hash(32)、time(4)、bits(4)、nonce(4):共字节问题2:何时打包交易? 平
9、均每10分钟出一次块; 矿工算出符合条件的hash就立即出块; 每生成1026块时根据平均出块时间调整一次目标值; 历史最快出块时间为几秒、最慢出块时间为1个多小时; 同时算出如何解决? 维护2条以上blockchain 对比以太坊的叔块(uncle bock)问题3:如何打包交易? 矿工会包含尽量多的交易;按交易给予的fee/kb来排序; 交易数量有上限,每个block不能超过1MB; 每个块的第一个交易为coinbase交易,没有input,output的地址是矿工的地址,数量是区块奖励(当前为12.5)和所有交易费用的总和; 用每个交易的txhash生成merkle tree,并生成me
10、rkle root hash放在header中;Merkle树 神器:merkle树; Merlke树在比特币中的应用:Merkle树() 为什么merkle树? 支持SPV SPV: Simple Payment Verification 区块太大,超过几十G、未来更大; 区块header很小,每个byte,目前总大小M+ 通过区块头和交易的merkle树来验证交易的一种方式 如何实现: 客户端持续从连接的节点上获取新区块的头部,并加入到本地区块链中; SPV客户端从节点上获取到一个跟自己相关的交易hash值; SPV客户端从节点上下载包含该交易hash的完整交易merkle树; 重新计算并
11、验证merkle root和头部中的是否一致,若一致则验证通过;() 如何从节点上获取和自己相关的交易hash? Bloom filter Bloom filter SPV节点在相连节点上注册自己感兴趣的地址(可多个) 当节点通过bloom filter发现和该地址相关交易的时候便通知该SPV节点密码学原理 私钥(prikey)的生成: 随机数,或者通过随机数seed生成; 公钥(pubkey)的生成: Pubkey=椭圆曲线函数(prikey,p,q),不可逆; 比特币地址的生成: Address=BASE58(RIPEMD160(SHA256(pubkey),不可逆;签名原理 RSA非对称
12、加密原理: 公私钥对; 公钥加密仅私钥能解;私钥加密仅公钥能解; 比特币交易签名:SigScript 源数据hash; 私钥加密后的密文; 公钥解密密文,与源数据hash比较;散列算法 256个灯泡,开关两种状态,一共有多少种组合? 2256 是多大的一个数字? Hash函数特点: 单向,不可逆; 输入改动一点,输出面目全非; 存在碰撞几率; 比特币中发生碰撞怎么办? 不同公钥地址映射到同一比特币地址安全性 攻击: 攻击是无解攻击; 目前算力分布: http:/ 交易深度: Depth: 0,状态为:PENDING; 已处于矿工们的mempool中,即将被打包入块; 何时被打包入块?取决于给交
13、易给的fee,从几秒到天以上时间不等; Fee的入块速度参考:http:/bitcoinfees.21.co/ Depth: 1-n ,状态为BUILDING;已经入块,且深度为1-n,n值越大越安全; 官方建议信任depth为及以上的确认;到达后要想再被推翻需要攻击;黑客与攻击()攻击交易所(示例流程): 注册某交易所A,并买入BTC; 探测到该交易所当前连接的节点:k、p、m 发起提币请求,交易所地址x转入你的地址y 5BTC,该交易信息被广播至k、p、m 同时、立即、或提前向k、p、m发起DDOS攻击,恰好让k、p、m收到来自交易所A的转帐交易,同时来不及向其它节点转发该交易; 打电话给
14、交易所妹子,说提币失败,要求帮忙处理; 妹子查询交易所交易记录(txhash),发现没有记录,答应补发; 解除对k、p、m的DDOS攻击,让其正行工作,地址y收到x的5BTC 交易所妹子通过后台处理系统向地址y补发5BTC,到此攻击完成,非法取得BTC黑客与攻击() 电商双花攻击(示例流程): 打开某电商(支持比特币支付),进入付款页面; 将比特币客户端连接至美国某节点(制造网络延迟);转账5BTC至个人另一个账户; 用该账户(当前可用余额已为零)向电商支付5BTC,显示为支付成功,状态:PEDING,depth:0,因为网络延迟该电商支付环境中UTXO还未同步; 若该电商信任depth为的交
15、易(大部分信任),并且立即发货(尤其是数字产品)则攻击成功; 很快,电商会收到状态:DEAD的消息,若其不做处理,则双花攻击成功;黑客与攻击(3) 侵入交易所/在线钱包网站 入侵到交易所网站后台,获取访问数据库权限,搜索并下载比特币公私钥对; 或者搜索钱包文件,获取并下载公私钥对; 在本地重新构建钱包,转移比特币 历史上发生的比特币黑客事件: http:/ Bitcoin core 与 Bitcoin Unlimited之争: Core代表广大客户端,无政府主义者; Unlimited代表广大矿工,商人性质; Core力推隔离验证:segwit 将交易签名部分拿出来; 通过P2SH来欺骗旧节点
16、; Unlimited支持硬分叉:简单扩容至MB 你是否支持隔离验证? 反对软分叉,软分叉欺骗旧节点; 违背了比特币节点完整验证的原则;彩色币利用比特币实现数字化资产发行、转让、管理等类以太坊的功能;利用比特币交易中暂未使用的字段: OP_RETURN 实现染色功能;例子: inputs: 17ztLiaGdWcWFX8CgYqWGQPEizepPLsSrb : 500000, 19GAFukX9ixSDLy1p2UEed2mpDQ69QPUXr : 2125735, 1MyK5te6U6zGoom68nVEzTU2x949ReNySN : 2500000 outputs: 1LQhUnH2U
17、Y9cuLh8qvHUNPL3GgLVWU5ziD : 1000000, 1PEFUd66e2Q7w4w4KisZRSaupNJz7K7dpL : 1000000, 1PmqmJGRxpKx45FHLTBmteKQxViHgm4Mxi : 1000000, 1DCo3v1gSqU6g2GGDz9d4BD35h9cARe5dy : 2000000, OP_RETURN : 0 67 67 80 0 0 0 255 255 + 0 * 71 1MyK5te6U6zGoom68nVEzTU2x949ReNySN : 115735白皮书: http:/ 二代币 莱特币、狗狗币等; 瑞波币 和比特币同时
18、期的专注于银行/个人间转账、清算的项目 首次提出共识机制方案,PBFT - XRP 侧链 闪电网络比特币开发 比特币源码(bitcoin core源码) https:/ (C+) SPV钱包、支付源码 https:/bitcoinj.github.io/ (java)QA谈谈区块链(04)-hyperledger初级开发指南提纲 相关工具下载安装 Hyperledger开发环境搭建 REST服务 产生自己的区块 部署和访问自己的第一个智能合约 智能合约初探相关工具下载 Git client Go Vagrant https:/ VirtualBox https:/www.virtualbox.
19、org/ Docker 完整视频 微信:jtomtan 微博:http:/ 巴比特:http:/ 精通比特币 深入浅出以太坊 搞定hyperledger讲解大纲 名词及原理解释 实战geth 智能合约初探和深入思考区块链原理 大部分和比特币类似 不同点: 出块时间(比特币平均10分钟,以太坊平均12s) 共识算法,目前基于PoW,和比特币算法不同,基于DAG,且白皮书中指明1.1版本后可能会改成PoS 每块奖励5个以太币,不减产; 有叔块奖励 发行方式:7200W+1872W/年 (1872=1314+叔块奖励)区块链原理(2) 不同点(继续): 没有coinbase交易(思考题,为什么?)
20、有重放攻击(replay attack) 有账户系统: 外部账户 合约账户 除blockchain外还有worldstate以太坊账户 以太坊账户拥有永久存储空间 字段包括: nonce Ether balance (单位:(单位:wei) Contract code(if any) Storage(32byte to 32byte key-value map) 所有账户(包括外部和合约账户)的存储信息称为worldstate重放攻击 什么是重放攻击? 比特币里为什么没有重放攻击? 以太坊处理重放攻击: 每个账户维护nonce,每产生一个新交易,加一 Hyperledger中出处理重返攻击:
21、通过hash nonce值 Gas 什么是Gas(气)? 定义了智能合约最原子运算所需花费的单位 例如 :一个位移运算需要1气,一个相加运算需要3气; gasPrice: 1气和以太币(wei)的兑换价格 一次Transaction的所有花费: Total_fee= gas* gasPrice (执行智能合约的花费,此为上限,以实际执行步数为准,gasReal*gasPrice) + value (转移给对方账户的以太币数量) + transaction fee交易费用(fee) 交易费用和比特币相同点: 每个交易都要收取交易费用 不同点: 按字节大小收取 每字节收取5气(fee=5*字节数*
22、gasPrice) 由矿工直接扣取,不需要收入(而比特币需要主动输入,通过input和output的差额)智能合约代码执行 矿工: 打包当前交易的矿工执行智能合约代码,并更新相应账户状态(ether balanace、nonce、合约账户的其它存储); 矿工执行代码时按执行的原子步数和gasPrice来收取费用; 其它节点: 所有节点均执行智能合约代码以作为验证区块合法性的一部分 验证执行不重复收取费用Worldstate存储结构 Merkle Patricia Tree 便于更新(包括插入、更新、删除) 更新后能快速计算出树根 树根的计算只跟数据本身有关,与数据在树中的顺序无关 实现方式:
23、键值对存储 按搜索路径编码Geth实战 名词介绍 Geth、Solidity 下载安装Geth Go-ethereum/wiki 文档: https:/ethereum.gitbooks.io/frontier-guide/content/Geth实战(2) 创建测试网络和创世区块 创建和管理账户 挖矿 发送以太币 创建第一个智能合约QA谈谈区块链(07)-比特币高手之路作者简介:谈国鹏,比特宝()创始人,最早比特币支付的探索者。一直从事比特币、以太坊、hyperledger等区块链研究探索工作,现任*集团区块链研发负责人。个人微信:jtomtan完整视频 微信公众号:ttblockchain
24、 个人微信:jtomtan 微博: 巴比特专栏:http:/ 优酷视频:搜索“谈谈区块链”内容大纲标准交易类型 P2PKH P2SH签名类型(SigHash Type)Sequence number & locktime交易延展性(Transaction Malleability)仲裁交易微支付通道 Micropayment Channel(单向)闪电网络 Revocable Sequence Maturity Contract (双向) HLTC隔离见证(Segregated Witness)标准交易类型 交易的内部结构标准交易类型(2) P2PKH Public Key Hash HASH
25、160 = RIPEMD160(SHA256(pubkey) Pubkey Script: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG 验证脚本: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG标准交易类型(3) P2SH 通过BIP增加进比特币系统(2012年) HASH160 可实现多种特殊功能:如多重签名 Redeem Script Input contains source script, ouput contains the hash Example:OP_2 As pubkey Bs pubke
展开阅读全文