矿业

视频 - 比特币 - 工作证明

解密工作证明协议,用于各种密码应用和比特币挖掘。传统的数字现金计划通过拥有一个可以检查硬币重复使用的中央(在线)实体来解决双重支出问题。比特币提供了一个漂亮的解决方案,通过利用工作证明,无需集中式实体。只要诚实的节点控制着大多数集体计算能力,对于不诚实的节点来说,成功地加倍支出是一场艰苦的战斗。相反,他们更擅长挖掘自己。

<! --1 - >

TRANSCRIPT

工作协议证明是真正有人能够向您证明的一种工具。他们参与了大量的计算工作。而且工作协议的证明通常会成为难题。而这些难题一方面可以自我挑战,另一方面,我的意思是它们需要一些严肃的计算工作,并且不能被短路。但另一方面,这一努力实际上可以轻松验证。而且可以验证的时间远远少于首先进行努力的时间。好的。

这样的协议有很多应用。举例来说,如果您听说过比特币,比特币电子支付系统。该系统实际上在创建所谓的交易区块链的上下文中利用工作证明方案。好的。现在,除了比特币之外,这是近期这类工作证明方案的用户。过去为其他应用提出了这些方案。例如,工作计划证明已经被提出用于阻止拒绝服务攻击或DoS攻击。这里的想法是,请求者看到其他特定服务在被允许使用该服务之前必须解决非常具体的工作难题证明计算问题。这里的想法是,计算所付出的努力实际上是一种遏制请求者的方式,好吧。响应可以轻松地检查请求者是否执行了必要的工作,并且只有在响应者响应该服务请求时才执行该工作,好的。

现在,这些类型的工作证明协议的原始应用程序是我所看到的第一个建议是能够阻止垃圾邮件。显然,我们都知道垃圾邮件是有希望的。这些是您不希望收到的邮件中可能以不请自来的方式向您发送的邮件。这里的想法是工作协议证明可以,事实证明它可以绑定到特定的电子邮件消息。这在概念上就像在贴上邮票的邮件一样。但不是付钱或用钱支付邮票。您基本上是通过CPU周期支付该邮票的。

因此,对于仅发送少量消息的合法发件人而言,这种类型的工作协议证明不会太多。这只是一个小的威慑,因为它只执行了很少的几次。这是一种障碍,但它不是那么无理,好吧。现在,对于可能发送大量消息的垃圾邮件发送者。也许成千上万或数百万条消息,对于每条消息以及发送该消息的每个发送者重复花费太多CPU周期可能会非常昂贵,好吧。到目前为止,这给你一些这些工作协议证明的应用的风味。让我真的深入了解他们在实践中的工作方式,好吧。所以,我首先想到的就是这些协议的典型方式是它们相对于给定的挑战字符串工作。我打算称这个挑战字符串,然后用字母'C'来标记它。所以,'C'将会是一种挑战串。而试图参与协议的人会做这项工作的证明者将基本上试图提出一个与这个挑战串相关的相应证明,这将是与这个挑战相关的一种反应,关于这个挑战的具体数学性质,好吗?

正如你指出的那样,当我想在这里谈论一个挑战字符串时。例如,在垃圾邮件的情况下。这个挑战字符串可能实际上代表了一封电子邮件,好吧。所以,这将是非常具体的任务,好吗?现在,证明者要做的是提出一个响应字符串,我们调用响应字符串,我们将调用响应字符串R.实际上,让我们使用P来表示它,因为也许我们可以认为它是一个证明,好吧,证明者的回应。好吧,我们的想法是证明者会拿出这个证明或响应字符串,并且他必须提供一个字符串,以便当您可以连接挑战和响应并将两者结合在一起并且应用加密哈希功能。所以,假设想出一个像SHA256这样的加密散列函数或任何这种性质的函数。如果我将挑战字符串和校验字符串连接在一起并应用加密哈希函数,则应用这些代表加密哈希函数的数学转换。我想提出一个证明字符串,使得这个散列函数下的输出将具有非常特定的属性。输出前缀中的那个属性。第一大比特数将全部为0.因此,假设前40个比特是前30个比特或者一些比特数将是0,好的。然后其他位可以是他们通常会做的,好吧。

