注册
关闭

发布于 2018-11-11 阅读数 2306

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

今天双十一,俗称剁手节,朋友圈很多网友在问,比特币有没有半价销售?哈哈,同志们放在7、8年前真有可能而且不止5折,但是十年的比特币已经越来越成熟了,闲话不多说今天我们继续,今天的主要内容有两块,比特币的交易以及孤块问题,大家一起看下中本聪先生是如何为社区成员进行解答的。

《The Book of Satoshi》

原作者:PHIL CHAMPAGNE

中文翻译:陈雪刚

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

八、关于交易

本文涵盖了几个问题和答案。哈尔芬尼,比特币交易的第一个接收者,提出了问题。在第一部分中,中本聪解释了矿工如何保留交易,直到他们形成一个区块。在第二部分中,他解释了如何在特定的区块链上发生双重支出,以及如果两个矿工同时解决他们的区块,如何只有一个区块链将占上风它还包括接收方需要持续一小时的交易,直到它们在区块链中正式确认为止。中本聪指的是六个区块(每个区块10分钟,六个区块给出一小时)作为交易确认的适当时间,并永远成为区块链的一部分。对于第三个问题,他描述了攻击者必须做什么来“重写历史”,即重建和改变区块链。要在之前的过去的块中添加或删除交易,需要比在网络上现有块链上工作的所有矿工更快地重写它们。请记住,从孤立块的讨论中,最长的块链是网络使用的。中本聪说:CPU电源工作证明投票必须有最终决定权。每个人留在同一页面上的唯一方法是相信最长的链条总是有效的,无论如何。第四个问题涉及收件人对付款转帐的交易验证。第五个问题涉及节点(即矿工)在系统中的作用。当一个矿工发现工作量证明(具有适当数量的前导0的散列)时,它将广播它刚刚“挖掘”的块,其包含多个交易。接收此块的网络上的每个矿工必须通过检查块包含的每个交易的有效性来验证它。最后,中本聪报告他在编写宣布比特币的白皮书之前编写了代码,以便向自己证明所有问题都得到了解决。

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

中本聪,09 Nov 2008 11:13:34 -0800

哈尔芬尼写到:

有人提到,如果广播交易没有到达所有节点,那就没关系,因为它不久就会进入块链。这是怎么发生的  如果创建下一个块的节点(找到hashcash冲突的第一个节点)没有听到有关该交易的消息,那么如果没有听到那个节点的节点也会添加更多块交易?听到它的所有节点是否都保留了该交易,希望一旦它们足够幸运地成为发现下一次冲突的节点就将其合并到一个块中?对,节点将交易保存在其工作集中,直到它们进入区块。如果一个交易达到90%的节点,那么每次找到一个新块时,它有90%的可能性。或者,例如,如果一个节点在等待查看哪个增长最快时保持两个或更多个链,并且链A进入一个包含链B中币的双重花费的块,该怎么办? 是否检查过?(如果有人花了两倍的时间和两组不同的节点听到有关同一枚比特币的两个不同交易,就会发生这种情况。)——哈尔芬尼

“这不需要检查。无论哪个分支最终成为有效的交易,另一个将是无效。如果有人试图像这样花费两倍,那么一个且只有一个花费总是有效,其他花费无效。交易接收方通常需要持续一小时或更长时间的交易,以便有时间解决这种可能性。他们仍然可以立即重新投入比特币,但他们应该等待采取行动,如运送货物。”——中本聪

我也不清楚究竟如何通过能够比所有诚实参与者获得更多计算能力的优秀攻击者来实现双重支出或取消交易。我看到他可以创建新的块并添加它们来创建最长的链,但是如何在链中删除或添加旧的交易呢?当攻击者发出他的新块时,是否有诚实节点可以执行一致性检查,以确保没有删除任何内容?对这种攻击的更多解释将有助于判断攻击者从中获得的收益,而不是简单地使用他的计算能力来诚实地铸造新比特币——哈尔芬尼

“攻击者最后没有添加块。他必须返回并重做他的交易所在的区块以及它之后的所有区块,以及网络在他这样做时不断添加的任何新区块。他正在重写历史。一旦他的分支更长,它就成了新的有效分支。

这触及了一个关键点。尽管在场的每个人都可能看到恶作剧在继续,但是没有办法利用这个事实。

