主页 > imtoken浏览器可以下载 > G. 比特币矿机原理介绍

G. 比特币矿机原理介绍

imtoken浏览器可以下载 2023-08-25 05:07:35

G. 比特币矿机原理的几个方面介绍

1、一开始比特币可以用CPU挖,中本聪用他的电脑CPU挖出了世界上第一个创世块。 然而CPU挖矿的时代早已过去,现在比特币挖矿是ASIC挖矿和大规模集群挖矿的时代。

2、挖矿速度,专业上叫算力,是计算机每秒产生哈希碰撞的能力。 也就是说,我们的矿机每秒能进行的哈希碰撞次数就是算力。

3. 比特币的宏观原理就像黄金。 地球上的黄金总量是一定的,而且比较稀少。 它可以用作一般等价物。 在纸币大规模发行之前,它被用作一种货币形式。 比特币也是如此。 比特币之所以能够作为一种货币进行交易,也是因为它的总量是一定的,而挖矿需要很大的成本。 主要性能是功耗。

4.Workload proof,简单理解就是确认你做了一定的工作量。 监控工作的全过程通常是极其低效的,而通过证明工作的结果来证明相应的工作量已经完成是一种非常高效的方式。

5、比特币背后是一个公共账本,每十分钟需要重新记录一次。 成功的簿记员将获得一定数量的比特币作为奖励。 在比特币诞生之初,这个奖励是 50 个比特币,这个数字大约每 4 年减半。

H. 比特币挖矿难度与算力

难度是挖矿难度的度量,即计算出满足给定目标的 HASH 值的难度。

难度 = difficulty_1_target / current_target

difficulty_1_target长度为256bit,前32位为0,后面全为1,一般显示为HASH值:,difficulty_1_target表示btc网络的初始目标HASH。 current_target为当前区块的目标HASH,先压缩后存入区块。 在一个区块被建立之前,该区块的HASH值必须小于给定的目标HASH。

例如:块存储的压缩目标HASH为0x1b0404cb,则未压缩的16进制HASH为

因此,当目标HASH为0x1b0404cb时,难度为:

比特币挖矿的过程其实就是通过随机哈希碰撞找到一个解nonce,使得区块哈希小于目标HASH值。 一台矿机每秒能进行多少次hash碰撞,代表其“算力”,单位写为hash/s或H/s

算力单位:

比特币系统的难度是动态调整的。 每 2016 个区块将进行一次调整。 调整以之前2016个区块的出块时间为准。 如果难度大于10分钟,难度就会降低。 目的是为了保证系统的稳定性,每10分钟出一个块,所以难度调整时间约为2周(2016 * 10分钟)

全网算力为btc网络中所有参与竞争挖矿的矿机算力总和。 当前难度周期的全网算力高低,将影响下一个周期的难度调整。 如果全网算力增加,挖矿难度增加,单台矿机的产量会定时下降。 目前全网算力约为24.42EH/s,一台蚂蚁S9矿机算力约为14TH/s

那么,以全网目前的算力,下一个周期的难度将如何调整呢?

根据公式:

因为出块时间应该稳定在10分钟,也就是600s:

那么,在3.46e+12的难度下,算力为14TH/s的矿机平均出块需要多长时间?

根据公式:

有:

比特币莱特币挖矿教程_比特币挖矿机配置_比特币 怎么挖矿

挖矿莱特币好还是比特币好_比特币的挖矿原理_比特币莱特币挖矿教程

结果大约是12270天

1、详解比特币挖矿原理

将区块链视为所有交易的公共分类帐(列表),比特币网络中的每个参与者都将其视为所有权的权威记录。

比特币没有中央权威,几乎所有的全节点都有一份公共账本的副本,可以认为是经过身份验证的记录。

到目前为止,还没有一次对主线区块链的成功攻击,一次都没有。

比特币通过创建新块以确定但递减的速度铸造。 大约每十分钟生成一个新块,每个新块都伴随着一定数量的从头开始创建的全新比特币。 每开采出210,000个区块,大约需要4年时间,货币发行率降低50%。

