从技术上讲,比特币是不可能被销毁的。但可以把它们发送到一个无法消费的地址,使它们在任何意义上都是多余的。2011年10月,马克·卡佩尔斯(Mark Karpeles)正是这样做的,当时他因为一个脚本错误将2609个BTC永久地遗忘了。
如何一键毁掉一周的利润
在比特币历史的上一篇文章中,Mt。Gox在2011年夏天刚刚遭遇了第一次黑客攻击。不到四个月后,倒霉的首席执行官Mark Karpeles又经历了一个尴尬的插曲,他把这家比特币交易所一周的收入全部抹去。与Gox将要承受的其他损失相比,这次损失只是沧海一粟,因此在很大程度上已被历史所湮没。然而,这一事件值得重新审视,因为它提供了一个警示故事,告诉人们干涉比特币客户的危险,以及如何销毁比特币的教训。
和早期的许多事件一样,比特币社区的大多数人都是在Bitcointalk论坛上得知这一事件的。在2011年10月29日,用户genjix在论坛上创建了一个名为“某人搞砸了,丢了很多钱”的帖子。为了解释,他们贴出了以下代码:
很少有读者能从代码中看出问题所在,但是genjix可以提供解释。标准的交易脚本(在本例中是“76a90088ac”)应该有“14”来代替“00”,在脚本语言中,它的意思是按0字节。“这是一个已经送出的邮件。显然有人在攻击比特币,或者制作定制版本,结果把事情弄得一团糟——尽管我不知道它要对这么多钱做什么。”
后一个问题的答案很快就从互联网中继聊天中得到了,在Mt.Gox IRC上,Karpeles, aka Magical Tux承认自己创建了错误的交易脚本并销毁了2609个 BTC:
MagicalTux:这是个问题,但不是我们遇到过的最严重的问题
MagicalTux:所有失效的提现都已重新发放
MagicalTux:刚刚花了一周的BTC收入
为免对交易的终结有任何疑问,Bitcointalk用户“BTCurious”写道: “他们走了,不可能恢复。“
所有不可恢复交易的母体
将硬币发送到错误的或不存在的比特币地址是极其罕见的。所有比特币地址都有一个校验和,这大大降低了无意中输入错误地址的几率。然而,Karpeles一直在修补比特币客户端,并选择了一项有价值的交易来进行实验。正如他在IRC上承认的:
MagicalTux:我需要限制一个tx的输入数量,似乎普通的bitcoind不喜欢293个输入的tx。
BTCurious在Bitcointalk论坛上解释道:比特币协议所支持的不仅仅是把硬币从A发送到B,即使这主要是你现在在普通客户端看到的。不过,只要遵循比特币协议,矿商就需要接受“非常规交易”。
“对Gox科技声誉的又一次打击”
人们对Karpeles的失误反应不一,IRC上爆发了一场激烈的辩论,主题是比特币的脚本功能是否应该受到限制,以防止此类错误的发生。然而,这并不像听起来那么简单,核心开发人员Gregory Maxwell指出:
Glyph-Minus-229:协议不阻止发送到无效地址?
gmaxwell:不,协议使许多事情成为可能。
gmaxwell:交易是管理赎回的小程序。
gmaxwell:可能没有多项式时间可以识别所有不可花费的交易。
一名IRC用户不愿将这一事件斥为霉运,称其为“对mtgox技术声誉的又一次打击”。
论坛用户Raoul Duke写道:“90%的比特币用户都信任这个人。”他还配了一个翻白眼的表情符号。关于Karpeles,他有先见之明地写道:“他似乎更接近于失去Mt. Gox的余额,而不是逃跑。在猜测如果Karpeles在发送44.2万比特币时犯了那个错误,比特币会发生什么变化时,他承认:“想到这些东西让我不寒而栗。”四个月前,Karpeles发送了一笔创纪录的比特币。
无意搞错了
2011年10月被Karpeles意外销毁的2609个比特币无法移动,但可以查看。在Tux的辩护中,比特币在当时的用户界面要差得多,而且执行复杂的交易需要比现在更多的修补工作。
他们将一直呆在一个不同寻常的比特币地址“s-272edf45031dd498e7b3ae89e11ff21b”里。为了总结检索这些比特币的不可能性,论坛用户“etotheipi”写道:“为了使用这些比特币,您必须提供一个公钥,当您应用ripemd160(sha256(pubKey))时,它等于“0x00”。不幸的是,ripemd160只产生20字节的哈希。即使您确实有一个字符串可以生成这样一个不可能的哈希,但要幸运地找到相关的私钥。“
鉴于Mt.Gox丢失的硬币当时只值8300美元,这看起来没什么大不了的。今天,这些硬币的价值将是2600万美元。他们在过去的八年中一直在同一个地址,没有受到影响,这一事实证明了比特币的终结性。