

过去半年里小太的日常:
“比太钱包的wallet.dat放哪里啦?”
“比太没有wallet.dat”
“不也许,所有的比特币钱包都有wallet.dat,没wallet.dat的如何能叫钱包?”
“@#$%^&*”

这个比特币老玩家们经常挂在嘴边的“wallet.dat”到底是何方神圣呢?
我们了解,从早期的比特币客户端(bitcoin-qt)开始,中本聪就设计了一个叫“wallet.dat”的文件,用来保存比特币私钥及相关交易。直到现在,官方的qt/core或者大部分第三方客户端都采取了类似的方案。
比特币玩家们通过尽力学习,掌握了比较多的wallet.dat使用“技巧”,比如说,如何备份wallet.dat,钱包丢失怎么恢复,甚至有人送比特币也是直接给一个wallet.dat(存储在光盘或U盘上)。对于大部分比特币用户来说,比特币就是wallet.dat,wallet.dat就是比特币。
当然,这也许并不十分具体,wallet.dat只是一种不太合理的文件传输模式(序列化或),比特币就是比特币,它与wallet.dat一点关系都没有。
比特币的产权无论是过去、现在而是今后,都只由一个东西来确认,那就是私钥。谁把握私钥,谁就控制着该地址上的比特币,弄丢私钥,比特币就没了。重要的是私钥,那交易呢?难道交易不重要吗?比特币的区块链总账上记录的不都是交易吗?
交易的确也很重要,历史交易记录决定了某地址上的比特币余额,决定了您能费用多少钱。但重要的是区块链(blockchain)上的交易,而不是您钱包文件wallet.dat里的交易。任何人都可以在自己的wallet.dat中编造出一个假的交易,尝试着去花费,只是其他比特币节点并不会接受这笔交易而已。

也就是说,wallet.dat中保存的这些交易,仅仅是硬件本来为了便于查询而采用的一种数据结构而已,毕竟,总不能每次查询相关地址的历史交易,就去检索整个区块链吧?
为了达到这个目的,将这些与钱包地址相关的比特币交易存放在wallet.dat中,就成了曩昔最常见的一种解决方案,跟这个文件打交道也就成了比特币用户们的“日常”。
那问题又来了,为什么要把交易和私钥存放在一起?
小太估计的答案是,中本聪最初就是这么设计的,后来你们也就再次这样做了。
这种设计的好处太多:(这只是小太为什么会抛弃bitcoinj而再次开发了bitherj的缘由之一)
1、每同步到一个新区块,都要升级wallet.datdat格式数据什么能打开,也就是说,要对保存私钥的文件进行写操作,这既存在性能难题,也提高了写坏私钥数据的潜在风险;

2、对于普通用户,备份wallet.dat的难度远小于直接备份私钥,风险其实也更高,备份文件的有效性也很难验证;
3、区块同步时会经常升级wallet.dat文件,杀进程可能会导致wallet.dat与存储中的wallet对象不一致,有时可能还要恢复,某些状况下或者应该重置整个区块链数据;
4、钱包的扩展性严格受制于wallet.dat,比如说,像交易所或电子商务解决方案提供商,就能够搭载bitcoin-core的解决方案。经常听你们说,“我们应该的地址很多,qt满足不了dat格式数据什么能打开,只能基于qt改”。其实认真一想,几百万甚至几千万条地址记录,对于技术来说,都不能算是大数据量,怎么反而成了困惑比特币行业的疑问呢?
5、无法推动冷热分离的建模,私钥和交易存放在一起,交易必须与区块链进行同步,这也就意味着私钥是“热”的,想“冷”?改程序吧;
把交易和私钥放一起的好处这么多,那我们又该如何办呢?
很简单,交易是交易,私钥是私钥,这二者本身就不是一回事,千万别放一起。
对于用户来说,最重要的永远是私钥,有了私钥,任何时候都可以想办法从比特币区块链上获得到相关的交易,比如运用SPV轻钱包方式与区块链进行同步,或者从可资信赖的第三方区块查询服务(blockchain.info、blockmeta.info等)API上获得交易数据,这些方法都可以,只要获得的数据与比特币区块链一致就没有问题。
钱包本身可以提供任何一种私钥存储模式,只要足够安全靠谱,文本、二维码、blockchain.info的json格式文件等,都是好办法。
这样,用户就无需学习wallet.dat,也不用再去备份这个文件。用户只应该知道一件事,私钥很重要,私钥决定产权,要备份、要保护的只是私钥。
因为乔布斯和他的iPhone,我们在使用智能电脑时已经不用学习“文件”这个恼人的概念。没想到比特币又让你们再次纠结起wallet.dat,这究竟是退步呢?还是退步呢?
忘了wallet.dat吧,管好您的比特币,不需要文件,只应该私钥。
作者:比太钱包
官方微博:@比太钱包
捐赠地址:
1BsTwoMaX3aYx9Nc8GdgHZzzAGmG669bC3
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/shumachanpin/article-128545-1.html
不卡
我不觉得自己多勇敢