绝对必须始终将最长链视为有效链。存在的节点可能记得有一个分支在那里首先被另一个分支取代,但是他们没有办法说服那些不在场的人。我们不能有一些节点的子系统,它们依赖于一个他们认为是第一个分支的分支,另一个分支则先看到另一个分支,而其他分支则先后加入,从未看到发生了什么。CPU电源工作量证明投票必须具有最终决定权。每个人留在同一页面上的唯一方法是相信最长的链条总是有效的,无论如何。——中本聪

就支出交易而言,比特币的接收者必须进行哪些检查? 她是否需要回顾比特币的整个转移历史,并确保列表中的每个交易确实链接到时间戳区块链中? 或者她可以做最新的一个吗?——哈尔芬尼

“接收方只需要将其验证回到块链中足够远的深度,这通常只需要2个交易深度。之前的所有交易都可以被丢弃。——中本聪

时间戳节点是否检查交易,确保比特币上的先前交易处于链中,从而强制执行链中的所有交易都表示有效比特币的规则?——哈尔芬尼

“对,确切地说。当节点收到一个块时,它会检查其中每个交易的签名与块中的先前交易块只能包含依赖于先前块或同一块中的有效交易交易交易C可以依赖于同一块中的交易BB依赖于较早块中的交易A.”——中本聪

抱歉所有的问题,但正如我所说,这似乎是一个非常有前途和原创的想法,我期待着看到这个概念是如何进一步发展的。通过对各种对象(比特币块,交易)的数据结构的具体细节,消息中包含的数据以及处理过程的算法描述,可以看到更加面向过程的构思描述。在这个系统中会发生的各种事件。您提到您正在开发一个实现,但我认为系统的更正式的文本描述将是一个有用步骤。——哈尔芬尼

“我很感激你的问题。我实际上做了这种倒退。在我说服自己能够解决所有问题之前,我必须编写所有代码,然后我写了论文。我想我能够尽快发布代码,而不是编写详细的规范。你填写空白的大部分假设都是对的。”——中本聪

九、关于孤块

当两名矿工几乎在同一时间满足工作证明时,就会出现孤块。 由两个矿工创建的两个区块是不同的,因为它们可能不包含所有相同的比特币交易,在这种情况下,两个获胜矿工将区块的交易费用转移到他们的账户的交易也是不同的。但是这两个区块中只有一个最终将被添加到区块链中,而另一个将成为孤立区块。孤立区块中存在但未包含在已接受区块中的任何交易将包含在矿工竞争的下一个区块中。有关更多详细信息,请参阅第2章中对孤立块的说明。

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

杰姆斯·A·唐纳德写到:

好吧,假设一个节点在其工作量证明中包含了一堆交易,所有这些交易都是合法的单一花费,而另一个节点在其工作量证明中包含了不同的交易,所有这些交易都是同等诚实的合法单一花费,并且两个证据都是大约在同一时间生成。

“接下来将发生什么?

他们都播放他们的块。所有节点都接收它们并保留它们,但只能在它们首先接收的节点上工作。我们假设正好一半先收到一半,然后另一半收到。

在很短的时间内,所有交易都将完成传播,以便每个人都拥有全套区块数据。在每一侧工作的节点将尝试添加他们身边缺少的交易。当找到下一个工作量证明时,无论该节点正在处理哪个先前的块,该分支变得更长并且打破了平局。无论哪一方,新块都将包含另一半的交易,因此在任何一种情况下,分支都将包含所有交易。即使在连续两次发生拆分的不太可能的情况下,第二次拆分的双方仍然会包含完整的交易集。

如果交易必须等待一个或几个额外的周期才能进入块,这不是问题。”——中本聪

今天连载的部分包括交易,还有孤块的问题,中本聪先生对社区成员哈尔芬尼以及杰姆斯·A·唐纳德先生提出的问题做了解释,其中关于哈尔芬尼的问题,中本聪表示,他没有那么多时间去解释理论部分,他要先把代码写完,将功能实现。这一点也是比特币能成功的一个重要原因,做一件事情不需要解释那么多先做出来比一切解释都有效果,今天连载到这里,明天我们继续。


延伸阅读:

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

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

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


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

  • 0

0 条评论