因此,显然你在这里想要做的是提供一个与挑战字符串有关系的证明字符串,并且该关系恰好是发生的或者是针对特定的散列函数采取的并且如果证明字符串与挑战字符串连接在一起,那么确实会合并或考虑散列函数的输出是什么,好吧。

现在,假设你有一个很好的加密散列函数,那么找到这种类型的证明字符串的唯一已知方法就是通过尝试大量不同的证明字符串来有效地尝试大量的可能性,从而有效地进行蛮力操作,直到你找到一个有效的。现在,如果你说让你需要找到一个包含大约40个连续零的输出,那么你需要执行大约两次到四十步的输出。两个强大的四十个不同的哈希函数调用。你必须尝试两到四十个不同的字符串,如果你对四十个这样的字符串尝试了两个字符串,其中一个可能会奏效。它实际上要求你在两到四十的时间内尝试一下,以获得一个感觉约为一万亿。

因此,如果您尝试使用一万亿个不同的字符串,并且您将每个字符串散列出来,那么您可能会想出一个字符串,其中前40位为0.现在,有时可能会花费您少一万亿步。有时它可能会让你多一点,好吧,或者你可能会很幸运。你可能会感到非常不走运,但平均而言,它会花费大约一万亿步骤来找到一个字符串,其中前40位等于0,好吧。所以,这是不容易的,但它也不在可能性范围之外。

现在,要理解为什么要解决这些类型的工作证明方案真的很困难,而且可能比简单地使用暴力更有效。我认为回忆一下,加密哈希函数的输出看起来或多或少是随机的是有帮助的。实际上,每个输出位看起来像是一系列硬币翻转,没关系。所以,它有点像硬币,如果它出现,你会有一个0,如果它出现尾巴,你可以把它想成1。所以,你真正在做的是说如果我翻转40硬币你有40个连续40个硬币翻转头的几率是多少?现在,显然这种可能性非常小。但它不在可能性范围之外。如果你拿了40个硬币,并且你将这40个硬币翻转了大约1万亿次,那么你实际上会看到一个例子,其中所有40个硬币都出现在头上,好吧,在万亿次尝试中。好的。

现在,这些工作计划证明有一件有趣的事情是,他们可能会加紧或缩减。所以,举个例子,假设你想要更多的计算重量来提供一个正确的校验字符串,好的。假设你想增加这里将要证明的工作。在这种情况下你可以有效地做的是你可以增加对前导零的数量的要求。所以,每当你增加一个零点时,你平均需要的计算能力就会翻倍。那是因为你实际上需要一枚硬币才能出现头顶,这意味着硬币翻转次数翻倍。

因此,如果我有41枚硬币翻转,并且我需要41个直头,这需要大约两倍的努力,这需要40个直头,好的。同样,每次你从考虑中或从要求降低所需竞争马力的零点上去掉零点时,它们大约是以前的一半。因此,例如,如果我只要求前39位为0,那么需要在前40位中需要大约一半的硬币翻转为0即可。现在,整洁的事情是,一旦你想出解决方案。假设有人尝试了万亿次,他们终于拿出了一个证明字符串,这很容易验证这个证明字符串实际上是一个正确的工作证明。你所要做的就是接受挑战,然后你拿起证明字符串,然后把它们混合在一起。因此,例如,如果有人提出这一个字符串,我们称之为P-prime,你所做的就是接受挑战,然后将P-prime转换为散列函数。而且你会发现前40位是否全为0.所以它要求你做的只是将一个散列函数应用于C&P素数的连接,并且你可以验证输出结果确实在它前面有一个必要数量的零。如果你看到输出具有必要数量的零,那么你可以认为工作证明是有效的,因为你知道它一定是很多次接受了某人,很多尝试真的提供或想出字符串P-以便在应用此加密散列函数时,C&P素数级联给予您许多零。因此,正如你所看到的,这些方案非常简单,但同时也很聪明。他们真的相当于提出一个与原始挑战字符串具有非常具体数学关系的证明字符串。希望这个视频能够为你提供这些工作证明协议工作原理的机制。

<! --2 - >