Mike Hearn 通信

Satoshi 致 Mike Hearn:微支付(2009年4月13日)

中本聪 · 2009 年 4 月 13 日

SN-10051 附来源、原文与上下文。

阅读语言
引用的来信Mike Hearn来源 ↗

我最合理的猜测是:这是全局链的长度,而开始时快速增长,是因为软件正在下载并验证链中已有的区块是否有效。

My best guess - it is the length of the global chain, and the rapid advance at the start is as the software downloads and verifies the preceding blocks in the chain as being valid.

对。我正在想更清楚的表述,也许用“%d 个网络区块”或者“%d 个区块的链”。

Right. I'm trying to think of more clear wording for that, maybe "%d network blocks" or "%d block chain".

引用的来信Mike Hearn来源 ↗

如果我们认为 0.1% 是可以接受的风险率,那么 z=5,因此任何交易都必须等待将近一小时,才能在链中确定下来。用于网页内容或虚拟商品等的微支付,顾名思义就需要很低的额外负担,等一小时似乎是个相当大的障碍。

If we assume that 0.1% is a good risk rate, then z=5 thus any transaction must wait a bit less than an hour before being solidified in the chain. As micropayments for things like web content or virtual goods are by definition something that requires low overhead, waiting an hour seems like quite a significant hurdle.

计算实际风险时,要把 0.1% 乘以买家是一个拥有庞大计算机网络的攻击者的概率。

For the actual risk, multiply the 0.1% by the probability that the buyer is an attacker with a huge network of computers.

对于微支付,你可以安全地立即接受付款。金额太小,不值得费力去偷。微支付几乎总是购买知识产权,商家不会有实物损失。试图偷取微支付的人,无论如何大概都不会成为付费客户;而且,如果他们想窃取知识产权,可以使用文件共享网络。

For micropayments, you can safely accept the payment immediately. The size of the payment is too small for the effort to steal it. Micropayments are almost always for intellectual property, where there's no physical loss to the merchant. Anyone trying to steal a micropayment would probably not be a paying customer anyway, and if they want to steal intellectual property they can use the file sharing networks.

目前,商家会接受一定比例的坏账。我相信,即使只有 1 个、甚至 0 个确认区块,风险也会远低于已验证信用卡交易的拒付率。

Currently, businesses accept a certain chargeoff rate. I believe the risk with 1 or even 0 confirming blocks will be much less than the rate of chargebacks on verified credit card transactions.

对不等待确认区块的商家,常见的骗局会是先向商家付款,然后赶在商家的交易副本之前,迅速尝试向网络传播一笔双重支付。商家可以广播自己的交易,再监测网络中是否出现任何双重支付副本。窃贼无法在监测期间广播,否则商家的节点就会收到副本。商家只需监测一两分钟,直到大多数网络节点拥有自己的版本,而窃贼的版本已经来不及追上并传遍大量节点。只延迟一两分钟,就能把不付款而得手的概率压低到不足以值得诈骗的程度。窃贼通常需要很高的概率免费拿到商品,才值得做。除了上述骗局,再投入大量 CPU 算力进行论文中讨论的暴力攻击,也不会显著增加窃贼的胜算。

The usual scam against a merchant that doesn't wait for confirming blocks would be to send a payment to a merchant, then quickly try to propagate a double-spend to the network before the merchant's copy. What the merchant can do is broadcast his transaction and then monitor the network for any double-spend copies. The thief would not be able to broadcast during the monitoring period or else the merchant's node would receive a copy. The merchant would only have to monitor for a minute or two until most of the network nodes have his version and it's too late for the thief's version to catch up and reach many nodes. With just a minute or two delay, the chance of getting away without paying could be made much too low to scam. A thief usually needs a high probability of getting an item for free to make it worthwhile. Using a lot of CPU power to do the brute force attack discussed in the paper in addition to the above scam would not increase the thief's chances very much.

凡是授予某种访问权限的东西,例如需要一段时间才能下载的内容、网站访问、虚拟主机、订阅或服务,都可以在几分钟后交易被拒绝时取消。

Anything that grants access to something, like something that takes a while to download, access to a website, web hosting, a subscription or service, can be cancelled a few minutes later if the transaction is rejected.

引用的来信Mike Hearn来源 ↗

这一点让我困惑,因为看起来,诚实链要比 1 个攻击 CPU 计算的链增长得更快,唯一办法就是把寻找部分碰撞需要扫描的搜索空间,均匀划分给参与的诚实节点。这样,找到碰撞的速度才会与节点数量成正比。但我没看到任何关于这种任务划分的讨论,而这显然会增加复杂性。

is confusing for me, because it appears the only way the honest chain can grow faster than a chain worked on by 1 attacking cpu is if the keyspace to scan looking for a partial collision is sharded evenly amongst the participating honest nodes. That way the speed at which collisions are found would be proportional to the number of nodes. Yet I don't see any discussion of such work sharding, which obviously adds complexity.

搜索空间非常大,有 2^256。被哈希的内容包含节点的公钥和一个随机 nonce,所以任意两个节点在同一空间重复计算的概率可以忽略不计。

The keyspace is huge, 2^256. The thing being hashed includes the node's public key and a random nonce, so the chance of any two nodes duplicating work on the same space is negligible.

引用的来信Mike Hearn来源 ↗

每个区块所要求的难度,是如何在网络中传播并达成一致的?

How is the required difficulty of each block communicated through the network and agreed upon?

它不需要传播。公式硬编码在程序里,每个节点都进行相同的计算,从而知道下一个区块要求的难度。如果有人偏离公式,他的区块就不会被大多数节点接受。

It's not communicated. The formula is hardcoded in the program and every node does the same calculation to know what difficulty is required for the next block. If someone diverged from the formula, their block would not be accepted by the majority.

引用的来信Mike Hearn来源 ↗

再次感谢。我还有更多问题,不过一封邮件写这些就够了 :) 我很乐意在某个时候把这些讨论整理成类似常见问题解答的文档。如果这些问题显得太浅显,抱歉。

Thanks once again. I have yet more questions but this is enough for one email :) I will be happy to summarize these discussions into an FAQ-like document at some point. Apologies if the questions seem trivial.

没问题,谢谢你在 Mac Wine 上测试。

No problem, thanks for testing it on Mac Wine.

Satoshi

Satoshi

来源

阅读字号

选择适合你的字号,之后阅读会继续使用。