• 登录   注册   投稿  
  • 2025-05-28 21:21:12
    126

    1分钟了解“挖矿”的本质

    摘要
    文章的留言里,不少朋友会用比特币来解释区块链,那区块链与比特币是什么关系?答:区块链是分布式存储,比特币是基于该存储的应用,其他诸如莱特币,以太币都是基于区块链的电子货币应用。...

    文章的留言里,不少朋友会用比特币来解释区块链,那区块链与比特币是什么关系?

    答:区块链是分布式存储,比特币是基于该存储的应用,其他诸如莱特币,以太币都是基于区块链的电子货币应用。理论上,使用上层应用来解释底层存储是不合适的。

    1分钟了解“挖矿”的本质

    如上图,mysql是底层存储,wechat是上层应用,用wechat来解释mysql是不合适的。

    今天,从技术的角度出发,聊聊什么是区块链里的“挖矿”。

    先说结论,区块链挖矿的本质是啥?

    答:生成一个区块,链入区块链的过程,就是挖矿。挖矿的人,就是矿工。

    什么是区块(block)?

    答:如《1分钟了解区块链的本质》里所述,区块是一块存储空间,可以存储数据。

    如上图,区块分为区块头(header)和区块体(body)。

    区块体(body)存了些什么?

    答:想存什么存什么,和上层应用有关,就像mysql里存什么依赖于上层应用。例如比特币使用的区块链,区块体里存储的是比特币交易记录。

    区块头(header)存了些什么?

    答:区块头里存储了和这个区块,以及区块链相关的一些元数据。

    如上图,区块头里的三个常见属性:

    什么是区块链(blockchain)?

    区块是怎么链起来的?

    答:

    struct node{

    node* prev; // 前一个节点

    int time; // 时间戳

    int nonce; // 随机数

    1分钟了解“挖矿”的本质

    void* node_body; // 存储数据

    }node;

    链表,节点指针可以作为这个节点的唯一标识,下一个节点通过存储上一个节点的指针,将链表链起来。

    与之类似,区块的哈希可以作为区块的唯一标识,下一个区块通过存储上一个区块的哈希,将区块链起来,这就是区块链。

    讲完区块与区块链的概念,接下来讲挖矿,也就是区块的生成。

    在此之前,先说说区块链的三个特性:

    假如已经同步了最新的区块链数据,要满足什么条件,才算生成一个新的区块,才算“挖矿”成功呢?

    答:对最新的区块头进行两次SHA256计算,得到的256bit哈希结果,高位48bit必须是0x00000000FFFF,才算挖矿成功。

    画外音:这句话很重要,是这篇文章的核心。

    为什么大家都说“挖矿”很难?

    由符合条件的哈希值,倒推出区块头,填入相应的“前一块区块哈希值”“时间”“随机数”不就可以了吗?

    答:额,这,,,哈希(SHA256是一个哈希算法)是不可逆的。例如MD5

    md5(string) = md5_result

    大家都知道:

    可以看到,这就好比在一座山上随手捡起一块石头,正好是一块金子,我猜测,这也正是把生成新区块叫做“挖矿”的原因。

    那应该怎么找到符合条件的区块头呢,从而成功挖到矿呢?

    答:穷举法。

    区块头里有个随机属性nonce,将这个属性从0开始,遍历到2^32,来计算区块头的哈希值,如果得到的哈希结果符合条件,则挖矿成功。

    其伪代码如下:

    1分钟了解“挖矿”的本质

    byte[32] = PrevBlockHash; // 上一个区块的哈希

    for(int i=0 to 2^32){ // 遍历所有整数

    int time=now(); // 时间戳

    blockHeader= new(byte[32], time, i); // 生成区块头

    hashResult= SHA256D(blockHeader); // 计算哈希值

    if(hashResult>>208 == 0x00000000FFFF){ //哈希符合预期

    echo“bingo”; // 挖到矿啦

    看上面的算法,只要程序运行时间足够久,总能挖到矿呀?

    答:错,如果别人计算能力强,在你挖到矿之前,如果别人先生成了新区块,广播到了区块链网络,你本地不是最新的区块链,你挖到的矿就作废啦,此时你要放弃之前所有的工作,先向网络同步最新的数据,再重新开始挖。

    有什么方法可以提升挖矿的速度呢?

    答:从架构的角度出发

    如上图,这是西藏高原上的一个比特币矿场,廉价的电力让无数矿工趋之若鹜。

    综上,区块链里,什么是挖矿?

    答:在最新区块链的数据上,生成一个符合条件的区块,链入区块链的过程,就是挖矿。

    关于区块链与挖矿,大家或许还有不少疑问:

    这些疑惑,下一个一分钟,再和大家解释。

    希望这很短的一分钟,大家了解了挖矿的本质。

    本文链接:https://www.ainiseo.com/btc/13187.html

    免责声明:网所有文字、图片、视频、音频等资料均来自互联网,不代表本站赞同其观点,内容仅提供用户参考,若因此产生任何纠纷,本站概不负责,如有侵权联系本站删除!
    请联系我们邮箱:207985384@qq.com
    长沙爱搜电子商务有限公司 版权所有
    备案号:湘ICP备12005316号

    声明:文章不代表爱搜币圈网观点及立场,不构成本平台任何投资建议。投资决策需建立在独立思考之上,本文内容仅供参考,风险自担!转载请注明出处!侵权必究!

    相关推荐

    最新热点

    查看更多