区块链:比特币背后的技术-V1.2.pptx

上传人:hyn****60 文档编号:75302068 上传时间:2023-03-03 格式:PPTX 页数:79 大小:4.41MB
返回 下载 相关 举报
区块链:比特币背后的技术-V1.2.pptx_第1页
第1页 / 共79页
区块链:比特币背后的技术-V1.2.pptx_第2页
第2页 / 共79页
点击查看更多>>
资源描述

《区块链:比特币背后的技术-V1.2.pptx》由会员分享,可在线阅读,更多相关《区块链:比特币背后的技术-V1.2.pptx(79页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、区块链:比特币背后的技术卫剑钒1区块链的定义狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。-百度百科2用麻将来比喻区块链?所有的比喻都是错误的,部分比喻有一些用。就好比用水解释金融。完全抓住一个概念需要自底而上的了解。3本次讲座讲解比特币背后的技术细节(比特级)把听众当零基础看只是领进门大约4050分钟4 2013年12月5日,人民银行、工信部、三会等五部委发布关于防范比特币风险的通知,“从性质上看,比特币是一种比特币是一种特定的虚拟商品特定的虚拟商品,不具有不具有与货币等同的法律地位与货币等同的法律地

2、位。但是,作为一种互联网上的商品买卖行为,普通民众在自担风险的前提下拥普通民众在自担风险的前提下拥有参与的自由有参与的自由。”比特币的定性5比特币长什么样子67比特币长什么样子8怎么把比特币发给别人别人怎么发比特币给我9涉及的概念比特币地址:形如12usb4VU1UqHSn2QLRyfyNxT3VGgVGaCNo的一串数。比特币地址是用公钥做哈希生成的。比特币公钥使用私钥生成的。比特币私钥是用户通过钱包生成的。比特币钱包是一个客户端。10比特币归根到底是比特1160e31600000000001976a914ab68025513c3dbd2f7b92a94e0581f5d50f654e788a

3、c01100000111000110001011000000000000000000000000000000000000000000001100101110110101010010001010010101011011010000000001001010101000100111100001111011011110100101111011110111001001010101001010011100000010110000001111101011101010100001111011001010100111001111000100010101100内含0.015比特币的UTXO:用16进制表示这个UT

4、XO:只有提供了正确的公钥和签名才能把这笔钱花了16进制和2进制(零基础)一个16进制(hex)字符可用4位(2进制)表示。0 1 2 3 4 5 6 7 0000 0001 0010 0011 0100 0101 0110 01118 9 a b c d e f 1000 1001 1010 1011 1100 1101 1110 111112所以:16进制的60e3就是2进制的0110 0000 1110 001116进制:2进制:16进制:2进制:区块链长什么样子13仔细看一个区块14头部 80字节交易存放区010000008a730974ac39042e95f82d719550e224

5、c1a680a8dc9e8df9d007000000000000f50b20e8720a552dd36eb2ebdb7dceec9569e0395c990c1eb8a4292eeda05a931e1fce4e9a110e1a7a58aeb01601000000010000000000000000000000000000000000000000000000000000000000000000ffffffff5370736a049a110e1a04b099a417522cfabe6d6d4e6988c831bb48c551eea50f87b3c6461ade476fe15c98bed7c6a574

6、aca4ff3501000000000000004d696e656420627920425443204775696c6420ac1eeeed88ffffffff0140ff082a010000001976a914ca975b00a8c203b8692f5a18d92dc5c2d2ebc57b88ac000000000100000001d81a8ff9114a09536c43b16003011a91bce5a2941d117e050c01ba1920181c72010000008c493046022100c7784a417a5780b922dd6385bd1cc07b530794c63d6b05

7、84378fc6dfb79d35d50221008812fd23e25549fca2ea6273e0f609f8aa93e2e822ec9a4537d57cd4fb664165014104cfe9363f2c7213bde611e57a4e16b2fb90cf3db160276e5f9f12081c718ebb3821a485866585b3fe416d1b28d4fd993db339dd38bef48da7ec4db5b618a1ce09ffffffff02404b4c00000000001976a91499e8943edcd38645f4a99a7173c9c42ab3e2160c88ac

8、440730ec010000001976a9142e61d7641959b2afcaae323186c239d65df1e58488ac00000000010000000171b250f62a6a5a17ab0a0d60592c39871ba2141a166a852c94cf4f00f0fcb88d010000008b48304502202e1f5fc8065c38a5d7471aa7d3f495048ea773049e6f30d939173dd553fa114f0221008fad13d287ead5c297589211ec0b687fe129f7ff61a344825b295a5c0eda

9、06450141047ef7874043d8355b39ca58c4894ff937c9bce598ac01b325407694d8ddd2132.版本号、哈希、merkle根、时间戳、难度值、Nonce交易数量交易1数据(即输入、输出)交易2数据(即输入、输出)交易3数据(即输入、输出).Block#15459515区块是怎么连接起来的版本号、上一区块头哈希、时间戳、难度值、Nonce本区块交易的merkle根、交易数量交易1数据交易2数据交易3数据.版本号、上一区块头哈希、时间戳、难度值、Nonce本区块交易的merkle根、交易数量交易1数据交易2数据交易3数据.哈希算法一种算法,把任意

10、长度的输入做复杂的变换后,输出固定长度的输出。MD5输出的是128位,16字节。SHA256输出的是256位,32字节。(BTC使用)RIPEMD160输出的是160位,20字节。(BTC使用)计算Hash很容易,逆向很难。倒推只能靠暴力尝试。不同的输入,算法产生完全不同的输出。尽可能等概率、均匀分布到整个地址空间,降低冲突(碰撞)发生几率。16 md5 s“weijianfan”MD5(weijianfan)=c49262b1117b9fd1d6ebd74aaa016f3emd5 s“weijianfam”MD5(weijianfam)=83cc9391aaf8c955b67ecdbf249

11、c5fbfmd5 APT攻击9.10.mp4MD5(APT攻击9.10.mp4)=e9c2a884af7b7c6db7919f8cc8abc51b注:该视频362M。17MD5生成思考给定输入data,然后不断变换Nonce,让你找出前面若干位是0的hash值。MD5(fixed data Nonce)0100110.011011如果让你找出第1位是0的hash值,一般大概需要两次。如果让你找出前2位是0的,大概需要4次。如果找出前3位是0的,几次?18MD5(This is a test 17)=b0fc7f1d91e9053995f707a90970001d 1011.MD5(This i

12、s a test 18)=2da096e2d33078719be1f71f19f3f10b 0010.MD5(This is a test 19)=32333b0fcb54a8c89e3de7d6c9ad4b5c 0011.MD5(This is a test 20)=bbe19f5c8edc2de5e19e7e374ba5e7ff 1011.MD5(This is a test 21)=95090ec4bc9582eeed1ffa5190ed6e7d 1001.MD5(This is a test 22)=2192d2e7b31a0ef78f2292631d5dd95d 0010.MD5(T

13、his is a test 23)=de2e3710ec0fa7fb59d5e28dffce88c9 1101.MD5(This is a test 24)=6cb7aaf335f7db96aff76568c7c528c9 0110.MD5(This is a test 25)=c7ca696058808f0185b68398bc59ab32 1100.MD5(This is a test 26)=162f09dd9c4d8f612f710fe54e5e585b 0001.MD5(This is a test 27)=0daa804de33f7f8559bdb33b3e2d6f5c 0000.

14、MD5(This is a test 28)=b484f277e80c304751f00d670db98fb3 1011.MD5(This is a test 29)=aa1cd22cc75b4b0eed9d48c639d3832d 1010.MD5(This is a test 30)=c11afafbbffecd4d558c5069f27ad103 1100.MD5(This is a test 31)=4f09394865cc6094e7a618a0a152e30c 0100.MD5(This is a test 32)=6907ecb0a7d7887e338315331559383b

15、0110.16进制2进制19想找出前面30bit都为0的哈希值,平均需要230 次尝试。2000000003fc7f1d91e9053995f707a909简要理解公钥算法公钥与私钥是通过一种算法得到的一个密钥对密钥对。公钥可以公开,私钥要保密。从私钥可以导出公钥,从公钥无法导出私钥。公钥算法:用公钥加密,用私钥解开。用私钥加密,用公钥解开。21如何理解你把信件用私钥加密,所有人都可以用你的公钥解开它看。(密码学保证是你写的)别人用你的公钥加密一封信,只有你才能用私钥解开来看。(密码学保证只有你才能看)22数字签名现实生活中的签名:表达了签名人对所签署文件的认可。隐含要求:文件不应该再被改动。

16、23数字签名一种做法:明文,签名者用私钥对明文加密对明文加密验证方法:用签名者公钥解开密文,对比明文明文明文签签名名24数字签名常见做法:明文,签名者用私钥对明文的哈希加密对明文的哈希加密验证方法:用哈希算法计算明文的哈希。用签名者公钥解开密文,对比哈希。明文明文签签名名25公私钥的模样(ECDSA算法)私钥是随机生成的,比如一个256位私钥(64个hex,32个字节):1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD公钥为520位(130个hex,65个字节)04F028892BAD7ED57D2FB57BF33

17、081D5CFCF6F9ED3D3D7F159C2E2FFF579DC341A07CF33DA18BD734C600B96A72BBC4749D5141C90EC8AC328AE52DDFE2E505BDB压缩格式的公钥为264位(66个hex,33个字节)03F028892BAD7ED57D2FB57BF33081D5CFCF6F9ED3D3D7F159C2E2FFF579DC341A签名为576位(144个hex,72个字节)3045022100884d142d86652a3f47ba4746ec719bbfbd040a570b1deccbb6498c75c4ae24cb02204b9f0

18、39ff08df09cbe9f6addac960298cad530a863ea8f53982c09db8f6e381326比特币地址比特币地址是由公钥经hash变换而得:Hash160=RIPEMD160(SHA256(PubK)Address=Base58Check(Hash160)生成这样地址:1HTrkKfaYLGJYZhMCdmS5JNdgctGj7qG5oBase58check是在Bsae58编码的基础上,增加了错误校验功能,校验码占据4个字节。Base58使用在Bsae64的基础上,舍弃了容易搞错的字符:0(零),O(大写字母o),l(小写字母L),I(大写字母i),27比特币的基

19、本原理(重要!)1、网络中若干个节点运行比特币软件(开源软件)。2、每个节点可以收发比特币(这称为交易),然后在网络内广播该交易数据包,很快会传遍全网每个节点,每个节点都会把错误的交易抛弃掉。3、每隔一段时间(平均10分钟),网内某个节点就会率先打包出一个符合要求的数据块(区块),里面含有这段时间的所有交易,这个区块会广播到全网。28*这里说的节点都是全节点。比特币的基本原理(重要!)4、所有节点都在抢着打包,因为谁能正确打包谁就能得到比特币奖励(所谓挖矿)。只有通过海量尝试,计算出满足要求的哈希值的节点才能打出大家认可的包(也即出块)。5、每个节点收到区块后,如果验证无误,就接受该区块,将其

20、附到到已有的区块链上。6、挖矿难度每两周调整一次,保证全网每10分钟才能挖出一个区块。*对哈希值的要求是比某个特定难度值小,其实也就是前面若干位为0。29比特币的基本原理(重要!)7、每成功出一个区块,打包者将会被奖励12.5个比特币。最早一开始是奖励50个,每210000个区块奖励减半(也即每4年),到2140年就会无币可挖。8、所有输入的BTC减去输出的BTC,就认为是给矿工的手续费。手续费越高的交易,越优先被打包。9、每次出块后,所有挖矿节点会在内存中把上一个区块已经打包的交易剔除掉,把已经收到但尚未打包的交易打包,并开始不停的计算,试图做下个区块。30网络上的细节节点启动后,先找到其他

21、节点(一般有一个稳定节点列表,或者启动时给指定一个节点),使用TCP协议,8333端口通信。每个节点通常和另外8个节点保持联系。31关于比特币节点全节点:存储全部区块,验证交易,网络路由、挖矿(可选)、钱包。矿机节点:仅仅挖矿,计算特定的哈希值。矿池节点:全节点,并且给矿机下发任务。轻钱包节点:仅钱包功能,不存区块。32全球现在有多少全节点33交易Transaction,也就是收发币(转账)。就是将BTC从一个地址转移转移到另一个地址。每个交易里面的主要信息是:花哪个地址的钱(称为输入,1或n个),付给哪个地址(称为输出,1或n个)付多少签名34BTC和地址有的BTC地址上,存放着上万的BTC

22、,有的则比0.00001还少。(如果已经花了,就没了)一个交易里,发送部分为输入,接收部分为输出。35所有的输入,所有的输入,都是曾经都是曾经的输出的输出。一个交易数据360100000001186f9f998a5aa6f048e51dd8419a14d8a0f1a8a2836dd73 4d2804fe65fa35779000000008b483045022100884d142d86652a3f47 ba4746ec719bbfbd040a570b1deccbb6498c75c4ae24cb02204b9f039 ff08df09cbe9f6addac960298cad530a863ea8f5

23、3982c09db8f6e3813 01410484ecc0d46f1918b30928fa0e4ed99f16a0fb4fde0735e7ade84 16ab9fe423cc5412336376789d172787ec3457eee41c04f4938de5cc1 7b4a10fa336a8d752adfffffffff0260e31600000000001976a914ab6 8025513c3dbd2f7b92a94e0581f5d50f654e788acd0ef800000000000 1976a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888

24、ac00000000Alice向Bob支付的一杯咖啡的钱解读这个交易37Alice向Bob支付的一杯咖啡的钱Alice那0.1BTC的来源38UTXO一旦使用一个输出,就必须花完,花不完可以把零钱打给自己。每个尚未使用的输出,就是一个UTXO(Unspent Transaction Output)。下面这个例子中,把零钱打给自己(也可以是自己的另一个地址),产生两个新的UTXOA,10 B,3 A,739另一个交易:多输入多输出40挖矿奖励:coinbase交易41交易输出交易输出的内容:金额,锁定脚本 想花这份钱,你需要提供地址所对应私钥的签名!锁定脚本里面主要是公钥Hash、Hash比对、

25、签名验证 也就是验证花钱人是否提供了正确的公钥和签名也就是验证花钱人是否提供了正确的公钥和签名金额以10-8个比特币(成为satoshi,聪)为单位。(也即最小单位为0.00000001BTC)42输出的数据结构43 金额:16e360,即1500000聪,也即0.015比特币(即)脚本长度:19(即25字节)锁定脚本:OP_DUP OP_HASH160 ab68025513c3dbd2f7b92a94e0581f5d50f654e7 OP_EQUALVERIFY OP_CHECKSIG60e31600000000001976a914ab68025513c3dbd2f7b92a94e0581f

26、5d50f654e788ac一个输出:输入交易输入的内容:钱从哪来,解锁脚本(证明钱是你的)钱从哪来,从发送者BTC地址所拥有的UTXO来要提供这个UTXO所在的交易ID该UTXO在那个交易中的输出的顺序号解锁脚本里面有什么?主要是签名和公钥提供签名用来证明自己是私钥的主人提供公钥是因为验证签名时需要(UTXO中不含公钥)44输入的数据结构45ID186f9f998a5aa6f048e51dd8419a14d8a0f1a8a2836dd734d2804fe65fa35779000000008B483045022100884d142d86652a3f47ba4746ec719bbfbd040a5

27、70b1deccbb6498c75c4ae24cb02204b9f039ff08df09cbe9f6addac960298cad530a863ea8f53982c09db8f6e381301410484ecc0d46f1918b30928fa0e4ed99f16a0fb4fde0735e7ade8416ab9fe423cc5412336376789d172787ec3457eee41c04f4938de5cc17b4a10fa336a8d752adfffffffff一个输入:用16进制表示交易ID:186f9f998a5aa6f048e51dd8419a14d8a0f1a8a2836dd734

28、d2804fe65fa35779顺序号:00000000脚本长度:8B(139字节)脚本:签名长度:48(72字节)签名:3045022100884d142d86652a3f47ba4746ec719bbfbd040a570b1deccbb6498c75c4ae24cb02204b9f039 ff08df09cbe9f6addac960298cad530a863ea8f53982c09db8f6e381301 公钥长度:41(65字节)公钥:0484ecc0d46f1918b30928fa0e4ed99f16a0fb4fde0735e7ade8416ab9fe423cc541233637678

29、9d172787ec3457eee41c04f4938de5cc1 7b4a10fa336a8d752adf序列号:ffffffff46*注意比特币采用小端字节排放,是倒序的。交易的格式47主要是多少个输入多少个输出,以及相应的输入输出交易的HEX字节流0100000001186f9f998a5aa6f048e51dd8419a14d8a0f1a8a2836dd73 4d2804fe65fa35779000000008B483045022100884d142d86652a3f47 ba4746ec719bbfbd040a570b1deccbb6498c75c4ae24cb02204b9f039

30、 ff08df09cbe9f6addac960298cad530a863ea8f53982c09db8f6e3813 01410484ecc0d46f1918b30928fa0e4ed99f16a0fb4fde0735e7ade84 16ab9fe423cc5412336376789d172787ec3457eee41c04f4938de5cc1 7b4a10fa336a8d752adfffffffff0260e31600000000001976a914ab6 8025513c3dbd2f7b92a94e0581f5d50f654e788acd0ef80000000000001976a9147

31、f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac0000000048蓝色表示输入,其中下划线表示交易ID。红色表示输出,其中下划线表示金额。(1500000,8450000)每个节点做的事每个收到交易的比特币节点将会首先验证该交易,只有有效的交易才会在网络中传播,无效的交易将会被废弃。每个节点都会校验每一笔收到的交易:语法、数据结构、字节大小、输入输出值的大小。每个输入引用的UTXO是必须存在的。每个输入所引用的UTXO,如果已经被池中其他交易的输入引用,该交易将被拒绝。每个输入所引用的UTXO,在主分支和交易池中寻找产生该UTXO的交易。如果找不到,将此

32、交易加入孤儿交易池中。每个输入的解锁脚本必须能通过解锁验证。49Pay to Public Keyhash脚本解锁验证PubKHash其实就是未经base58check的公钥地址50515253区块靠Hash链接起来!所有块之间都有一个链接的关系。上区块头部的hash值,存放在本区块头部。本区块头部的hash值存在下个区块中。本区块hash值=Hash(本区块头部)=Hash(上区块hash值+本区块merkle根+本区块随机数+.)*merkle根来自本区块内的交易54关于块结构每个块=头部交易数据头部(80个字节):版本号上一个区块的hash值(通过这个链接到上一个区块)merkle根(可

33、简单理解为对所有交易数据的hash)时间戳难度(bits,调节挖矿的难度)随机数Nonce(挖矿时用来穷举的变量)5556Hash=SHA256(SHA256(version+prev_Hash+merkle_root+time+diffculty+random)57区块头结构难度区块挖矿的难度称为难度位或简称bits。比如在区块277,316中,它的值为 0 x1903a30c。这个标记法,0 x19为幂,0 x03a30c为系数。计算难度标的公式为:target=coefficient*2(8*(exponent 3)=0 x03a30c*2(0 x08*(0 x19-0 x03)=0 x

34、03a30c*2(0 x08*0 x16)=0 x03a30c*20 xB0=0 x0000000000000003A30C00000000000000000000000000000000000000000000难度位(bits)越小,难度越大。58难度调整在一个完全去中心化的网络中,难度调整是如何做到的呢?每2,016个区块中的所有节点都会调整难度。难度的调整公式是由最新2,016个区块的花费时长与20,160分钟(两周,即这些区块以每10分钟一个速率所期望花费的时长)比较得出的。New Difficulty=Old Difficulty*(Actual Time of Last 2016

35、Blocks/20160 minutes)解释:如果过去两周来平均产生速率比10分钟快,系数会小于1,新的难度变大。59挖矿通过改变本区块头中的随机数(nonce)以及其他可以改动的地方,要让本区块头中记录的hash值bits(难度值)。注:还可以通过改变coinbase交易中的extraNonce区域(8字节)来来改变区块头中的merkle_root,还可以改变ntime。目的是做出满足要求的hash。60挖矿在Andreas编写Mastering Bitcoin这本书的时候,比特币网络某个区块头的哈希值:000000000000004c296e6376db3a241271f43fd3f5d

36、e7ba18986e517a243baa7 (15/64hex,前60bit)全网具备100PH每秒(petahashes per second,peta-为1015)的处理能。1E=1000P 1P=1000T 1T=1000G 1G=1000M 1M=1000K6162目前2018年5月7日,第521582块的Hash:00000000000000000024ee89088f2953322c84117702a145740dc88d8e3821ed (18个0,前72bit为0)全网算力达到了29EH/s63个人挖矿的难度2018年5月,有1PH/S算力的矿工,占全网算力的1/29000,平

37、均每天可以挖到的比特币是1/29000*6(每小时6次)*24(每天24小时)*12.5(每次12.5个)=0.062个比特币。而ATI芯片的显卡7970这样的高端显卡算力也就是600MH/S。即便是个人的算力为1GH/s,也只是上述算力的1/百万,也即平均每百万天(2700多年)才能挖到0.062个。64矿工652018.5.766出现分支怎么办考虑有两个矿工几乎同时挖出一个块,并在网络中同时广播这个新的块,很多节点收到相同编号的两个区块,难度都是正确的。怎么办?怎么办?67始终选取最长分支规则:BTC全网唯一的区块链是那支付出最大计算力的分支,也即最长分支最长分支。每个矿工按照以下原则决定

38、在哪条分支上继续工作(其他区块放在备选分支中再看看):1.不同长度的分支,总是接受最长的分支做主链。2.相同长度的分支,则接受难度最大的做主链。3.否则接受先收到的。68关于双花注意:最终只有一个主链!也即最长的那个链。只有在主链中的交易,才是有效的。为保险起见,接受者通常会等6个确认。接受者看不到区块中有自己的交易就不会发货。想收到货后再去追上主链使另一个交易的链成为主链,除非有51%的算力。6970比特币的安全性发送假的交易?签名难以伪造重放已经发过的交易?UTXO已经花掉篡改以前的交易?需要挖矿Ddos?攻击分布式节点?获取或破解密钥?主要靠偷靠骗矿工将假的交易入账?会被别人发现71区块

39、链-百度百科广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。72区块链解决了什么以前解决不了的问题?提供了不依赖中介的基于技术的信任!73无需中介、过程透明、价值传递、安全度高“值得信任的机器”比特币背后的技术 将如何改变世界 经济学人 2015.10.3174比特币的共识1.区块、交易、输入、输出、脚本的数据结构2.挖矿算法,以及难度定期的更替3.比特币的奖励算法,手续费4.对区块分叉的处理,保持在最长的链上5.对脚本的解释和执行6.加密算法:SHA256,RIPMD16076用区块链管理信用证77参考Mastering BitcoinAndreas M.Antonopoulosblockchain.info en.bitcoin.it/wiki78结束,谢谢!2018.5.879

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

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com