在 2016 年的某个时候,在第 420,000 个区块被“开采”之后,它被降低到 12.5 BTC/区块。 新币发行率在区块13,230,000(2137年大致开采)前将按指数方式“减半”64次。 届时,每个区块发行的比特币数量将成为比特币的最小货币单位——1聪。 最终,经过1344万个区块,20999999976.9亿聪全部发行完毕。 也就是说,到2140年左右,比特币的数量将接近2100万枚。 之后,新区块不再包含比特币奖励,矿工的收入来自交易手续费。

每个节点在收到交易后,会在向全网广播之前验证这些交易,并在收到时按照相应的顺序为有效的新交易建立池(交易池)。

每个节点在验证每笔交易时,需要比对一长串标准:

交易的语法和数据结构必须正确。

输入和输出列表都不能为空。

事务的字节大小小于 MAX_BLOCK_SIZE。

每个输出值,以及总量,必须在指定的值范围内(小于 2100 万个硬币,大于 0)。

没有哈希等于 0 且 N 等于 -1 的输入(不应中继 coinbase 交易)。

nLockTime 小于或等于 INT_MAX。

事务的字节大小大于或等于 100。

一笔交易的签名数应小于最大签名操作数。

解锁脚本(Sig)只能将数字压栈,而锁定脚本(Pubkey)必须符合isStandard格式(这种格式会拒绝非标准交易)。

池中或主分叉块中必须存在匹配的交易。

对于每个输入,如果引用的输出存在于池中的任何交易中,则该交易将被拒绝。

对于每个输入,在主分支和交易池中查找引用的输出交易。 如果输出交易缺少任何一个输入,则该交易将成为孤立交易。 如果匹配交易不在池中,则将其添加到孤儿交易池中。

比特币挖矿机配置_比特币 怎么挖矿_比特币莱特币挖矿教程

比特币的挖矿原理_挖矿莱特币好还是比特币好_比特币莱特币挖矿教程

对于每个输入,如果引用的输出交易是 coinbase 输出,则输入必须至少有 COINBASE_MATURITY (100) 个确认。

对于每个输入,引用的输出必须存在且未被花费。

使用引用的输出交易获取输入值,检查每个输入值和总值是否在指定值范围内(小于2100万币,大于0)。

如果输入值的总和小于输出值的总和,交易将中止。

如果交易费用太低而无法进入空区块,交易将被拒绝。

每个传入的解锁脚本都必须针对相应的传出锁定脚本进行验证。

以下挖矿节点命名为A挖矿节点

挖矿节点不断监听要传播到比特币网络的新区块。 而这些新增的区块对于挖矿节点来说有着特殊的意义。 矿工之间的竞争以新区块的传播而告终,仿佛宣告谁是最终的赢家。 对于矿工来说,获得一个新区块意味着一些参与者赢了,而他们输掉了比赛。 然而,一轮的结束也标志着下一轮的开始。

验证交易后,比特币节点将这些交易添加到它们的内存池中。 内存池又称交易池,用于暂存尚未加入区块的交易记录。

节点 A 需要为内存池中的每笔交易分配一个优先级,并选择更高优先级的交易记录来构建候选区块。

如果一笔交易要成为“高优先级”,需要满足的条件是:优先级值大于5760万。 块),交易大小为 250 字节:

高优先级 > 100,000,000 聪 * 144 个区块 / 250 字节 = 57,600,000

用于存储交易的块的前 50K 字节保留给更高优先级的交易。 当一个节点填满 50K 字节时,它会优先处理这些优先级最高的交易,而不管它们是否包含 gas 费用。 这种机制允许优先处理高优先级的交易,即使是零汽油费。

然后,一个挖矿节点会选择那些gas费最小的交易,按照“每千字节矿工费”排序,优先填充gas费高的交易来填充剩余的区块。

如果区块中还有剩余空间,则挖矿节点可以选择那些不包含 gas 费用的交易。 一些矿工会竭尽全力将不包含 gas 费用的交易包含在区块中,而其他矿工可能会选择忽略这些交易。

