68 给达斯汀•特拉梅尔的电子邮件
以下是中本聪和达斯汀•特拉梅尔之间的电子邮件往来,达斯汀•特拉梅尔慷慨地把它们提供给了本书。
电子邮件1——时间戳和比特币成熟度
第一次交流是关于文档时间戳服务以及比特币挖矿成熟度的问题。这些问题后来在公开论坛上讨论过,但是中本聪在与达斯汀•特拉梅尔的私人谈话中首先提起。
发件人:“中本聪’’satoshi@vistomail.com
收件人:dtrammell@dustintrammell.com 日期:星期二,2009年1月13日,02:33:28 UTC+8 主题:回复:比特币0.1版发布
我正在阅读您的论文。在时间戳服务器部分,您提到了报纸和Usenet,所以我想您如果还没有看过这个网站的话,可能会对此感兴趣: http://www.publictimestamp.org/
谢谢,我还没看完。看起来写得不错。
有一个运行了很久的老网站,会把它的哈希值公布到Usenet上。我很奇怪, 这个网站并没有使用Usenet,虽然在自动化大行其道的今天,向Usenet发帖还是有点难。如果能让杂志或报纸出版他们的哈希值,在法庭上就很容易发挥作用达到目的。比特币和所有的时间戳服务器都有以下基本功能,即周期性将数据收集到区块并将区块的哈希值结果加入链中。
顺便提一下,我现在还在一台工作站上运行Alpha版代码。目前已经有两条“ 已生成”的消息了,但是对应的“记入”字段为0.00,而且余额没变。这是由于比特 币生效的存在时间/成熟度要求吗?
对,在比特币成熟之前记入字段将一直为0.00,然后会变为50.00。比特币成熟之前如果把记入字段设成空白,您觉得是否会更清晰一些?我应该在交易细节中放上一些文字(双击时显示)来解释是怎么回事。(用户会不会认为双击某一行就可以看到细节?)
请确保升级到0.1.3版。这个版本稳定很多。
聪
电子邮件2——跟进
发件人:“中本聪’’satoshi@vistomail.com
收件人:dtrammell@dustintrammell.com 日期:星期二,2009年1月13日,15:55:13 UTC+8 主题:回复:比特币0.1版发布
网站确实把哈希区块发布到了一个名为“哈希证明”(proof-hashes)的谷歌讨论组,因此与发布到Usenet的效果类似。
http://groups.google.com/group/proof-hashes
因为我在管理那个讨论组,而且这个讨论组的唯一目的就是对工作量证明的哈希值进行归档,如果您愿意,请随时加入该组,您的系统也可以在那里发布。
太好了,我正好在找像Usenet那样的讨论组以备不时之需,一直没有找到合适的。我相信在谷歌讨论组上发布要容易得多。
有些情况下,Usenet或谷歌讨论组可以作为辅助防御手段。在比特币网络总计算能力很小的早期,也是最脆弱的时候。当然,这时候攻击比特币的动机也很小。
最好是比特币网络成长起来,渡过这个阶段,希望这个简单的方案可行。如 果不行,真的到了那一步,谷歌讨论组还是可以帮上忙的。
电子货币和密码学是我非常感兴趣的两个领域,所以在密码学邮件组上看到比特币的消息时,我立刻就被这个项目吸引住了。欢迎随时联系我,我可以提供反馈或者测试产品的功能,我很乐意帮忙。
我们绝对有相似的兴趣!
唉,我觉得90年代应该有更多的人对此感兴趣,在经历了基于可信系统(数字现金等)长达十多年的失败后,大家都认为这个事儿肯定不靠谱。
我希望大家能区分开,这是我所知道的不基于信任系统的第一次尝试。
当比特币成熟时,会产生新的“记入”交易还是更新已生成交易行的记入字段 ?
现有的交易行会发生变化。
打开0.1.3版,我所有的4笔交易记录仍然显示的是“未确认”,但现在描述显示“已生成(未接受)”。
这是否意味着别的节点先扩展了区块链,而我的比特币是在一条死分支上生成的?果真如此,为什么之前的软件没能立刻监测到,并转到获胜分支去产生比特币? 0.1.0版的缺陷?
您说得对,很抱歉。这个缺陷在0.1.3版修复了。
通信线程会被阻塞,所以您建立的连接过一段时间就静默了。当您发现了一个区块,却无法广播到网络,所以没能进入区块链。您收不到任何消息,无法得知自己已经不在网络中了,直到软件重启。
这个缺陷也导致bitcoin.exe无法退出。通信线程被阻塞导致无法退出。比特币在系统关闭时很谨慎,以防中断重要的交易,但实际上杀掉进程是完全安全的 。
这些问题都在0.1.3版中修复了。如果您把IP发给我,我可以发一些比特币给您。
我还有一个问题……如何避免拥有最大计算能力的单一节点生成并拿走大部 分比特币?
如果每个节点都独立于其他节点工作,如果其中一个节点比其他的节点强得多,那么该节点是否有可能在其他节点之前得到正确结论?而计算能力不足的节点也许偶尔会走运,但是如果计算能力相差悬殊,我预计大部分比特币都会由最强大的节点生成。
这不像赛车,如果一辆车快两倍,就总是会赢。这是SHA-256运算,每次花不了1毫秒,而且每次都有独立的成功机会。每台计算机找到哈希碰撞的机会与计算能力成正比。一台慢一半的电脑会得到一半的比特币。
我会观察该版本,看看什么情况……
请帮我反馈情况。如果遇到任何问题,请把您的debug.log文件发给我。经常能从中找到问题点。
聪
电子邮件3——比特币的潜力
这次交流似乎表明中本聪没有预料到比特币会如此之迅速地被接受。
发件人:“中本聪’’satoshi@vistomail.com
收件人:dtrammell@dustintrammell.com 日期:星期五,2009年1月16日,03:15:14 UTC+8 主题:回复:比特币0.1版发布
那个地址我已经用了一段时间了,所以希望我的DHCP客户端成功续订了该地址。地址时不时会变,但是那个地址已经有段时间没变过了。
至少有一个节点的入口IP不断在一个B类地址空间变化。一直都是这样,只是我没想到。
是否介意我把其余部分拷贝给比特币列表(bitcoin-list)或密码学邮件组 ?
顺便说一下,比特币列表的地址是:
bitcoin-list@lists.sourceforge.net
订阅/退订页面:
http://lists.sourceforge.net/mailman/listinfo/bitcoin-list
归档:
http://sourceforge.net/mailarchive/forum.phpforum_name=bitcoin-list
达斯汀•特拉梅尔写道:
中本聪写道:
我们绝对有相似的兴趣!
唉,我觉得90年代应该有更多的人对此感兴趣,在经历了基于可信系统(数字现金等)长达十多年的失败后,大家都认为这个事儿肯定不靠谱。
我希望大家能区分开,这是我所知的不基于信任的系统的第一次尝试。
正是这些功能引起了我注意。重点在于让人们真正理解比特币的价值,使之成为货币。
哈尔暗指了一种可能性,认为这可能是一种长期投资。如果十年后电子货币还没有普及,我会感觉很奇怪。现在我们知道比特币这种方法说不定可以在可信第三方退缩的时候坚持下来。
即使不会马上爆发,对某个计划中需要用到令牌(token)或者电子货币的人 来说,也可以直接用得上。可以在小的细分市场里先用起来,比如积分奖励、捐赠卡、游戏币等。最开始可以用在那些几乎免费服务的工作量证明应用上。
比特币已经可以用于发送付费电子邮件了。发送框的大小可以调整,可以输入任意长的消息。当它连接到网络时直接就发送出去了。收件人双击交易查看完整消息。如果有名人收到的邮件多得看不过来,但是还是希望粉丝们有一种方式可以联系他们,就可以安装比特币系统并在网站上公开IP地址。“发送X枚比特币到这个IP的VIP热线,我会亲自阅读您的消息。”
还有订阅网站为避免免费试用影响到付费订阅,需要增加一些额外的工作量证明,就可以对免费试用者收取比特币。
聪
电子邮件4——关于比特币发送时的攻击和IP地址
发件人:“中本聪’’satoshi@vistomail.com
收件人:dtrammell@dustintrammell.com
日期:星期五,2009年1月16日,03:46:30 UTC+8
主题:回复:几点想法
我将攻击分为两类:
1. 由实际上存在于通信链路中的某人发起的攻击。
2. 来自于互联网上任何地方任何人的攻击。
第一类将您暴露在家庭或公司LAN、网络中间的ISP管理员以及接收方的LAN上 。第二类将您暴露在十亿网民面前,他们自己可以选择成为攻击者,在开发出攻击多个受害者的技术时获得规模经济。
通过IP发送请求新的公钥,所以这种方式容易受到第一类中间人的攻击。如果这是个问题,发送到比特币地址就没有那个漏洞了,虽然需要稍微损失一点儿私密性。我感觉大部分情况下人们会从非SSL网站以及未签名的明文电子邮件中获得比特币地址,这已经很容易在DNS中毒时遭到第一类和第二类的攻击了。
一个解决方案是在发送时同时使用IP和比特币地址(比如1.2.3.4-1Kn8iojk… ),接收方使用比特币地址的公钥为新公钥签名以证明你是正确的接收方。如果系统开始用于真正的商业目的,我一定会实现该方案。另一个方案是使用SSL。
现在很明显,如果发送给IP,得不到关于接收方的任何身份识别信息,于是盲目地发送给了任何应答该IP的人。
以后考虑实现的另一个功能是为钱包提供加密选项。
如果我理解得没错,您只是将交易计算记入区块链,然后让接收方“发现”它 ,是吗?
是这样的。
另一种选择是让网络节点提供解析服务,从中可以得到比特币地址的网络地址,如果该节点在线,一旦网络一致认可该地址,比特币发送程序就直接连接到那里。
如果只用比特币地址,把IP隐藏在幕后,那当然好了。可能会有隐私性或拒绝服务的问题。当然,在实现新的发送方法之前,有大量时间充分考虑设计方案 ,确保采用了最好的方法。
聪
电子邮件5——关于潜在损失和备份的需要
发件人:“中本聪’’satoshi@vistomail.com
收件人:dtrammell@dustlntrammell.com 日期:星期六,2009年1月17日,02:32:48 UTC+8 主题:回复:几点想法
在这个主题上我想到了一件事情,如果出现系统故障,可能会导致比特币损失。比特币程序似乎并没有在运行目录下存储任何数据,所以我假定存在于注册表或者其他地方(还没有破解进程管理器进行验证),所以让程序能够导出恢复所需的数据到系统备份文件中,可能是个好主意。
文件都在“%appdata%\Bitcoin”里,该目录需要备份。数据存储在事务型数据库DBM中,因此如果发生崩溃或电源故障,数据应该是安全的。
所有用户都有%appdata%目录的访问权限。大多数像火狐浏览器(Firefox)这样的新程序都把设置文件存在那里,尽管微软每次发布新版Windows都要改一下这个目录名,名字里全是空格而且特别长,都飞到屏幕外去了。
今天注意到了另一件事,关闭程序时似乎没有把网络套接字(socket)关闭干净(TCP RST满天飞)。可能要把这个修改加入低优先级事务列表。
刚刚加了些代码,下一个版本就好了。
聪
电子邮件6——中本聪发送比特币
发件人:“中本聪’’satoshi@vistomail.com
收件人:dtrammell@dustintrammell.com 日期:星期一,2009年1月19日,00:54:32 UTC+8 主题:回复:比特币转账
您在家收到的应该是您自己的比特币地址。没有办法知道交易来源,最多能知道的就是用您的哪个地址接收的。
可以创建多个地址,并为每人提供不同的地址,然后给每个地址做标记,以有助于确定发送者。
除了您告诉程序的名字以外,它什么都不知道。打印出来的名字是从地址薄的地址上关联来的,在“地址薄”按钮或者您的比特币地址右边的“更改”按钮 下面。
嗨,聪,
第一次转给我25.00枚比特币以后,您没有另外给我转100.00枚吧?我用比特币地址从单位的比特币程序往家里转了100.00,没有用IP。家里的系统收到了100. 00枚比特币的转账,交易细节显示如下:
“收到:中本聪
12higDjoCCNXSA95xZMWUdPvXNmkAduhWv”。
这不是我单位的比特币地址,所以我认为我收到的这笔付款是由您的客户端计算的区块编码的?如果是这样,除了生成交易的比特币地址以外,怎么还会知道您的名字?我不记得在程序里有什么地方可以输入名字。
达斯汀•特拉梅尔
dtrammell@dustintrammell.com
http://www.dustintrammell.com
http://btc.mom/10133/