《The Book of Satoshi》中本聪之书中文版连载(四)
今天双十一,俗称剁手节,朋友圈很多网友在问,比特币有没有半价销售?哈哈,同志们放在7、8年前真有可能而且不止5折,但是十年的比特币已经越来越成熟了,闲话不多说今天我们继续,今天的主要内容有两块,比特币的交易以及孤块问题,大家一起看下中本聪先生是如何为社区成员进行解答的。
《The Book of Satoshi》
原作者:PHIL CHAMPAGNE
中文翻译:陈雪刚
八、 关于交易
本文涵盖了几个问题和答案。
哈尔芬尼
,比特币交易的第一个接收者,提出了问题。
在第一部分中,
中本聪
解释了矿工如何保留交易,直到他们形成一个区块。
在第二部分中,他解释了如何在特定的区块链上发生双重支出,以及如果两个矿工同时解决他们的区块,如何只有一个区块链将占上风
。
它还包括接收方需要持续一小时的交易,直到它们在区块链中正式确认为止。
中本聪
指的是六个
区块
(每个区块
10分钟,六个区块给出一小时)作为交易确认的适当时间,并永远成为区块链的一部分。
对于第三个问题,他描述了攻击者必须做什么来
“重写历史”,即重建和改变区块链。要在之前的过去的
区
块中添加或删除
交易
,需要比在网络上现有
区
块链上工作的所有矿工更快地重写它们。请记住,从孤立块的讨论中,最长的
区
块链是网络使用的。
中本聪
说:
CPU电源工作
量
证明投票必须有最终决定权。每个人留在同一页面上的唯一方法是相信最长的链条总是有效的,无论如何。
第四个问题涉及收件人对付款转帐的交易验证。
第五个问题涉及节点(即矿工)在系统中的作用。当一个矿工发现
工作量证明
(具有适当数量的前导
0的散列)时,它将广播它刚刚“挖掘”的
区
块,其包含多个
交易
。接收此
区
块的网络上的每个矿工必须通过检查
区
块包含的每个
交易
的有效性来验证它。
最后,
中本聪
报告他在编写宣布比特币的白皮书之前编写了代码,以便向自己证明所有问题都得到了解决。
回复:比特币一种点对点的电子现金系统
中本聪,09 Nov 2008 11:13:34 -0800
哈尔芬尼写到:
有人提到,如果广播
交易
没有到达所有节点,那就没关系,因为它不久就会进入
区
块链。这是怎么发生的
,
如果创建
“
下一个
”
区
块的节点(找到
hashcash
冲突的第一个节点)没有听到有关该
交易
的消息,那么如果没有听到那个节点的节点也会添加更多块
交易
吗
?听到它的所有节点是否都保留了该
交易
,希望一旦它们足够幸运地成为发现下一次冲突的节点就将其合并到一个
区
块中?对,节点将
交易
保存在其工作集中,直到它们进入区块。如果一个
交易
达到
90
%的节点,那么每次找到一个新
区
块时,它有
90
%的可能性。
或者,例如,如果一个节点在等待查看哪个增长最快时保持两个或更多个链,并且链
A
进入一个包含链
B
中币的双重花费的
区
块,该怎么办?
是否检查过?
(如果有人花了两倍的时间和两组不同的节点听到有关同一枚
比特币
的两个不同交易,就会发生这种情况。)
——哈尔芬尼
“这不需要检查。无论哪个分支最终成为有效的交易,另一个
将是
无效
的
。如果有人试图像这样花费两倍,那么一个且只有一个花费总是有效,其他花费无效。
交易接收方通常需要持续一小时或更长时间的交易,以便有时间解决这种可能性。
他们仍然可以立即重新投入
比特币
,但他们应该等待采取行动,如运送货物。”——中本聪
我也不清楚究竟如何通过能够比所有诚实参与者获得更多计算能力的优秀攻击者来实现双重支出或取消交易。我看到他可以创建新的
区
块并添加它们来创建最长的链,但是如何在链中删除或添加旧的
交易
呢?当攻击者发出他的新
区
块时,是否有诚实节点可以执行一致性检查,以确保没有删除任何内容
呢
?对这种攻击的更多解释将有助于判断攻击者从中获得的收益,而不是简单地使用他的计算能力来诚实地铸造新
比特币
。
——哈尔芬尼
“攻击者最后没有添加
区
块。他必须返回并重做他的交易所在的区块以及它之后的所有区块,以及网络在他这样做时不断添加的任何新区块。他正在重写历史。一旦他的分支更长,它就成了新的有效分支。
这触及了一个关键点。尽管在场的每个人都可能看到恶作剧在继续,但是没有办法利用这个事实。
绝对必须始终将最长链视为有效链。存在的节点可能记得有一个分支在那里首先被另一个分支取代,但是他们没有办法说服那些不在场的人。我们不能有一些节点的子系统,它们依赖于一个他们认为是第一个分支的分支,另一个分支则先看到另一个分支,而其他分支则先后加入,从未看到发生了什么。
CPU
电源
工作量证明
投票必须具有最终决定权。每个人留在同一页面上的唯一方法是相信最长的链条总是有效的,无论如何。
”
——中本聪
就支出交易而言,
比特币
的接收者必须进行哪些检查?
她是否需要回顾
比特币
的整个转移历史,并确保列表中的每个交易确实链接到
“
时间戳
”
区块链中? 或者她可以做最新的一个吗?
——哈尔芬尼
“接收方只需要将其验证回到
区
块链中足够远的深度,这通常只需要
2
个交易深度。之前的所有交易都可以被丢弃。
”
——中本聪
时间戳节点是否检查
交易
,确保
比特币
上的先前
交易
处于链中,从而强制执行链中的所有
交易
都表示有效
比特币
的规则?
——哈尔芬尼
“对,确切地说。当节点收到一个
区
块时,它会检查其中每个
交易
的签名与
区
块中的先前
交易
。
区
块只能包含依赖于先前
区
块或同一
区
块中的有效
交易
的
交易
。
交易
C
可以依赖于同一
区
块中的
交易
B
,
B
依赖于较早
区
块中的
交易
A.”
——中本聪
抱歉所有的问题,但正如我所说,这似乎是一个非常有前途和原创的想法,我期待着看到这个概念是如何进一步发展的。通过对各种对象(
比特币
,
区
块,
交易
)的数据结构的具体细节,消息中包含的数据以及处理过程的算法描述,可以看到更加面向过程的构思描述。在这个系统中会发生的各种事件。您提到您正在开发一个实现,但我认为系统的更正式的文本描述将是一个有用
步骤
。——哈尔芬尼
“我很感激你的问题。我实际上做了这种倒退。在我说服自己能够解决所有问题之前,我必须编写所有代码,然后我写了论文。我想我能够尽快发布代码,而不是编写详细的规范。你填写空白的大部分假设都是对的。”
——中本聪
九、关于孤块
当两名矿工几乎在同一时间满足工作
量
证明时,就会出现
“
孤块
”
。 由两个矿工创建的两个区块是不同的,因为它们可能不包含所有相同的比特币交易,在这种情况下,两个
“
获胜
”
矿工将区块的交易费用转移到他们的账户的交易也是不同的。但是这两个区块中只有一个最终将被添加到区块链中,而另一个将成为
“
孤立区块
”
。孤立区块中存在但未包含在已接受区块中的任何交易将包含在矿工竞争的下一个区块中。有关更多详细信息,请参阅第
2
章中对孤立块的说明。
回复:比特币一种点对点的电子现金系统
杰姆斯·A·唐纳德写到:
好吧,假设一个节点在其
工作量证明
中包含了一堆交易,所有这些交易都是合法的单一花费,而另一个节点在其
工作量证明
中包含了不同的交易,所有这些交易都是同等诚实的合法单一花费,并且两个证据都是大约在同一时间生成。
“接下来将发生什么?
他们都播放他们的
区
块。所有节点都接收它们并保留它们,但只能在它们首先接收的节点上工作。我们假设正好一半先收到一半,
然后
另一半收到。
在很短的时间内,所有交易都将完成传播,以便每个人都拥有全套
区块数据
。在每一侧工作的节点将尝试添加他们身边缺少的交易。当找到下一个工作量证明时,无论该节点正在处理哪个先前的
区
块,该分支变得更长并且打破了平局。无论哪一方,新
区
块都将包含另一半的交易,因此在任何一种情况下,分支都将包含所有交易。即使在连续两次发生拆分的不太可能的情况下,第二次拆分的双方仍然会包含完整的交易集。
如果
交易
必须等待一个或几个额外的周期才能进入
区
块,这不是问题。”
——中本聪
今天连载的部分包括交易,还有孤块的问题,中本聪先生对社区成员哈尔芬尼以及杰姆斯·A·唐纳德先生提出的问题做了解释,其中关于哈尔芬尼的问题,中本聪表示,他没有那么多时间去解释理论部分,他要先把代码写完,将功能实现。这一点也是比特币能成功的一个重要原因,做一件事情不需要解释那么多先做出来比一切解释都有效果,今天连载到这里,明天我们继续。
延伸阅读:
《The Book of Satoshi》中本聪之书中文版连载(一)
《The Book of Satoshi》中本聪之书中文版连载(二)
《The Book of Satoshi》中本聪之书中文版连载(三)