1. 链一财经首页
  2. 资讯

《The Book of Satoshi》中本聪之书中文版连载(六)

《The Book of Satoshi》

原作者:PHIL CHAMPAGNE

中文翻译:陈雪刚

《The Book of Satoshi》中本聪之书中文版连载(三)

十四、关于区块时间,自动化测试以及自由主义观点

在这篇文章中,中本聪解释了为什么需要单个挂起的交易池以及如果存在区块的并行分支,如何保留这些交易。他引用了代码中的一些函数。回想一下第2章中关于工作量证明的讨论。并非所有矿工都可能汇集了相同的交易,其中一些可能来得太晚,无法包含在他们工作的区块中。当新交易在处理其现有区块的哈希时到达,它们将这些交易存储在交易池中。

然后,他再次触及交易传播和每个区块创建分配的10分钟,讨论一段时间内是否可能太短的问题。

最后,他提到比特币如何吸引自由主义者,即倡导个人自由的人。

回复:比特币一种点对点的电子现金系统

中本聪:Fri, 14 Nov 2008 14:29:22 -0800

我认为节点必须保留与每个候选链相关联的单独的待处理交易列表。有人可能还会问,给定节点一次必须跟踪多少个候选链?——哈尔芬尼

幸运的是,只需要为当前最佳分支保留挂起交易池。当新块到达最佳分支时,连接区块将从挂起交易池中删除区块的交易。如果另一个分支变得更长,它会将主分支上的未连接区块调用到分支上,将区块交易返回到挂起交易池,并在新分支上调用连接区块,并备份两个分支中的所有交易。预计像这样的重组将是罕见的。通过这种优化,候选分支实际上并没有任何负担。他们只是坐在磁盘上,除非他们成为主链,否则不需要注意。——中本聪

或者正如詹姆斯早些时候提出的那样,如果网络广播是可靠的,但依赖于潜在的慢速泛洪算法,那么这对性能有何影响?——哈尔芬尼

广播可能几乎完全可靠。这些天几乎很少丢弃TCP传输,并且广播协议具有重试机制以在一段时间之后从其他节点获取数据。如果广播在实践中比预期慢,则可能必须增加区块之间的目标时间以避免浪费资源。我们希望区块通常在比生成它们所花费的时间少得多的时间内传播,否则节点会花费太多时间处理过时的区块。我打算用计算机随机发送付款并随机丢弃数据包进行自动化测试。3.比特币系统结果具有社会实用性和价值,因此节点运营商认为他们通过他们的努力为世界做出了有益的贡献(类似于各种“@Home”计算项目,人们为了良好的原因而自愿提供计算资源)。在这种情况下,在我看来,简单的利他主义足以保持网络正常运行。如果我们能够恰当地解释它,它对自由主义观点非常有吸引力。我用代码比使用单词更好。——中本聪

十五、更多关于双重支出,工作量证明和交易费用

在这次交换中,中本聪提供了一些澄清,并且一旦创建了比特币的全部供应,就通过交易费来讨论矿工(即节点)的补偿。

回复:比特币一种点对点的电子现金系统

中本聪: Mon, 17 Nov 2008 09:04:47 -0800

我会尽快快速发布源代码,以作为参考,帮助清理所有这些实现问题。——中本聪

当比特币花费时,买方和卖方以数字方式签署(蒙蔽的)交易记录。——雷迪林格(熊)

只有买家签字,并没有致盲。——中本聪

如果有人双倍花费,那么交易记录可以是非盲的,露出骗子的身份。不使用身份,并且不依赖于追索权。这都是预防。这是通过一个相当标准的剪切和选择算法来完成的,其中买方用秘密共享来应对几个挑战。没有挑战或秘密分享。基本交易正如您在第2节中的图中所看到的那样。(买方的签名)满足前一交易的公钥,以及新的公共密钥(卖方)必须满足以便在下一个交易中使用时间。他们也可以在他们工作时尝试扩展链接,其中最后几个“链接”是与他们正在工作的链不相同的链接。这些他们忽略了。

是的,如果它的长度相等,那么通过保持最早收到的关系来打破关系。——中本聪

如果它包含双倍支出,那么他们会创建一个“交易”,这是双重支出的证明,将其添加到他们的池A,广播它,并继续工作。没有必要像这样报告“双重支出证明”。如果同一个链包含两个花费,则该区块无效并被拒绝。如果一个区块没有足够的工作量证明,则相同。该区块无效并被拒绝。没有必要传阅有关它的报告。每个节点都可以看到并在中继之前拒绝它。

如果有两个竞争链,每个链包含同一交易的不同版本,其中一个试图向一个人提供资金而另一个试图向其他人提供相同的资金,解决哪些支出是有效的是整体工作量证明链是关于什么的。