在一个区块被填满后,内存池中剩余的交易成为下一个区块的候选者。 因为这些交易保存在内存池中,随着新区块被添加到链中,进入这些交易时引用的 UTXO 的深度(即交易“区块时代”)增加。 由于交易的优先级值取决于其交易输入的“区块年龄”,因此交易的优先级值会相应增加。 最后,具有优先级值的零费用交易可以满足高优先级阈值并免费包含在区块中。

UTXO(Unspent Transaction Output):每笔交易都有若干交易输入,即资金来源,以及若干交易输出,即资金去向。 一般来说,每笔交易都需要花费(spend)一个输入并产生一个输出,而产生的输出就是“未花费的交易输出”,即UTXO。

区块年龄:UTXO的“区块年龄”是自UTXO被记录到区块链以来所经历的区块数,即UTXO在区块链中的深度。

区块中的第一笔交易是一种特殊类型的交易,称为创建交易或 coinbase 交易。 该交易由挖矿节点构建,以奖励矿工的贡献。 假设此时一个区块的奖励是25个比特币,A的挖矿节点会创建一个“支付25.1个比特币到A的地址(包括0.1个比特币作为矿工费)”这样的交易,并发送交易产生这个区块奖励。 交易到您的钱包。 A挖出区块获得的奖励金额为coinbase奖励(25个新比特币)和区块内所有交易矿工手续费的总和。

节点A构建了一个候选区块,接下来轮到A的矿机“挖”这个新区块,并求解工作量证明算法,使这个区块生效。 比特币挖矿过程使用 SHA256 哈希函数。

用最简单的术语来说,一个挖矿节点不断重试,直到它找到一个随机调整,使哈希率低于某个目标。 哈希函数的结果无法预先知道,并且没有获取特定哈希值的模式。 比如你一个人在房间里打台球,白球从A点跑到B点,但是一个人推门进去,看到B点的白球,但是不知道怎么从无论如何A到B。 哈希函数的这一特性意味着获得哈希的唯一方法是不断尝试,每次随机修改输入,直到出现合适的哈希。

比特币 怎么挖矿_比特币挖矿机配置_比特币莱特币挖矿教程

比特币的挖矿原理_挖矿莱特币好还是比特币好_比特币莱特币挖矿教程

需要以下参数

• 块的版本

• 上一个区块的哈希值:prev_hash

• 写入交易记录的哈希树值:merkle_root

• 更新时间:ntime

• 当前难度:nbits

挖矿的过程是找到 x 使得

SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET

上式中x的取值范围为0~2^32,TARGET可以根据当前难度计算。

作为一个简单的类比,想象一个游戏,人们不断掷一对骰子以获得少于一定数量的点数。 第一局,目标是12,只要不输两个6就赢了。 那么下一场比赛的目标是 11。玩家只有掷出 10 点或更少的点数才能获胜,尽管这很容易。 假设目标在几轮后下降到 5。 现在掷出的骰子有一半以上的几率加起来超过5点,所以无效。 随着目标变小,为了获胜,掷骰子的次数呈指数增加。 最终当目标为 2(可能的最小分数)时,平均只有 36 或 2% 的时间获胜。

如前所述,目标决定难度,进而影响解决工作量证明算法所需的时间。 那么问题来了:为什么这个难度值是可调的? 谁来调整? 如何调整?

比特币区块平均每 10 分钟生成一次。 这是比特币的心跳,是货币发行速度和交易完成速度的基础。 它必须保持不变,不仅在短期内,而且在几十年内。 这段时间,电脑的性能会飙升。 此外,参与挖矿的人员和计算机也在不断变化。 为了以每 10 分钟一个的速度生成新区块,必须根据这些变化调整挖矿难度。 实际上,难度是一个动态参数,它会定期调整以达到每 10 分钟产生一个新区块的目标。 简而言之,设置难度使得新区块以 10 分钟的速度产生,而不管采矿能力如何。

那么这种调整如何在完全去中心化的网络中发挥作用呢? 难度调整在每个完整节点内独立且自动发生。 所有节点每 2,016 个区块(2 周内产生的区块)调整一次难度。 难度调整公式是通过将最后 2,016 个区块花费的时间与 20,160 分钟(两周,或以这些区块估计花费的时间 10 分钟的速率)进行比较来计算的。 根据实际时间与预期时间的比率调整难度(更难或更容易)。 简单来说,如果网络发现区块的生成速度超过 10 分钟,就会增加难度。 如果发现慢于10分钟,则降低难度。

