SN-10012 附来源、原文与上下文。
James A. Donald 写道:
James A. Donald wrote:
引用的来信James A. Donald来源 ↗好,假设一个节点把一批交易纳入了自己的工作量证明,这些交易全都是诚实、合法的单次支付;另一个节点把另一批交易纳入自己的工作量证明,这些也同样都是诚实、合法的单次支付,而两个证明大约在同一时间生成。
OK, suppose one node incorporates a bunch of transactions in its proof of work, all of them honest legitimate single spends and another node incorporates a different bunch of transactions in its proof of work, all of them equally honest legitimate single spends, and both proofs are generated at about the same time.
接下来会发生什么?
What happens then?
它们都会广播自己的区块。所有节点都会收到并保留两者,但只在最先收到的那个区块上继续工作。假设恰好一半先收到一个,另一半先收到另一个。
They both broadcast their blocks. All nodes receive them and keep both, but only work on the one they received first. We'll suppose exactly half received one first, half the other.
不久后,所有交易都会传播完毕,让每个人都拥有完整的交易集合。两边工作的节点都会尝试补入自己这一边缺少的交易。当下一个工作量证明被找到时,无论该节点此前在计算哪个区块,那个分支都会变得更长,平局就此打破。无论是哪一边,新区块都会包含另一半交易,因此不管哪种情况,该分支都会包含所有交易。即使出现了连续两次分裂这种不太可能的情况,第二次分裂的两边也都会包含完整的交易集合。
In a short time, all the transactions will finish propagating so that everyone has the full set. The nodes working on each side will be trying to add the transactions that are missing from their side. When the next proof-of-work is found, whichever previous block that node was working on, that branch becomes longer and the tie is broken. Whichever side it is, the new block will contain the other half of the transactions, so in either case, the branch will contain all transactions. Even in the unlikely event that a split happened twice in a row, both sides of the second split would contain the full set of transactions anyway.
交易多等一个或几个周期才进入区块,并不是什么问题。
It's not a problem if transactions have to wait one or a few extra cycles to get into a block.
Satoshi Nakamoto
Satoshi Nakamoto