区块链和比特币

上传人:xh****66 文档编号:59149574 上传时间:2018-11-04 格式:PPTX 页数:28 大小:3.31MB
返回 下载 相关 举报
区块链和比特币_第1页
第1页 / 共28页
区块链和比特币_第2页
第2页 / 共28页
区块链和比特币_第3页
第3页 / 共28页
区块链和比特币_第4页
第4页 / 共28页
区块链和比特币_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《区块链和比特币》由会员分享,可在线阅读,更多相关《区块链和比特币(28页珍藏版)》请在金锄头文库上搜索。

1、,区块链技术知识分享 2018年6月9日,Agenda,区块链和比特币 以太坊(Ethereum)及智能合约介绍 超级账本(Hyperledger)项目和fabric,区块链和比特币,概述 起源 BTC诞生 BTC交易原理 UXTO 区块 脚本 地址生成 Merkel Tree,工作量证明 最长链规则 挖矿 分叉 扩展性 安全性 发展方向,区块链和比特币(1)-概述,去中心化的账本,一种使用密码学的方法相关联产生的数据块 匿名性+专属所有权 难以篡改 具有自治的能力,区块链和比特币(2)-起源,1976年,Bailey W. Diffie和Martin E. Hellman密码学的新方向发表(

2、公钥加密理论), 次年RSA算法诞生 1980年,Merkle Ralf提出Merkle-Tree数据结构和算法(区块中交易校验的手段) 1982年,Leslie Lamport等人提出拜占庭将军问题(共识的基础) 1985年,椭圆曲线加密(ECC)算法诞生(加密的基础) 1990年,David Chaum创立Digital Cash,第一种中心化不可追踪的加密数字现金系统 1992年,Scott Vanstone等人提出椭圆曲线加密数字签名算法(ECDSA) 1997年,Adam Back发明Hashcash技术,为一种工作量证明算法(Proof of Work,POW), 此算法依赖哈希函

3、数的不可逆特性,达到容易被验证,但很难被破解的特性 1998年,戴伟发布匿名分布式电子现金系统B-money,Nick Szabo提出去 中心化货币Bit Gold的理论 2005年,Hal Finney提出可重复使用的工作量证明机制(RPOW),结合B-money 与Adam Back提出的Hashcash算法进行数字货币试验,区块链和比特币(3)-BTC诞生,2008年11月1日,一个署名中本聪(Satoshi Nakamoto)的人在一个小型 密码学讨论组中发表了论文比特币:一种点对点的电子现金系统 2009年1月3日,中本聪在位于芬兰赫尔辛基的一个小型服务器上挖出了第 一笔50个比特币

4、(创世区块),区块链和比特币(4)-BTC交易原理,区块链和比特币(5)-UTXO,和传统account based支付系统不同, 比特币系统中使用区块来记录交易往来, 本质为一种UXTO(Unspent Transaction Output)方案、 区块账本记录的是交易(日志),而不是 货币;每一笔交易都要消耗(spend)N笔 输入,产生N笔输出;但输入总量和输出 总量需要保持相等,区块链和比特币(6)-区块,完整的区块结构,区块头(Blockheader)结构,区块链和比特币(7)-区块,Transactions 结构 Input结构,Output结构,区块链和比特币(8)-脚本,Has

5、h: 9c50cee8d50e273100987bb12ec46208cb04a1d5b68c9bea84fd4a04854b5eb1 输入交易: 前导输入的Hash: 437b95ae15f87c7a8ab4f51db5d3c877b972ef92f26fbc6d3c4663d1bc750149 输入脚本 scriptSig: 3045022100efe12e2584bbd346bccfe67fd50a54191e4f45f945e3853658284358d9c062ad02200121e00b6297c0874650d00b786971f5b4601e32b3f81afa9f9f8108

6、e93c752201 038b29d4fbbd12619d45c84c83cb4330337ab1b1a3737250f29cec679d7551148a 输出交易: 转账值: 0.05010000 btc 输出脚本 scriptPubKey: OP_DUP OP_HASH160 be10f0a78f5ac63e8746f7f2e62a5663eed05788 OP_EQUALVERIFY OP_CHECKSIG,区块链和比特币(9)-脚本,P2PKH例子,交易b中有一个输入交易引用了交易a的输出交易,它们的脚本是一对题与解: 题:交易a的输出脚本,若干个脚本指令和转账接收方的公钥哈希 OP_

7、DUP OP_HASH160 be10f0a78f5ac63e8746f7f2e62a5663eed05788 OP_EQUALVERIFY OP_CHECKSIG 解:交易b的输入脚本,包含两个元素,交易发起方的签名和公钥(sig & pubkey) 3046022100ba1427639c9f67f2ca1088d0140318a98cb1e84f604dc90ae00ed7a5f9c61cab02210094233d018f2f014a5864c9e0795f13735780cafd51b950f503534a6af246aca301 03a63ab88e75116b313c6de384