为防止难度变化过快,每个周期的调整必须小于一个因子(值 4)。 如果要调整的范围大于4次比特币的挖矿原理,则调整4次。 由于2016个区块的下一个周期会继续不平衡,所以下一个周期会做进一步的难度调整。 因此,平衡算力和难度的巨大差异可能需要几个 2,016 个区块周期才能完成。

例如,节点 A 目前正在挖掘 277,316 个区块。 一旦挖矿节点 A 完成计算,它立即将区块发送给它的所有邻居。 这些节点收到并验证这个新区块后,也会继续传播这个区块。 当这个新块通过网络传播时,每个节点将其作为第 277,316 个块(父块 277,315)添加到其区块链副本中。 当挖矿节点收到并验证这个新区块时,他们会丢弃之前的计算来构建这个相同高度的区块,并立即开始计算区块链中的下一个区块。

比特币共识机制的第三步是让网络中的每个节点独立验证每个新区块。 当一个新块通过网络传播时,每个节点都会执行一系列测试来验证它,然后再将其转发给其对等方。 这确保只有有效的块在网络中传播。

每个节点对每个新区块进行独立验证,确保矿工无法作弊。 在前面的章节中,我们看到了矿工如何记录新比特币的交易和在该区块中创建的交易费用。 为什么矿工不为自己记录一笔交易以获得数千个比特币? 这是因为每个节点都根据相同的规则验证块。 无效的 coinbase 交易将使整个区块无效,这将导致区块被拒绝,因此交易不会成为分类账的一部分。

比特币去中心化共识机制的最后一步是将区块聚合到具有最大工作量证明的链中。 一旦一个节点验证了一个新块,它将尝试将新块连接到现有区块链,组装它们。

节点维护三种类型的块:

· 第一个连接到主链,

第二个是从主链(备用链)分支出来的,

比特币挖矿机配置_比特币 怎么挖矿_比特币莱特币挖矿教程

比特币的挖矿原理_比特币莱特币挖矿教程_挖矿莱特币好还是比特币好

· 三是在已知链中没有找到已知的父块。

有时,新区块延伸出的区块链不是主链,我们将在下面的“区块链分叉”中看到。

如果一个节点收到一个有效的块比特币的挖矿原理,但在现有区块链中找不到它的父块,那么该块被认为是“孤立的”。 孤立块保存在孤立池中,直到节点收到它们的父块。 一旦接收到父块并将其连接到现有区块链,节点就会从孤立池中取出孤立块并将其连接到其父块,使其成为区块链的一部分。 当两个块在很短的时间间隔内被开采并且节点可能以相反的顺序接收它们时,就会出现孤立块。

在选择难度最大的区块链后,全网所有节点最终达成共识。 随着更多的工作证明被添加到链中,链中的暂时差异最终得到解决。 挖矿节点通过“投票”的方式选择自己想要扩容的区块链。 当他们挖掘一个新区块并扩展一条链时,新区块本身就代表了他们的投票。

因为区块链是一种去中心化的数据结构,不可能保持不同副本之间的一致性。 块可能在不同的时间到达不同的节点,导致节点对区块链有不同的看法。 解决方案是每个节点总是选择并尝试扩展代表最大累积工作量证明的区块链,即具有最长或最大累积难度的链。

当两个候选块同时想要扩展最长的区块链时,就会发生分叉事件。 通常,当两个矿工在短时间内各自拥有一个工作量证明解决方案时,就会出现分叉。 一旦两个矿工在各自的候选区块中找到解决方案,他们就会立即将他们的“获胜”区块传播到网络,首先传播到相邻节点,然后传播到整个网络。 每个接收到有效块的节点都将合并它并扩展区块链。 如果该节点随后收到另一个具有相同父块的候选块,该节点将把这个块连接到候选链。 结果,一些节点收到一个候选块,一些节点收到另一个候选块,并且出现了两个不同版本的区块链。

