欢迎来到天天文库
浏览记录
ID:40759136
大小:3.31 MB
页数:28页
时间:2019-08-07
《区块链和比特币》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、区块链技术知识分享2018年6月9日Agenda区块链和比特币以太坊(Ethereum)及智能合约介绍超级账本(Hyperledger)项目和fabric区块链和比特币概述起源BTC诞生BTC交易原理UXTO区块脚本地址生成MerkelTree工作量证明最长链规则挖矿分叉扩展性安全性发展方向区块链和比特币(1)-概述去中心化的账本,一种使用密码学的方法相关联产生的数据块匿名性+专属所有权难以篡改具有自治的能力区块链和比特币(2)-起源1976年,BaileyW.Diffie和MartinE.Hell
2、man《密码学的新方向》发表(公钥加密理论),次年RSA算法诞生1980年,MerkleRalf提出Merkle-Tree数据结构和算法(区块中交易校验的手段)1982年,LeslieLamport等人提出拜占庭将军问题(共识的基础)1985年,椭圆曲线加密(ECC)算法诞生(加密的基础)1990年,DavidChaum创立DigitalCash,第一种中心化不可追踪的加密数字现金系统1992年,ScottVanstone等人提出椭圆曲线加密数字签名算法(ECDSA)1997年,AdamBack发明
3、Hashcash技术,为一种工作量证明算法(ProofofWork,POW),此算法依赖哈希函数的不可逆特性,达到容易被验证,但很难被破解的特性1998年,戴伟发布匿名分布式电子现金系统B-money,NickSzabo提出去中心化货币BitGold的理论2005年,HalFinney提出可重复使用的工作量证明机制(RPOW),结合B-money与AdamBack提出的Hashcash算法进行数字货币试验区块链和比特币(3)-BTC诞生2008年11月1日,一个署名中本聪(SatoshiNakamo
4、to)的人在一个小型密码学讨论组中发表了论文《比特币:一种点对点的电子现金系统》2009年1月3日,中本聪在位于芬兰赫尔辛基的一个小型服务器上挖出了第一笔50个比特币(创世区块)区块链和比特币(4)-BTC交易原理区块链和比特币(5)-UTXO和传统accountbased支付系统不同,比特币系统中使用区块来记录交易往来,本质为一种UXTO(UnspentTransactionOutput)方案、区块账本记录的是交易(日志),而不是货币;每一笔交易都要消耗(spend)N笔输入,产生N笔输出;但输入
5、总量和输出总量需要保持相等区块链和比特币(6)-区块完整的区块结构名称字节字段说明MagicNO4魔数表征网络协议,0xD9B4BEF9表示主网,0xDAB5BFFA表示testnetBlocksize4区块大小用字节表示的该字段之后的区块大小Blockheader80区块头组成区块头的几个字段Transactioncounter1-9交易计数器该区块包含的交易数量,包含coinbase交易Transactions不定交易记录在区块里的交易信息,使用原生的交易信息格式,并且交易在数据流中的位置必须与
6、Merkle树的叶子节点顺序一致区块头(Blockheader)结构名称字节数据类型描述Version4int32_t版本号表示所遵循的规则PreBlockHeaderHash32char[32]SHA256(SHA256())前一块头部的哈希MerkleRootHash32char[32]这块中所有交易的哈希Time4uint32_tUnix时间戳Bits4uint32_t难度系数Nonce4uint32_t随机数区块链和比特币(7)-区块Transactions结构Input结构名称字节数据类型
7、描述Version4int32_t交易版本InputsCounter1-9可变integer输入单数量InputsDetail-array输入单列表OutputsCounter1-9可变integer输出单数量OutputsDetail-array输出单列表LockTime4uint32_t锁定时间名称字节数据类型描述Previoustxhash32char[32]引用前一交易的hashPreviousOutputIndex4uint32_t被引用交易的Output的索引InputScriptLen
8、gth1-9可变integer输入单列表InputScript/scriptSig--输入脚本SequenceNumber4uint32_tOutput结构名称字节数据类型描述Amount/Value8uint32_t比特币数量InputScriptLength1-9uint32_t输出脚本长度OutputScript/scriptPubKey--输出脚本区块链和比特币(8)-脚本Hash:9c50cee8d50e273100987bb12ec46208cb04a1d
此文档下载收益归作者所有