为什么比特币需要工作证明

2008年10月31日中本聪发表了白皮书“比特币 – 点对点电子现金系统”,这是革命性货币体系的构成,是比特币的规范协议。

2009年1月3日,这个宪法变得活跃起来,Satoshi通过发布Block#0 Genesis Block发布了该论文的第一个实现。大部分代码是用c ++编写的,并且是开源的,可以在github上找到。

什么是比特币?

比特币建立在区块链系统上,纯粹的点对点版电子现金将允许在线支付从一方直接发送到另一方而无需通过金融机构。

为什么点对点?

节点是运行比特币软件(比特币客户端)的计算机。节点连接到其他计算机以创建网络。每个节点都相互连接,因此它的网络和每个节点都是相同的。节点相互通信传递有关在n / w的其他部分中进行什么操作的信息。

所以现在我们有一组运行比特币软件的节点连接起来形成比特币n / w。让我们举个例子。Alice希望通过他的比特币钱包发送Bob 5比特币,钱包创建一个交易并将其插入比特币n / w中的任何节点。网络上的每个节点执行3个功能 –

  1. 遵循比特币客户端软件中编写的一组规则。例如。检查该人是否有足够的余额,如果是,则接受并将该交易传递给其他节点,如果没有拒绝它。因此,只传播有效的交易。
  2. 宣传交易。传播了两种类型的交易 – 最近进入网络的新交易。确认的交易,这些交易是在块中共享的,而不是单独的(由矿工我们会很快看到它)
  3. 将已确认的交易附加到其区块链。

什么是区块链?

您可以将区块链视为可以存储为平面文件或简单数据库的块链。例如,比特币核心客户端将区块链存储在Google的LevelDb上。区块链的特征 –

  1. 区块链是一种链表数据结构。每个节点都有数据(块,我们将看到每个块的内容)以及前一个块的哈希链接。因此,每个节点以密码方式链接到前一个节点,使每个节点不可变,篡改打破链。
  2. 去中心化。区块链的副本存在于网络中的所有节点上,就像公共分类帐一样。区块链像比特币点对点网络中的BitTorrent文件一样被共享。

挖矿目的

n / w上的每个节点都有一个内存矿池,一个临时存储缓冲区。每个节点还具有存储在节点本地的区块链。当节点从某个其他节点接收到事务时,它会对其进行验证并将其添加到内存矿池中。最终目标是创建一个包含这些事务的块,验证它们并将其添加到区块链中。一旦交易被添加到区块链,它们就会被“确认”,这允许比特币的新所有者使用他们在这些交易中收到的比特币。

谁创建了块,谁将事务添加到块 – “矿工”。比特币n / w中的任何节点都可以成为Miner。挖矿服务器2的目的。

  1. 挖矿用于确保不使用欺诈性交易。例如双重支出问题。
  2. 如果新的区块像中央银行一样印刷新的资金,挖矿业就会创造新的比特币。创建的比特币数量是固定的,并且随着时间的推移而逐渐减少。(这是用比特币协议写的)。矿工为比特币提供处理能力,以换取奖励。

添加到内存矿池的事务等待,直到被矿工接收。Miner创建一个新块,将部分或全部事务(基于优先级)从内存矿池添加到此新候选块,并与其他矿工竞争,以解决基于加密货币哈希算法的困难数学问题。该块中包含的“工作证明”问题的解决方案充当了矿工消耗大量计算工作的证据。首先解决问题的矿工获得奖励,并将经过验证的区块添加到区块链中。矿工获得两种类型的挖矿奖励 – 创建新的硬币并给予矿工和交易费用(保持变化)。

新的硬币生成是固定的并且正在减少,从2009年的50 BTC开始,2012年减半到25 BTC,2016年减半到12.5,大约每4年减少一次。预计新的区块每10分钟开采一次。比特币软件中写入了可用比特币的最大限制,即2100万。因此,到2140年左右,所有比特币都将被发行,之后不会发行新的比特币。矿工只能获得交易费用。

比特币区块链中的块是什么?

矿工创建的每个新块都有一个标题和一个正文。所有选定的交易都将添加到正文中。标题包含以下字段 –

  1. 上一个块哈希。
  2. 时间戳,创建此块的日期/时间。
  3. 难度目标,为了将块生成时间保持在10分钟,难度目标是一个自我调整的动态值。
  4. Nonce,一个初始化为0的计数器(我们很快就会看到它)
  5. Merkle root hash,Merkle tree是一个数据结构,用于有效地汇总块中的所有事务。(我们将看看merkle树是什么以及它是如何在即将到来的博客中构建的)。

挖矿过程

它使用SHA-256哈希函数。

挖矿是对块头进行散列的过程,重复更改一个参数(nonce),直到生成的散列小于或等于特定目标。

什么是难度目标?

为了将块生成时间保持在10分钟,难度相应地调整自身。在每个2016年的区块之后,难度会自行调整。如果n / w发现块超过10分钟,则难度增加,如果块发现较慢,则难度降低。您可以在pow.cpp中的github上找到用于设置参考实现中的当前难度的代码。

工作证明算法如何工作?

miner构造一个填充事务的候选块,散列块头以查看它是否小于或等于当前目标,如果不是矿工修改nonce(通常递增1),并再次尝试,直到找到解决方案。挖矿需要大量的计算能力,因此节点现在使用ASIC硬件,其中100s-1000s的集成电路并行运行SHA-256算法。一旦找到解决方案,用于解决该问题的随机数被插入块中的nonce字段,并且该节点立即将该块发送到其所有对等体。他们接收,验证(验证规则可以在CheckBlockCheckBlockHeader中找到文件)并传播新块。当节点在网络周围瑞波币时,每个节点将其添加到其自己的区块链中,将其扩展到新的高度。

因此,挖矿是创建新块,聚合和添加事务到此块的过程,在此块的顶部运行算法证明,通过投资计算能力和期望奖励(新比特币生成和交易费用)找到问题的答案,传播此块,由所有对等体验证块,并仅将经过验证和确认的块添加到生成信任的区块链中。

为什么要使用工作证明算法?

工作证明基本上确保矿工不会作弊,谁负责比特币生成并创建新块以添加到区块链中。

没有办法相信网络中的每个人都是诚实的,那么我们如何确保矿工不会创建通过向块提供比特币的交易来增加自身利益的块。它的工作方式是你有很多人试图猜测数学问题的答案,没有人知道谁将首先得到正确的答案。无论谁得到正确的答案都会得到奖励,但只有当所有其他矿工同意接受该交易记录时(如果显然某个矿工正在创建欺诈交易,那么其他矿工可以集体拒绝接受他们的贡献)。这就是为什么创建新块的过程被设计为能量密集的原因,因此创建每个新块有相关的成本。这可以防止矿工简单地创建一大堆新的欺诈性块,希望他们可能会被接受,因为这样做会抵消潜在的回报。它有助于将工作证明视为电子邮件垃圾邮件的可能解决方案。如果要求每台计算机在发送每封邮件之前花费一分钟来处理PoW问题,那么只有拥有真实邮件的人才会同意花费精力。一分钟的计算机时间对于个人而言是非常低的成本,但是爆炸1000万垃圾邮件的人无法等待1000万分钟。因此,回到比特币,每个单独的矿工成为解决每个区块的人的机会非常小,而且由于需要花费大量精力来解决这些区块,因此他们不能仅通过解决方案向网络发送垃圾邮件。

提示:投资有风险,入市需谨慎,本资讯不作为投资理财建议。请理性投资,切实提高风险防范意识;如有发现的违法犯罪线索,可积极向有关部门举报反映。
你可能还喜欢