我们不是“关注”双重花费来发出警报并抓住作弊者。我们只是裁定哪一项支出是有效的。交易接收者必须等待几个区块才能确保解决方案有时间完成。欺骗者可以尝试并同时双倍花费所有他们想要的东西,而他们所完成的只是在几个区块内,其中一个花费变得有效而其他花费变得无效。一旦已经在主链中消费,任何后来的双倍花费都会被立即拒绝。

即使先前的支出还没有在链中,如果它已经存在于所有节点的池中,那么第二次支出将被已经拥有第一笔支出的所有节点拒之门外。

如果新链被接受,那么他们放弃添加他们当前的链接,将池L中的所有交易转储回池A(以及他们自开始工作后收到或创建的交易),从池A中消除这些交易记录这已经是新链中链接的一部分,并再次尝试扩展新链。

对。它们也会在新交易进入时刷新,因此L几乎包含A中的所有内容。CPU密集型数字签名算法对包括新块L在内的链进行签名。——中本聪

这是Hashcash风格的SHA-256工作量证明(零部分前映像),而不是签名。

是否有一种机制可以确保“链”不仅仅由3或4个最快节点添加的链接组成? ‘因为广播交易记录很容易错过那些3或4个节点,如果确实如此,并且这些节点继续支配链,那么交易可能永远不会被添加。——雷迪林格(熊)

如果你认为它是一个CPU密集型数字签名,那么你可能会想到一场比赛,首先完成一个长期的操作,最快的总是赢。——中本聪

工作量证明是Hashcash风格的SHA-256碰撞发现。这是一个无记忆的过程,你每秒可以进行数百万次哈希,每次都有很少的机会。3或4个最快节点的优势仅与它们在总CPU功率中的份额成比例。任何人在任何时候找到解决方案的机会都与他们的CPU能力成正比。将有交易费用,因此节点将有动力接收并包括他们可以进行的所有交易。当创建的总比特币达到预定上限时,节点最终将仅通过交易费来补偿。——中本聪

此外,向链中添加链接的工作要求应与前一周添加到该链的链接数量(再次呈指数级)变化,从而严格控制比特币生成率(以及通货膨胀率)。——雷迪林格(熊)

你需要比特币聚合才能扩展。需要进行“可证明”的交易,其中某人退休十个单一比特币并创建一个面额十的新比特币等。——中本聪

每笔交易都是其中之一。 第9节,结合和分裂价值。

十六、关于椭圆曲线密码,拒绝服务攻击和确认

中本聪覆盖交易签名,在拒绝服务攻击方面增加了更多,并最终重新审视了交易速度。在消费者用智能手机进行交易后,商家可以等待2分钟。然后,商家(或商家选择的比特币支付服务公司)将在比特币网络上观察双重支出交易。想象一下,消费者进行的交易我们称之为“X”,他或她从比特币地址ABC支付1.5 BTC,持有2 BTC。一旦付款完全确认,消费者的余额就会降至0.5 BTC。这里讨论的是商家为监控网络而必须执行的操作,以查看是否出现涉及比特币地址ABC的任何其他交易,如果是,则涉及的金额是否超过0.5 BTC。如果在2分钟内检测到符合此标准的交易,则认为付款无效。等待2分钟为交易“X”提供了足够的线索,以便在比特币地址ABC之后的任何竞争交易之前清算。这向商家表明,交易“X”很可能被包括在他们正在工作的大多数比特币矿工的当前区块中,因此确保其最终包含在区块链中。

回复:比特币一种点对点的电子现金系统

中本聪:Mon, 17 Nov 2008 09:06:02 -0800

雷迪林格写到:

实现此目的的一种方法是让接收比特币的人生成非对称密钥对,然后将其中一半与交易一起发布。为了以后花钱,他/她必须证明非对称密钥对的另一半的位置,可能是通过使用它来签署新卖家提供的密钥。

对,它是ECC数字签名。每个交易都使用一个新密钥对。在识别人的身份认证意义上它不是假名,但它至少有点假名,因为比特币上的下一个动作可以被识别为来自该比特币的所有者。——中本聪

嗯。 我不知道我是否对此感到满意。您是说没有努力识别和排除不合作的节点?我怀疑这会导致麻烦和可能的DOS攻击。不依赖于识别任何人。正如你所说的那样,它是徒劳的,并且可以用袜子木偶轻易击败。将某人建立为真实的凭证是提供CPU能力的能力。直到。。。 直到什么?有什么人知道交易何时变得不可撤销?是“几个”区块,三?三十?一百?它取决于节点数量吗?节点数是对数还是线性?——雷迪林格

