分享

更多

   

没有wallet.dat文件,就不是比特币钱包么?

2018-09-02  quasiceo
区块链百科玩币族2017-11-20 13:12:03  阅读 35721评论 0

  过去半年里小太的日常:

  “比太钱包的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.dat,也就是说,要对存放私钥的文件进行写操作,这既存在性能问题,也增加了写坏私钥数据的潜在风险;

  2、对于普通用户,备份wallet.dat的难度远大于直接备份私钥,风险当然也更高,备份文件的有效性也很难验证;

  3、区块同步时会一直更新wallet.dat文件,杀进程可能会导致wallet.dat与内存中的wallet对象不一致,有时可能需要修复,某些情况下甚至需要重置整个区块链数据;

  4、钱包的扩展性严格受制于wallet.dat,比如说,像交易所或电子商务解决方案提供商,就无法采用bitcoin-core的解决方案。经常听他们说,“我们需要的地址太多,qt满足不了,只能基于qt改”。其实仔细一想,几百万甚至几千万条地址记录,对于数据库技术来说,都不能算是大数据量,怎么反倒成了困扰比特币行业的问题呢?

  5、无法实现冷热分离的模型,私钥和交易存放在一起,交易需要与区块链进行同步,这也就意味着私钥是“热”的,想“冷”?改程序吧;

  把交易和私钥放一起的坏处这么多,那我们又该怎么办呢?

  很简单,交易是交易,私钥是私钥,这两者原本就不是一回事,千万别放一起。

  对于用户来说,最重要的永远是私钥,有了私钥,任何时候都可以想办法从比特币区块链上获取到相关的交易,比如采用SPV轻钱包模式与区块链进行同步,或者从可资信赖的第三方区块查询服务(blockchain.info、blockmeta.info等)API上获取交易数据,这些方式都可以,只要获取的数据与比特币区块链一致就没有问题。

  钱包本身可以提供任何一种私钥存储方式,只要足够安全可靠,文本、二维码、blockchain.info的json格式文件等,都是好方法。

  这样,用户就无需学习wallet.dat,也不用再去备份这个文件。用户只需要明白一件事,私钥很重要,私钥决定产权,要备份、要保护的也是私钥。

  因为乔布斯和他的iPhone,我们在使用智能手机时终于不用学习“文件”这个恼人的概念。没想到比特币又让大家重新纠结起wallet.dat,这到底是退步呢?还是退步呢?

  忘了wallet.dat吧,管好您的比特币,不需要文件,只需要私钥。

  作者:比太钱包

  官方微博:@比太钱包 http://weibo.com/bither

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。如发现有害或侵权内容,请点击这里 或 拨打24小时举报电话:4000070609 与我们联系。

    猜你喜欢

    0条评论

    发表

    类似文章 更多
    喜欢该文的人也喜欢 更多