在叉子之前

叉开始

我们看到两个矿工几乎同时开采两个不同的区块。 为了便于追踪本次分叉事件,我们假设有一个来自加拿大的区块被标记为红色,一个来自澳大利亚的区块被标记为绿色。

假设加拿大的一名矿工发现了“红色”区块的工作量证明解决方案,从而在“蓝色”父区块上扩展了区块链。 大约在同一时间,一位澳大利亚矿工找到了“绿色”区块的解决方案,它也扩展了“蓝色”区块。 所以现在我们有两个区块:一个来自加拿大的“红色”区块; 和来自澳大利亚的“绿色”街区。 这两个块都是有效的,包含有效的工作证明解决方案,并且扩展了相同的父块。 这两个区块可能包含几乎相同的交易,但顺序略有不同。

比特币网络中与加拿大相邻(网络拓扑相邻,而非地理相邻)的节点将首先收到“红色”区块,并创建一个累积难度最高的区块。 “红色”块是链中的最后一个块(蓝-红色),而稍后到达的“绿色”块将被忽略。 相反,靠近澳大利亚的节点将决定“绿色”块获胜,并将区块链扩展到最后一个块(蓝绿色),忽略几秒钟后到达的“红色”块。 那些最先收到“红色”区块的节点将立即以该区块为父区块生成一个新的候选区块,并尝试为该候选区块寻找工作量证明解决方案。 同样,接受“绿色”块的节点开始生成新块并将该块作为链的顶点,从而扩展链。

分叉几乎总是在一个区块内解决。 网络中的部分计算能力专用于作为父块的“红色”块,新块构建在它们之上; 另一部分计算能力集中在“绿色”块上。 即使计算能力在两个阵营之间平分,总会有一个阵营发现工作量证明解决方案并在另一个阵营之前传播它。 在这个例子中我们可以打个比方,如果在“绿色”区块上工作的矿工发现了一个扩展区块链的“粉红色”区块(蓝-绿-粉),他们会立即传播这个新区块,整个网络都会考虑这个block valid,如上图所示。

所有在上一轮中选择“绿色”区块作为获胜者的节点将直接将链延长一个区块。 然而,那些选择“红色”块作为赢家的节点现在将看到两条链:“蓝-绿-粉”和“蓝-红”。 如上图所示,这些节点会根据结果将“蓝-绿-粉”链设置为主链,将“蓝-红”链设置为备链。 这些节点接受了新的和更长的链,并被迫改变了他们对区块链的原始看法。 这称为链的重新共识。 因为“红色”区块不再作为父母在最长链上,它们的候选区块变成了“孤儿区块”,所以任何原本想在“蓝-红”链上扩展区块的矿工都会停止我们的区块链。 全网以“蓝-绿-粉”链为主链,“粉”区块是这条链的最后一个区块。 所有矿工立即将其候选块的父块切换为“粉红色”以扩展“蓝-绿-粉”链。

两个区块的分叉在理论上是可能的,并且当由于先前的分叉而相互对抗的矿工几乎同时找到两个不同区块的解决方案时就会发生。 但是,发生这种情况的可能性非常低。 单块分叉每周都会发生,而双块分叉非常罕见。

比特币将区块间隔设计为 10 分钟,这是更快的交易确认和更低的分叉概率之间的折衷。 较短的块间隔允许更快地清除交易并导致更频繁的区块链分叉。 相反,较长的间隔会减少分叉的数量,但会导致较长的清算时间。

J. 天天说挖矿,比特币挖矿流程概览。

通俗易懂的大体流程

如果你之前对挖矿一无所知,这篇介绍适合你阅读,进入状态后可以深入学习。

其实通俗的说原理很简单。 作为一种点对点的电子货币系统,挖矿过程就是一个记录数据的过程。 因为整个系统是开放的,人人都可以参与,可以挖矿。 挖矿,虽然理论上人人都可以参与,但没有人会无缘无故参与网络建设。 中本聪设计了一种使用哈希函数的激励和竞争方法。

每个人都在处理数据,谁处理得又快又准,谁就可以获得记账权,同时获得区块奖励。 奖励和竞争都使比特币网络发挥作用。