第11节计算了受攻击的最坏情况。通常,5或10个区块就足够了。 如果你卖的东西不值得网络规模的攻击来偷它,实际上你可以把它切得更近。——中本聪

但是,如果他们已经收到了他们双重花费的商品(访问网站,下载,等等),那么如果没有身份,他们就没有任何不利因素。商人们拿着带有“无效”比特币的袋子,除非他们等待那些神奇的“几个区块”(以及他们怎么知道多少?)才能将消费者视为付款。——雷迪林格

如果他们花钱,消费者就不会这样做,他们需要花一个小时才能完成他们用比特币做的事情。如果客户发现他们的比特币无效,因为客户已经完成双花,那么商家就无法收取费用。

这是一个版本2问题,我相信对于大多数应用程序来说可以相当令人满意地解决。

竞争是首先在网络上传播您的交易。想想6个自由度 – 它以指数方式传播。交易的广泛传播只需2分钟,以至于竞争对手起步较晚,在第一个节点超越整个网络之前几乎没有机会抓取太多节点。

在这2分钟期间,商家的节点可以观察双重花费的交易。如果没有商人获得它,双重花费将无法将他的替代交易推向世界,所以他必须在开始之前等待。

如果真实交易达到90%并且双倍花费的交易达到10%,那么双重花费只有10%的机会不付钱,90%的机会花费他的钱。对于几乎任何类型的商品,这对骗子来说都不值得。

访问网站或下载等基于信息的商品是不可操作的。没有人能够通过窃取访问网站或下载来谋生。他们可以去文件共享网络窃取它。大多数即时访问产品都不会有大量的盗窃动机。

如果商家确实存在盗窃问题,他们可以让客户等待2分钟,或者等待电子邮件中的某些内容,许多人已经这样做了。如果他们真的想要进行优化,而且下载量很大,那么如果交易重新开始,他们可以在中间取消下载。 如果它是网站访问权限,通常让客户有5分钟访问权限然后在拒绝访问时切断访问权限并不是什么大问题。 无论如何,许多这样的网站都有免费试用。——中本聪

十七、更多关于交易池,网络广播和编码细节

在下面的第一部分中,中本聪扩展了交易池。然后,他描述了他在网络广播机制上的实验,其中节点从其邻居请求项目。最后,中本聪提到他过去18个月一直在研究代码。

回复:比特币一种点对点的电子现金系统

中本聪:Mon, 17 Nov 2008 13:33:04 -0800

幸运的是,只需要为当前最佳分支保留挂起交易池。这要求我们知道,也就是说一个诚实的,表现良好的点,其通信和数据存储运行良好,知道当前最好的分支是什么。——中本聪

我的意思是一个节点只需要挂起交易池来获得它拥有的最佳分支。 它目前认为的分支是最好的分支。这是它将试图制造一个区块的分支,这就是它需要的所有内容。

广播可能几乎完全可靠。

我们必须建立一种机制,使信息即使通过经常无法到达的消息传递,也不是假设每条消息至少到达一次。

我想我已经覆盖了对等网络广播机制。每个节点向其邻居发送一个库存列表,其中包含新区块和它拥有的交易的哈希值。邻居请求他们还没有的物品。如果在超时后项目永远不会通过,他们会从拥有它的另一个邻居请求它。由于所有或大多数邻居最终都应该拥有每个项目,即使这些项目被一个项目弄得乱七八糟,他们也可以从其他任何项目中获取,一次尝试一个。

库存请求数据方案引入了一点延迟,但它最终通过将额外的数据区块保留在传输队列之外并节省带宽来帮助提高速度。

你有这样一个设计的大纲和建议,这是向前迈出的一大步,但魔鬼在细节上。——网友

我相信在过去一年半的时间里,我已经完成了所有这些小细节的编写工作,并且有很多细节。本文未涉及功能细节,但源代码即将推出。 我发给你主要文件。(目前可根据要求提供,即将发布)——中本聪

延伸阅读:

《The Book of Satoshi》中本聪之书中文版连载(一)

《The Book of Satoshi》中本聪之书中文版连载(二)

《The Book of Satoshi》中本聪之书中文版连载(三)

《The Book of Satoshi》中本聪之书中文版连载(四)

《The Book of Satoshi》中本聪之书中文版连载(五)

文章声明:本文为火星号作者作品,不代表火星财经观点,版权归作者所有,如需转载,请提前联系作者!

根据国家《关于防范代币发行融资风险的公告》,大家应警惕代币发行融资与交易的风险隐患。

本文来自LIANYI转载,不代表链一财经立场,转载请联系原作者。

发表评论

登录后才能评论

联系我们

微信:kkyves

邮件:kefu@lianyi.com

时间:7x24,节假日bu休息

QR code