全面交由交易手续费来完成,且绝对不会有通货膨胀。 奖励机制也可能会鼓励节点保持诚实。如果一个贪婪的攻击者能够网罗比所有诚实节点都更多的 CPU 算力,他必须做出一个选择:是用这些算力通过把自己花出去的钱偷回来去欺骗别人呢?还是用这些算力去生成新的硬币?他应该能够发现按照规则行事是更划算的,当前规则使得他能够获得比所有其他人加起来都更多的硬币,这显然比暗中摧毁系统并使自己的财富化为虚无更划算。 7. 回收硬盘空间 (Reclaiming Disk Space) 如果一枚硬币最近发生的交易发生在足够多的区块之前,那么,这笔交易之前该硬币的花销交易记录可以被丢弃 —— 目的是为了节省磁盘空间。为了在不破坏该区块的哈希的前提下实现此功能,交易记录的哈希将被纳入一个 Merkle 树之中,而只有树根被纳入该区块的哈希之中。通过砍掉树枝方法,老区块即可被压缩。内部的哈希并不需要被保存。 一个没有任何交易记录的区块头大约是 80 个字节。假设每十分钟产生一个区块,80 字节乘以 6 乘以 24 乘以 365,等于每年 4.2M。截止 2008 年,大多数在售的计算机配有 2GB 内存,而按照摩尔定律的预测,每年会增加 1.2 GB,即便是区块头必须存储在内存之中也不会是什么问题。 8. 简化版支付确认 即便不用运行一个完整网络节点也有可能确认支付。用户只需要有一份拥有工作证明的最长链的区块头拷贝 —— 他可以通过查询在线节点确认自己拥有的确实来自最长链 —— 而后获取 Merkle 树的树枝节点,进而连接到这个区块被打上时间戳时的交易。用户并不能自己检查交易,但,通过连接到链上的某个地方,他可以看到某个网络节点已经接受了这个交易,而此后加进来的区块进一步确认了网络已经接受了此笔交易。 只要诚实节点依然在掌控网络,如此这般,验证即为可靠的。然而,如果网络被攻击者所控制的时候,验证就没那么可靠了。尽管网络节点可以自己验证交易记录,但是,只要攻击者能够继续控制网络的话,那么简化版验证方式可能会被攻击者伪造的交易记录所欺骗。应对策略之一是,客户端软件要接受来自网络节点的警告。当网络节点发现无效区块的时候,即发出警报,在用户的软件上弹出通知,告知用户下载完整区块,警告用户确认交易一致性。那些有高频收付发生的商家应该仍然希望运行属于自己的完整节点,以此保证更独立的安全性和更快的交易确认。 9. 价值的组合与分割 尽管逐个地处理硬币是可能的,但为每分钱设置一个单独的记录是很笨拙的。为了允许价值的分割与合并,交易记录包含多个输入和输出。一般情况下,要么是一个单独的来自于一个相对大的之前的交易的输入,要么是很多个输入来自于更小金额的组合;与此同时,最多有两个输出:一个是支付(指向收款方),如果必要的话,另外一个是找零(指向发款方)。 值得注意的是,“扇出”在这里并不是问题 —— 所谓“扇出”,就是指一笔交易依赖于数笔交易,且这些交易又依赖于更多笔交易。从来就没有必要去提取任何一笔交易的完整独立的历史拷贝。 10. 隐私 (Privacy) 传统的银行模型通过限制他人获取交易者和可信第三方的信息而达成一定程度的隐私保护。出于对将所有交易记录公开的需求否决了这种方法。但是,维持隐私可通过于另一处的切断信息流来实现——公钥匿名。公众可以看到某某向某某转账了一定的金额,但是,没有任何信息指向某个确定的人。这种水平的信息发布有点像股市交易,只有时间和各个交易的金额被公布,但是,没有人知道交易双方都是谁。 还有另外一层防火墙。交易者应该针对每一笔交易启用一对新的公私钥,以便他人无法将这些交易追溯到同一个所有者身上。有些多输入的交易依然难免被追溯,因为那些输入必然会被识别出来自于同一个所有者。危险在于,如果一个公钥的所有者被曝光之后,与之相关的所有其他交易都会被曝光。 11. 计算 (Calculations) 假设一个场景,某个攻击者正在试图生成一个比诚实链更快的替代链。就算他成功了,也不能对系统做任意的修改,即,他不可能凭空制造出价值,也无法获取从未属于他的钱。网络节点不会把一笔无效交易当作支付,而诚实节点也永远不会接受一个包含这种支付的区块。攻击者最多只能修改属于他自己的交易,进而试图取回他已经花出去的钱。 诚实链和攻击者之间的竞争可以用二项式随机漫步来描述。成功事件是诚实链刚刚被添加了一个新的区块,使得它的优势增加了 1 ;而失败事件是攻击者的链刚刚被增加了一个新的区块,使得诚实链的优势减少了 1 。 攻击者能够从落后局面追平的概率类似于赌徒破产问题。假设,一个拿着无限筹码的赌徒,从亏空开始,允许他赌无限次,目标是填补上已有的亏空。我们能算出他最终能填补亏空的概率,也就是攻击者能够赶上诚实链的概率,如下: 既然我们已经假定 p> ,q 既然攻击者需要赶超的区块数量越来越多,那么其成功概率就会指数级下降。于赢面不利时,如果攻击者没有在起初就能幸运地向前猛跨一步,那么他的胜率将在他进一步落后的同时消弭殆尽。 现在考虑一下一笔新交易的收款人需要等多久才能充分确定发款人不能更改这笔交易。我们假定发款人是个攻击者,妄图让收款人在一段时间里相信他已经支付对付款项,随后将这笔钱再转回给自己。发生这种情况时,收款人当然会收到警告,但发款人希望那时木已成舟。 收款人生成了一对新的公私钥,而后在签署之前不久将公钥告知发款人。这样可以防止一种情形:发款人提前通过连续运算去准备一条链上的区块,并且只要有足够的运气就会足够领先,直到那时再执行交易。一旦款项已被发出,那个不诚实的发款人开始秘密地在另一条平行链上开工,试图在其中加入一个反向版本的交易。 收款人等到此笔交易被打包进区块,并已经有z个区块随后被加入。他并不知道攻击者的工作进展究竟如何,但是可以假定诚实区块在每个区块生成过程中耗费的平均时间;攻击者的潜在进展符合泊松分布,其期望值为: 为了算出攻击者依然可以赶上的概率,我们要把攻击者需要追赶的区块数目的帕松分布概率密度,乘以在落后该区块数目下能够追上来的概率: 转换为 C 语言程序…… 获取部分结果,我们可以看到概率随着z的增加指数级下降: 若是 P 小于 0.1%…… 12. 结论 我们提出了一个不必依赖信任的电子交易系统;起点是一个普通的使用数字签名的硬币框架开始,虽然它提供了健壮的所有权控制,却无法避免双重支付。为了解决这个问题,我们提出一个使用工作证明机制的点对点网络去记录一个公开的交易记录历史,只要诚实节点能够控制大多数 CPU 算力,那么攻击者就仅从算力方面就不可能成功篡改系统。这个网络的健壮在于它的无结构的简单。节点们可以在很少协同的情况下瞬间同时工作。它们甚至不需要被辨认,因为消息的路径并非取决于特定的终点;消息只需要被以最大努力为基本去传播即可。节点来去自由,重新加入时,只需要接受工作证明链,作为它们离线之时所发生之一切的证明。它们通过它们的 CPU 算力投票,通过不断为链添加新的有效区块、拒绝无效区块,去表示它们对有效交易的接受与否。任何必要的规则和奖励都可以通过这个共识机制来强制实施。 参考文献 (References) b-money Dai Wei (1998-11-01) http://www.weidai.com/bmoney.txt Design of a secure timestamping service with minimal trust requirements Henri Massias, Xavier Serret-Avila, Jean-Jacques Quisquater 20th Symposium on Information Theory in the Benelux (1999-05) http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.13.6228 How to time-stamp a digital document Stuart Haber, W.Scott Stornetta Journal of Cryptology (1991) https://doi.org/cwwxd4 DOI: 10.1007/bf00196791 Improving the Efficiency and Reliability of Digital Time-Stamping Dave Bayer, Stuart Haber, W. Scott Stornetta Sequences II (1993) https://doi.org/bn4rpx DOI: 10.1007/978-1-4613-9323-8_24 Secure names for bit-strings Stuart Haber, W. Scott Stornetta Proceedings of the 4th ACM conference on Computer and communications security - CCS ’97(1997) https://doi.org/dtnrf6 DOI: 10.1145/266420.266430 Hashcash - A Denial of Service Counter-Measure Adam Back (2002-08-01) http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.15.8 Protocols for Public Key Cryptosystems Ralph C. Merkle 1980 IEEE Symposium on Security and Privacy (1980-04) https://doi.org/bmvbd6 DOI: 10.1109/sp.1980.10006 An Introduction to Probability Theory and its Applications William Feller John Wiley & Sons (1957) https://archive.org/details/AnIntroductionToProbabilityTheoryAndItsApplicationsVolume1 来源:金色财经lg...