Bitcointalk · Bitcoin snack machine (fast transaction problem)

中本聪,2010 年 7 月 17 日

SN-1323 已核对来源,附原文与上下文。

阅读语言
中文译文

我相信支付处理公司可以把「快速分发交易 + 足够好的校验」作为一种服务提供,在大约 10 秒或更短时间内完成。

网络节点只接受收到的第一版交易,纳入它正在尝试生成的区块。当你广播一笔交易时,倘若别人同时广播了一笔双重支出,这就是一场看谁先传播到最多节点的竞赛。谁有一点先发优势,就会以几何级数在网络上扩散得更快,拿下大多数节点。

粗略的估算例子: 1 0 4 1 16 4 64 16 80% 20%

所以双重支出哪怕只晚一秒,都处于巨大劣势。

支付处理器与许多节点保持连接。收到一笔交易时,它把它轰出去,同时监听网络上的双重支出。如果它的众多监听节点中任何一个收到双重支出,它就警告这笔交易有问题。一笔双重支出的交易,只要有一个监听者听见,就传播不了多远。双重支出者必须等监听阶段结束,但那时支付处理器的广播已经到达大多数节点,或者在传播上遥遥领先,双重支出者已没有希望抢到剩余节点中有意义的一小部分。

ORIGINAL · 英文原文
I believe it'll be possible for a payment processing company to provide as a service the rapid distribution of transactions with good-enough checking in something like 10 seconds or less.

The network nodes only accept the first version of a transaction they receive to incorporate into the block they're trying to generate.  When you broadcast a transaction, if someone else broadcasts a double-spend at the same time, it's a race to propagate to the most nodes first.  If one has a slight head start, it'll geometrically spread through the network faster and get most of the nodes.

A rough back-of-the-envelope example:
1         0
4         1
16        4
64        16
80%      20%

So if a double-spend has to wait even a second, it has a huge disadvantage.

The payment processor has connections with many nodes.  When it gets a transaction, it blasts it out, and at the same time monitors the network for double-spends.  If it receives a double-spend on any of its many listening nodes, then it alerts that the transaction is bad.  A double-spent transaction wouldn't get very far without one of the listeners hearing it.  The double-spender would have to wait until the listening phase is over, but by then, the payment processor's broadcast has reached most nodes, or is so far ahead in propagating that the double-spender has no hope of grabbing a significant percentage of the remaining nodes.
来源
Bitcointalk 原始链接 ↗ 记录编号 SN-1323