9龙资料

本文主要介绍9龙资料 方法和在新技术下所面对的“挑战”,方便大家深入理解9龙资料 过程。本文也将分享9龙资料 所遇到的问题和应对策略,怎么解决怎么做的问题。
通过深入本文可以理解代码原理,进行代码文档的下载,也可以查看相应 Demo 部署效果。

 

  • 引言
  • 比特币基本结构
  • 比特币基础知识
    • 1)哈希算法
    • 2)非对称加密技术
    • 3)数字签名
    • 4)MerkleTree
    • 5)哪有比特币,有的是UTXO
    • 6)比特币挖矿与共识
    • 7)区块验证(共识)
  • 总结

 

引言

上一篇我们已经知道了什么是区块链,此篇说一下区块链的第一个应用——比特币。其实先有比特币,后有的区块链。比特币是中本聪提出的一种P2P去中心化的支付系统,其底层原理为:去中心化、数据不可篡改、可溯源;数据以区块的形式保存,并且像链条一样连接起来,很形象地称为区块链。比特币就是一条上文说过的公有链。

9龙

比特币基本结构

上一节我们说过,账本以交易的形式记录,那交易是如何存储在区块链上呢?

交易存储在区块之中。区块分为区块头以及区块体,区块头包含区块的概要信息,区块体包含交易信息。

  • 区块头
  1. version(版本号):用于协议区分或者升级
  2. height:区块高度
  3. hash(区块Hash):区块的唯一指纹
  4. preBlockHash(父区块Hash):用于向前追溯
  5. merkleRoot(默克尔树根Hash):可用于节点快速验证区块的交易是否被篡改或者SPV(Simplified Payment Verification 简单支付验证)客户端验证某一个交易是否存在于比特币链上。
  6. time(区块生成时间)
  7. dificultyTarget(目标难度:nBits):挖矿难度
  8. nonce(随机数):比特币协议中“难题的解”
  • 区块体
  1. transactions(区块包含的交易列表):被矿工打包在区块中的交易,实际为用户的转账交易。
    • version(版本号):用于升级
    • Inputs:交易输入列表,指向待花费的UTXO,可以有零个至多个。coinbase(创币交易)没有输入。
    • Outputs:交易输出列表:指向即将产生的UTXO
    • lockTime:交易锁定时间。实际为UNIX时间戳(相对于1970年1月1日0点后流逝的秒数。)矿工打包交易时,会判断是否到达此时间,到达后才会将此交易进行打包。
    • time:交易的生成时间
    • memo:备注字段,用户可自由填写。

9龙 9龙 9龙

比特币基础知识

1)哈希算法

哈希算法就是将任意长度的数据转变为一个定长的数据(也叫哈希或者摘要)。常见的哈希算法有CRC32、MD5、SHA1、SHA2、SHA3、Hmac等。

哈希算法具有以下特点:

  • 单向不可逆性:想要通过哈希值逆推出原来的数据,只有通过暴力破解的方法实现,但这几乎无法做到,可能量子计算机出来后就可以破解了。

  • 确定性:如果hash值不同, 可以确定原数据一定不同。如果相同,则还需要进一步判断,因为可能hash碰撞了。

  • 雪崩效应:原始数据任何微小的变动都会导致哈希值完全不一样

  • 不变性:同一个数据,多次hash结果相同。

2)非对称加密技术

非对称加密有公钥和私钥两个概念,私钥自己拥有,不能给别人,公钥公开。根据应用的不同,我们可以选择使用不同的密钥加密:

  • 私钥签名:使用私钥签名(加密),公钥验签(解密)。用于让公钥所有者验证私钥所有者的身份并且用来防止私钥所有者发布的内容被篡改,但是不用来保证内容不被他人获得。(内容本身非加密的,别人可以获得信息但无法篡改)

  • 公钥加密:用公钥加密,私钥解密。公钥所有者可用于加密发布的信息,这个信息可能被他人篡改,但是无法被他人获得。

    ​ 举例:比如小黑持有公钥,将 “我爱你” 加密后的消息 “xxx” 发送给喜欢的人小花(小花持有私钥),但小灰也喜欢小花并且也有公钥,小灰劫持了小黑的消息(消息内容已加密,小灰也不知道内容是什么),并将 “我恨你” 加密为 “xxx”组装为小黑的请求发送给小花,小花收到小黑的请求后,用私钥解密,得到内容为:“我恨你”。这下小黑就凉凉,心机boy小灰就成功了。

    签名与加密可以混合使用,提高安全性与隐私性。

