史上最贵黑客事件!中本聪用代码亲手杀死 1844.67 亿枚比特币!
作者 | 佩奇
出品 | 区块链大本营
近来,区块链领域最受关注度的一件事莫过于以太坊君士坦丁堡硬分叉了。但由于 EIP1283 曝出漏洞,以及 The DAO 事件的深刻教训,一向不守时的以太坊又不守时了。由于这次升级延迟,人们开始担心以太坊2.0的未来。对此,以太坊大神站出来发声了。
1月20日,就在君士坦丁堡硬分叉再次推迟之后,以太坊核心开发成员 Afri Schoedon 表示,宁静(Serenity)、权益证明(PoS)和分片(Sharding)等以太坊2.0相关项目的整体进度都与以太坊1.0的链上协议升级无关。君士坦丁堡硬分叉的推迟与否都不会影响以太坊2.0。
随后V神在推特转发并评论道:君士坦丁堡硬分叉完全不会影Casper/Sharding/Serenity稳定和持续发展。
谈到分叉,大家熟知的莫过于以太坊的 The DAO 事件了,其直接结果是形成了 ETH 和 ETC 两雄争霸的局面(有点夸张,其实ETC很不好过,有点自身难保了),但是相比于接下来营长要说的分叉事件,The DAO 事件就是小巫见大巫了。
这就是差点摧毁比特币、杀死去中心化信仰的「价值溢出事件」。
关乎比特币生死,真这么严重吗?
2010年8月25日,一个未知黑客差点摧毁了比特币。该黑客在高度为74638的区块上凭空生成了1844.67亿比特币(What?不是说总量只有2100万枚吗?)。中本聪意识到了事情的严重性,并很快就将比特币区块链进行了分叉,抹掉了这1844.67亿比特币,这是当时拯救比特币的唯一方式。
{
"hash" : "0000000000790ab3f22ec756ad43b6ab569abf0bddeb97c67a6f7b1470a7ec1c",
"ver" : 1,
"prev_block" : "0000000000606865e679308edf079991764d88e8122ca9250aef5386962b6e84",
"mrkl_root" : "618eba14419e13c8d08d38c346da7cd1c7c66fd8831421056ae56d8d80b6ec5e",
"time" : 1281891957,
"bits" : 469794830,
"nonce" : 28192719,
"n_tx" : 2,
"tx" : [
{
"hash" : "012cd8f8910355da9dd214627a31acfeb61ac66e13560255bfd87d3e9c50e1ca",
"ver" : 1,
"vin_sz" : 1,
"vout_sz" : 1,
"lock_time" : 0,
"in" : [
{
"prev_out" : {
"hash" : "0000000000000000000000000000000000000000000000000000000000000000",
"n" : 4294967295
},
"coinbase" : "040e80001c028f00"
}
],
"out" : [
{
"value" : 50.51000000,
"scriptPubKey" : "0x4F4BA55D1580F8C3A8A2C78E8B7963837C7EA2BD8654B9D96C51994E6FCF6E65E1CF9A844B044EEA125F26C26DBB1B207E4C3F2A098989DA9BA5BA455E830F7504 OP_CHECKSIG"
}
]
},
{
"hash" : "1d5e512a9723cbef373b970eb52f1e9598ad67e7408077a82fdac194b65333c9",
"ver" : 1,
"vin_sz" : 1,
"vout_sz" : 2,
"lock_time" : 0,
"in" : [
{
"prev_out" : {
"hash" : "237fe8348fc77ace11049931058abb034c99698c7fe99b1cc022b1365a705d39",
"n" : 0
},
"scriptSig" : "0xA87C02384E1F184B79C6ACF070BEA45D5B6A4739DBFF776A5D8CE11B23532DD05A20029387F6E4E77360692BB624EEC1664A21A42AA8FC16AEB9BD807A4698D0CA8CDB0021024530 0x965D33950A28B84C9C19AB64BAE9410875C537F0EB29D1D21A60DA7BAD2706FBADA7DF5E84F645063715B7D0472ABB9EBFDE5CE7D9A74C7F207929EDAE975D6B04"
}
],
"out" : [
{
"value" : 92233720368.54277039,
"scriptPubKey" : "OP_DUP OP_HASH160 0xB7A73EB128D7EA3D388DB12418302A1CBAD5E890 OP_EQUALVERIFY OP_CHECKSIG"
},
{
"value" : 92233720368.54277039,
"scriptPubKey" : "OP_DUP OP_HASH160 0x151275508C66F89DEC2C5F43B6F9CBE0B5C4722C OP_EQUALVERIFY OP_CHECKSIG"
}
]
}
],
"mrkl_tree" : [
"012cd8f8910355da9dd214627a31acfeb61ac66e13560255bfd87d3e9c50e1ca",
"1d5e512a9723cbef373b970eb52f1e9598ad67e7408077a82fdac194b65333c9",
"618eba14419e13c8d08d38c346da7cd1c7c66fd8831421056ae56d8d80b6ec5e"
]
}
value out = 92233720368.54277039 BTC?(Line 50)
那么,事情是如何发生的呢?还要回到代码上来看。从本质上讲,运行代码时,如果输出结果太大以至于在求和时溢出,那么检查比特币交易的代码就会无效,黑客意识到了这一点并利用了它。黑客在一次交易中创造了比以往任何时候都多8784倍的比特币。
如果当时中本聪没有及时纠正这个错误,比特币很可能已经死了,整个区块链世界也不复存在。因为一旦用户意识到他们可以随意创造任意数量的比特币,那么比特币的价格就会立即暴跌至零,比特币就会失去信任,中本聪的去中心化愿景也就无从谈起了。
中本聪是如何力挽狂澜的?
事件发生3小时内,中本聪在 Bitcointalk 上发帖称,他与早期比特币开发者 Gavin Andresen 一起,快速创建了一个代码修复程序。
在事件发生后的5小时内,中本聪发布了0.3.10版本比特币,该版本阻止修复了通过溢出漏洞大量生成比特币的 bug,并擦除了由黑客产生的1844.67亿比特币。
这是一个硬分叉,因此在0.3.10版本发布后的几个小时内,仍将存在两种不同版本的比特币。中本聪发帖称将密切监视另外一条链,并敦促矿工不要挖掘这条不良区块链,因为会导致花费更长的时间来使新链成为主链。
终于,在事发19小时后,中本聪发帖称,新的区块链在高度为74691的区块上超越了原有链,成为了比特币主链。从此,0.3.10 版本生成的比特币区块链就成为了我们今天使用的那条链。
不得不说,这真是惊叹地泣鬼神的事件了,说它是史上最大的黑客事件也不为过吧!
那么,类似于 The DAO 事件的补救方式,本次事件也进行了快速硬分叉。这种做法是否违背了去中心化愿景?是迫不得而为之吗?对此,你怎么看呢?
参考资料:
https://hackernoon.com/bitcoins-biggest-hack-in-history-184-4-ded46310d4ef
https://bitcointalk.org/index.php?topic=823.msg9573#msg9573
https://bitcointalk.org/index.php?topic=823.msg9734#msg9734
https://bitcointalk.org/index.php?topic=822.0
热 文 推 荐
print_r('点个好看吧!');
var_dump('点个好看吧!');
NSLog(@"点个好看吧!");
System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧!");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
fmt.Println("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo "点个好看吧!"