8、496328df2656156b8ac48c75505cd20a4890f5ab,+,区块链和比特币(10)-地址生成,BTC地址生成过程,ECDSA Public Key,RIPE160 MD(SHA256(Public Key),Public Key Hash,RIPE160 MD(SHA256(version +Public Key hash),Check Sum,Version,Base58 Encode,BitCoin Address,区块链和比特币(11)-Merkel Tree,区块链和比特币(12)-工作量证明,区块的Hash=SHA256(SHA256(区块头内容) 一段时间

9、内(平均10分钟左右,具体时间会与记账难度相互影响),只有1个节点可以记账成功 通过不断计算寻找合适的区块HASH使之小于给定的目标HASH(目标HASH值的压缩格式是一个特殊 的浮点编码类型,首字节是指数(仅使用了5个最低位)表示右移的位数,后3个字节是有效值,该目标 HASH能表示256位的数值), 通过竞争获得唯一记账权 记账被证实后,其余节点复制记账结果 每产生2016个区块之后,会根据实际产生的区块和目标区块数做对比,进行难度调整,区块链和比特币(13)-工作量证明,区块链和比特币(14)-工作量证明,难度计算公式:difficulty = difficulty_1_target /

10、 current_target,目标(target)是一个256位长的数值。 有许多不同测量难度的方法,得到的difficulty_1_target可能不同。传统地,它表示一个HASH值,前32位为 0,后续部分为1(称之为:矿池难度或pdiff),比特币协议把目标HASH表示成一个固定精度的自定义浮点类型, 因而,比特币客户端用该值来估计难度(称之为:bdiff)。 难度经常被存贮在区块中,每个块存贮一个十六制的目标HASH的压缩表达式(称之为:Bits),目标HASH可以 以预先定义的公式计算出来。例如:如果区块中压缩的目标HASH为0x1b0404cb,那十六进制的目标HASH如 下所示

11、 此时的难度值为,区块链和比特币(15)-最长链规则,累计了最多难度的区块链,也是包含最多区块的那个链称为主链,每一个节点总是选择试图延长主链 当有两名矿工在几乎在相同的时间内,各自都算得了POW解,便立即传播自己的“获胜” 区块到网络中,一些节点首先收到#3458A, 一些节点首先收到#3458B,这两个候选区块(通 常这两个候选区块会包含几乎相同的交易)都是主链的延伸,分叉就会产生,这时分叉出有竞 争关系的两条链,如图: 收到#3458A和#3458B的节点,各自开始进行计算POW解,总会有一方抢先发现,比如收到#3458B 的节点,成功打包形成了#3459区块,并向全网广播后,网络中的节

12、点会把#3458B#3459B的链作为 最长链。BTC规定,交易被成功打包之后,还需要6个以上的区块延伸,才算成功(确认为主链),区块链和比特币(16)-挖矿,SETGENERATE协议:CPU时代挖矿时代的协议。构造区块,初始化区块头各个字段,计算Hash并验 证区块,不合格则nNonce 自增,再计算并验证,如此往复。在CPU挖矿时代,nNonce提供的4字节 搜索空间完全够用(4字节即4G种可能,单核CPU运算SHA256D算力一般是2M左右),一般情况nNonce 只遍历完2个字节就返回去重构块。,区块链和比特币(17)-挖矿,Getwork协议代表了GPU挖矿时代,需求主要源于 挖矿

13、程序与节点客户端分离,区块链数据与挖矿部件 分离。使用客户端节点直接挖矿,需要同步完整区块 链,数据和程序紧密结合,也就是说,如果有多台 电脑进行挖矿,需要每台电脑都单独同步一份区块链 数据。这其实没有必要,对于矿工来说,最少只需 要一个完整节点就可以。,区块链和比特币(18)-挖矿,Getblocktemplate协议让矿工自行构造区块。如此 一来,节点和挖矿完全分离。对于getwork来说,区 块链是黑暗的,getwork对区块链一无所知,其只知 道修改data字段的4个字节。对于getblocktemplate 来说,整个区块链是透明的,getblocktemplate掌 握区块链上与挖

14、矿有关的所有信息,包括待确认交易 池。 矿池通过getblocktemplate协议与网络节点交互, 以获得区块链的最新信息,通过stratum协议与矿工 交互。此外,为了让之前用getwork协议挖矿的软件 也可以连接到矿池挖矿,矿池一般也支持getwork协 议,通过阶层挖矿代理机制实现(Stratum mining proxy)。stratum与矿池采用TCP方式通信,数据使 用JSON封装格式。,区块链和比特币(19)-分叉,硬分叉 如果区块链软件的共识规则被改变,并且这种规则改变无法向前兼容,旧节点无法认可新节点产生的区块, 即为硬分叉。这时候旧节点会拒绝新规则的区块,于是新节点和旧

15、节点会开始在不同的区块链上运行 (挖矿、交易、验证等) 软分叉 如果区块链的共识规则改变后,这种改变是向前兼容的,旧节点可以兼容新节点产生的区块,即为软分叉。 软分叉通常刚开始并不会产生两条区块链,因为新规则下产生的块会被旧节点接受,旧节点只是无法识别 新规则的真实意义。所以新旧节点仍然处于同一条区块链上,对整个系统的影响也就较小。,区块链和比特币(20)-扩展性,不断增长的比特币交易量,区块链和比特币(21)-扩展性,隔离见证(Segregated Witness,已启动) 为闪电网络的前置方案。软分叉方案,一方面是解决比特币存在的一个安全漏洞(延展攻击), 一个是用于扩容。其基本思想是将原

16、来的交易数据结构里的签名从区块里移出,仅保留1个指向 这个签名的指针。,区块链和比特币(22)-扩展性,闪电网络(Lighting network,未启动) 本质就是安全地链下交易。其原理上基于BOLT(Basic of Lightning)协议实现的链下交易网络, 主要由RSMC(Revocable Sequence Maturity Contract)和HTLC(Hashed TimeLock Contract) 两个智能合约组成,翻译过来分别是序列到期可撤销合约和哈希时间锁定合约 其出现的主要理由就是为了应对链上的高额手续费和小额支付交易。 其特点是: 1. 闪电网络没有区块链结构; 2. 闪电网络不依赖某个公链,不是Dapp。只要能实现BOLT协议,无论 比特币、以太坊,都可以用上闪电网络; 3. 闪电网络支持代币原子互换(Atomic Swap),也就是跨链(cross-chain)操作,区块链和比特币(23)-安全性,51

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号