3)数字签名

作用:保证信息传输的完整性、发送者的身份验证(鉴权)

原理:使用非对称加密技术及hash技术,非对称加密生成一对公私钥对,私钥用于签名,公钥用于验签。签名的对象为内容的hash。

为什么签名不直接签署内容,而是签署hash呢?

答:效率问题,如果你的原内容很大,直接对原内容签名效率很低,而且签名的结果也相对很大,传输也慢。

签名验签过程

9龙

  • 签名过程:首先获取通过哈希算法获取原文的摘要信息,然后用私钥加密,并将原文一起发送给接受者。
  • 验证过程:接收者只有使用发送者的公钥才能解密被加密的摘要信息,同样通过哈希算法获取原文的摘要信息,并与解密后的摘要信息做对比。如果相同则说明信息完整,确实是对方本人的签名(因为公钥和私钥是一对的)。

在比特币系统中,公钥(地址)用于接收比特币,而私钥则用于比特币支付时的交易签名。

在支付比特币时,比特币的所有者需要在交易中提交自己的公钥和该交易的签名。而比特币网络中所有节点可以通过所提交的公钥和签名进行验证,从而确认支付者对交易的比特币的所有权。

4)MerkleTree

9龙

Merkle树是⼀种哈希⼆叉树,它是⼀种⽤作快速归纳和校验⼤规模数据完整性的数据结构。这种⼆叉树包含加密哈希值。

在⽐特币⽹络中,Merkle树被⽤来归纳⼀个区块中的所有交易,同时⽣成整个交易集合的hash,且提供了⼀种校验区块是否存在某交易的⾼效途径。

当N个数据元素经过加密后插⼊Merkle树时,时间复杂度为log(N)【因为Merkle树可能为完全二叉树或者满二叉树。而满二叉树的高度为log(N)】就能检查出任意某数据元素是否在该树中,这使得该数据结构⾮常⾼效。

计算merkleRoot时,如果交易数量为奇数,则复制最后一个交易hash进行计算。

Merkle树的效率

交易数量 区块的近似大小 路径大小(Hash数量) 路径大小(字节)
16笔交易 4KB 4个Hash 128字节
512笔交易 128KB 9个Hash 288字节
2048笔交易 512KB 11个Hash 352字节
65535笔交易 16MB 16个Hash 512字节

注:单个Hash32字节

依表可得,当区块⼤⼩由16笔交易(4KB)急剧增加⾄65,535笔交易(16MB)时,为证明交易存在的Merkle路径⻓度增⻓极其缓慢,仅仅从128字节到512字节。有了Merkle树,⼀个节点能够仅下载区块头(80字节/区块),然后通过从⼀个满节点回溯⼀条⼩的Merkle路径就能认证⼀笔交易的存在,⽽不需要存储或者传输⼤量区块链中⼤多数内容,这些内容可能有⼏个G的⼤⼩。这种不需要维护⼀条完整的区块链的节点,⼜被称作简单⽀付验证(SPV)节点,它不需要下载整个区块⽽通过Merkle路径去验证交易的存在。

Merkle树和简单⽀付验证(SPV)

Merkle树被SPV节点⼴泛使⽤。SPV节点不保存所有交易也不会下载整个区块,仅仅保存区块头。它们使⽤认证路径或者Merkle路径来验证交易存在于区块中,⽽不必下载区块中所有交易。

区块头只有80字节,而一个区块大小为1M(比特币已扩容为2M),所以SPV节点验证交易是否存在,只需要比特币区块容量的千分之一的数据就可以,大大节省容量。

例子:使用上面的merkelTree中的交易。假设SPV节点想验证交易A是否存在与区块内。

9龙

如图所示,SPV节点只需要获取该
9龙资料部分资料来自网络,侵权毕设源码联系删除

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 9龙资料

提供最优质的资源集合

立即查看 了解详情