首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何理解挖矿的原理?

很多行外人士对挖矿想不明白,什么哈希,容错、什么拜占庭,什么出块,搞的云里雾里,最后还弄了个挖矿,这都是行内人士故弄玄虚吧。写这一小段文章,就是阐述几个概念,让行外人士快速理解。哈 ...

很多行外人士对挖矿想不明白,什么哈希,容错、什么拜占庭,什么出块,搞的云里雾里,最后还弄了个挖矿,这都是行内人士故弄玄虚吧。

写这一小段文章,就是阐述几个概念,让行外人士快速理解。

哈希(HASH)--可以看成数字指纹:根据一段文本或数据(T1),可以生成唯一的一个值(H1),即使这段文本修改了一个标点符号(T2),生成新的值(H2)与原来的值会风马牛不相干,这样,可以用这个值(H1)来指代(T1),但又不需要知道T1到底是什么

容错:网络上的各个计算机之间通信可能有延时,有些计算机上的软件可能是恶意的,如何在这个环境下获得大部分都能够认可的结果

出块:由于计算机之间通信是有时延的,所以大家约定一段时间看看是不是可以获得一致的结果,称为一段时间出一个块

比特币的基本原理:

比特币是一个记录交易的工具或是系统,他所做的事,在中心化的系统中都可以做到,他的天才之处在于不需要任何一台中心服务器就能做到,而且从理论上证明了目前是不可攻破的。

交易记录

比特币系统中的任何一台矿机,都在监听网络中的交易信息,每收到一条交易信息,就记在自己的块里

出块要求

比特币系统中的任何一台矿机,都把自己当前所有接收到的交易记录放到块里,然后对块里的所有数据进行哈希计算,生成一个哈希值,或者说是数字指纹。

上面这两个一点都不牛叉,很多系统就这样干的,牛叉的在后面:

任何一台矿机都在出块,谁说了算?

想象下中本聪大神和另外一个小神(假设他叫中本明)在讨论:

中本聪:这个很简单啊,大家约定好,符合某个条件的哈希值才算,比如,哈希值的第一位必须是0; 这样算出来是0的就是有效,其它的都无效;这样,平均10个人中有一个人是有效的。大家都认这个人。

中本明:我反对,既然是数字指纹,我收到的信息一致,不会算出第二个指纹来啊,难道我故意扔掉一些交易?

中本聪:那这样吧,在块里面我们留出一小块区域来,让大家随便填什么,只要填上后算出来的哈希值符合要求,就认,这样可以了吧。

中本明:嗯,这样,任何机器任何时候,都有

机会算出满足要求的哈希值。谁先算出来的就有效,但这样有个问题啊,计算机的能力越来越强,算到合适的哈希值越来越快,最后快到交易还没有来,哈希就算出来啊

中本聪:嗯,这样吧,根据我们的网络延时,我感觉15分钟出一个块是比较合理的,我们在代码里做动态难度调整,如果有谁算出哈希值的时间短了,下一次的难度值就要调整,前面1个0不够,就扩展成2个0,再不够就扩展成10个0,20个0,50个0;这样大家平均10次才能得到一个,100次才能得到1个,10^10次才能得到一个........

中本明:高,实在是高,佩服得五体投地。

总结

这些东西,原理都很简单,想到这样的方法是天才啊。

哪比特币是怎么挖矿的呢?现在可以看出来的:

矿就是一小段可以改变,对区块的其它内容不构成影响的一串数字,矿机在记账的同时,不断修改这一小段数据,计算hash值,直到这个hash值满足当前系统的要求。

如果你算出来了满足要求的哈希值,你就把这个哈希值和块一起广播出去:“哈哈,我挖到了”,大家帮你验证一下,发现是对。然后就默默地把你的块放到系统里。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210304A08D6100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券