澎湃新闻|Comunion 区块链深度学习系列|挖矿和钱包原理


北京联盟_本文原题:Comunion 区块链深度学习系列|挖矿和钱包原理
本系列内容包含: 基本概念及原理、密码学、共识算法、钱包及节点原理、挖矿原理及实现 。
挖矿
构成区块头的因素都产生以后 , 矿工会在Nonce中随机填入一个值 , 比如下图中Nonce=14202 , 接着对区块头进行哈希运算 , 会产生一个哈希值 , 这个哈希值会和区块头中的难度值进行比较 。
当计算哈希比难度值大的时候 , 系统就会判定不符合要求 , 此时需要返回继续增加Nonce值 , 重新计算哈希值 , 以此不断重复循环计算 , 直到计算哈希小于难度值 , 才会进行下一步 , 这就是挖出了矿 。
挖出矿之后 , 系统会将Nonce值固定到区块头中 , 并将交易广播到全网 。
澎湃新闻|Comunion 区块链深度学习系列|挖矿和钱包原理
本文插图

其实这里有一个问题是 , 既然第一个Nonce值不行的话 , 那为什么所有的矿工一般都是通过字征法 , 也就是一个一个数字相加的方式去运算呢?
有的人会认为 , 既然Nonce值是随机的 , 那为什么填入的时候不能随机填入呢 , 比如说1不行 , 就填100;100不行 , 就填500;500不行 , 就填2000……这样概率是不是应该更大一些?
其实并不会 , 因为哈希运算的时候 , 即使Nonce值只改变了一个数字 , 但是其哈希计算结果的区别却非常大 。
也就是说 , 随机碰撞去试Nonce值的计算哈希概率并不会比顺序尝试的概率大 , 并且还会增加矿机设计的难度 。
所以 , 现在挖矿一般都是通过给定计算范围的方式去计算Nonce值 。
比如上图中 , 14202不行 , 那就14203……一直到12405 , 这时区块哈希小于难度值 , 这时也就是挖出了矿 , 找到了可用区块 , 最后将结果广播给全网 。
需要说明的是 , 矿工挖出符合难度要求的区块之后 , 会将这个区块广播给网络中的其他节点 , 其他节点会验证新收到的区块是否符合难度要求 。 并且会将区块中包含的所有交易重新验证一遍 , 包括交易是否合法 , 交易输入和签名是否合法等 。
如果验证没有问题 , 就会将这个区块添加到自己本地节点的账簿中 , 也就是填到链上 , 此时一笔交易完成 。
数字钱包
钱包最重要的是私钥 , 因为有私钥就可以得到交易地址 , 并且可以通过链上去查询到与交易地址相关的所有记录以及余额 。
如果私钥丢失或者被盗了 , 那这个钱包就再也找不回来了 。
一个钱包中也可以有多个私钥 , 这取决于选用钱包的不同 。
我们分析一些不同种类的钱包
不确定性钱包 , 这种钱包中的每个私钥之间没有关联性 。 备份钱包的时候 , 需要对每个私钥进行备份 。
澎湃新闻|Comunion 区块链深度学习系列|挖矿和钱包原理
本文插图

由于私钥是由很长的一串无序十六进制字符串构成的 , 只备份一个就很容易出错 , 如果再备份很多个 , 其这个工作量是巨大的 , 并且人工备份的过程中出错的概率也会上升 , 一旦备份丢失或者人工记录错误 , 这个钱包就无法找回 。
【澎湃新闻|Comunion 区块链深度学习系列|挖矿和钱包原理】不确定性钱包由于其管理难度的原因 , 往往容量是有限的 , 即私钥和地址的产生是有限的 。
确定性钱包 , 这种钱包中所有的私钥是由一个主私钥按照一定规则衍生得出 。 备份钱包的时候 , 只需要把主私钥备份下来 , 并且把衍生规则记录下来 。
澎湃新闻|Comunion 区块链深度学习系列|挖矿和钱包原理
本文插图

这种钱包可以很顺利的通过主私钥种子 , 拿回钱包中包含的所有私钥和地址 。 其中每一个私钥是一个根 , 每个私钥管理下一个 , 当一个私钥泄露的话 , 只要知道规则 , 相连的一串私钥都会泄露 , 这也导致确定性钱包存在一定的不安全性 。


推荐阅读