要成功竞争,您必须经历几个基本过程。

比特币挖矿机配置_比特币 怎么挖矿_比特币莱特币挖矿教程

比特币莱特币挖矿教程_挖矿莱特币好还是比特币好_比特币的挖矿原理

1、首先需要查询并收集数据块中没有记录的交易信息。

2、数据块打包后,进行哈希运算,计算哈希值。 hash值的概念在昨天的文章中已经详细介绍过了。

3. hash值计算出来后会在全网广播,其他矿工收到后进行验证。 如果验证没有问题,这个数据块将连接到整个区块链,可以获得这个块的奖励。

了解了大概的流程之后,就可以开始详细了解整个流程了。

开始挖矿前的准备工作

这里说的准备不是说你要买矿机或者给矿机上电,而是记账节点在POW工作量证明之前所做的准备工作。 即前面流程第一步的具体解释。

要收集完整的交易信息,第一步是收集广播中尚未记录在账本中的原始交易信息。 支付完成后,您首先要验证自己,主要是两个方面, 1.每笔交易信息中的收款地址是否有足够的余额支付。 2. 验证交易是否有正确的签名。 这两项必不可少。 通俗地说,银行给别人汇款需要确认两件事,你的账户里有没有这么多钱,是不是你自己的行为,是不是你自己的同意。

完成这两个校验后,就可以对校验后的数据进行打包了。 当然,打包完成后还不算完,因为还有矿工最重要的一步,添加奖励交易,写一个交易给自己的地址币增加6.25比特。

如果你赢了比赛,你的账户地址会增加6.25个比特币,顺便减半。 第一个区块的会计奖励为 50 个比特币,大约每 4 年奖励一次比特币。 减半后,一个区块的比特币奖励变为上一次减半后的 6.25。

值得一提的是,前两次减半都伴随着牛市。 现在第三次减半已经过去了,未来会发生什么?

准备工作完成后,就到了正式比赛的时候了。

因为只有一个10分钟左右的计费额度,所以目前全世界的矿工都在进行一场没有硝烟的战争。

如何打好这场仗? 其实就是Hash函数的计算和矿工算力的竞争,所以Hash函数离不开比特币网络。 为了保证10分钟内只有一个人能成功,这个哈希函数的难度一定要合适。 直接hash的难度太低,所以规定Hash的结果必须由几个0组成。

刚开始可能直白的说0的个数没有难度。 下面简单分析一下这个计算的难度。 顺便说一句,这也可以解释为什么独立矿工不再受欢迎。

Hash值类似于我们平时设置的密码要求。 由数字和字母组成,字母区分大小写。 也就是说,每一位都有62种可能。 哈希的本质就是试错,相当于给了你一部可以无限错解锁的手机。 比特币哈希值以 18 个零开头。 理论上需要62的18次方。 这个数在普通计算器上用科学计数法显示,结果是1.832527122*10的32次方。 .

计算量的指数级增长保证了挖矿的难度。 同时,因为难度高,也带来了一些争议。 有人会说,成本那么高,却没有产生价值。 此前,矿业已将落后产能列入征求意见稿。 可以说,关于矿业的争议一直存在。

最终验证

找到哈希值后,区块广播由网络节点打包和验证。

有两种情况。 一种是验证通过,即区块挖出成功,其他矿工不再竞争。 他们选择接受这个区块,记录这个区块,挖出这个区块的矿工将获得这个区块的奖励,进入下一个区块的竞争。

另一种是失败,那么之前的工作就白费了,投入的成本无法收回,所以矿工自觉遵守打包验证规则,因为作恶成本比较高,维护安全比特币网络。

相信大家看完文章后对比特币挖矿的整个过程有了一个大概的了解,但是挖矿的实际操作又是另外一个概念了。 以什么样的方式参与挖矿是有一定知识的。

挖矿有风险投资,需谨慎,了解后再行动,多了解再了解。

币圈新闻,版权所有丨如未注明,均为原创丨本站受BY-NC-SA协议授权

转载请注明原文链接:G.比特币矿机原理介绍