怎样选择和使用比特币钱包?

巴比特 view 42 2014-2-19 02:12
share to
Scan QR code with WeChat

大家经常性提到的比特币钱包,常指两样东西:一个是比特币钱包程序,一个是比特币钱包地址和对应的私钥。本文延用习惯性称呼,不刻意区分二者。

一、选择一款值得信赖的钱包       目前有多款比特币钱包可供选择:MultiBit、Armory、Electrum、在线钱包、Android钱包等等。这些钱包各有优势:瘦钱包不需要下载block chain,移动钱包方便交易支付。不过我还是推荐使用本地钱包bitcoin-qt。此时肯定有人会跳出来说:bitcoin-qt有block chain的BUG,会导致程序崩溃!是的,不得不承认它是有这样的问题,但对个人而言,block chain的BUG并不会让你的钱包私钥丢失,也就是说不会丢币,相比于之前Android钱包随机数生成漏洞造成丢币的问题来说真是无足轻重了。       bitcoin-qt使用OpenSSL库,OpenSSL是一个被广泛使用的开源的安全库,不存在所谓的随机数生成漏洞;bitcoin-qt自主生成钱包地址和私钥,自主保存私钥,不存在潜在的被他人控制的风险;bitcoin-qt用户群最为庞大,且有比特币世界最具权威的人在维护,最值得信赖。       凡是那种非自主生成钱包地址和私钥的钱包都需要提防;凡是那种要求导入私钥和密码的在线钱包都需要提防。总之一句话,自己保管私钥最安全。

二、不要把鸡蛋放在同一个篮子里       使用bitcoin-qt的过程中你可能感觉得到,它是鼓励大家同时使用多个钱包地址。通过bitcoin-qt可以很轻松地新建多个地址,为地址打上标签以区分比特币的不同收入来源。当比特币发送触发找零机制时,bitcoin-qt也是把找零的比特币发送回新的一个地址,而不是原地址。       这正是一种分散存放的思想,分散保存比特币于不同地址,这并不影响你的比特币总量,也不影响你进行比特币接收和发送(当然如果分得太细小,当你要支付一笔大额消费时可能需要支付更多一些的交易费),只要钱包文件没有丢失,你的比特币就尽在你的掌控之中。       为什么鼓励把比特币分散保存于不同的地址,我想是中本聪大神预见到以后可能出现的比特币寻宝机,一种通过随机猜测命中比特币地址同时取得私钥的机器,我称其为比特币终结者,我准备在下一篇文章《比特币终结者探索》里探讨这个问题。

三、别依赖他人生成的比特币地址和私钥       你们觉得@货币大叔的比特币地址帅不帅:1Bitcoin4yZjSSPoXUceJaiyQLABx7B2LL       如果你遇到有人向你兜售这样的地址,千万不要买!!!也可能有好心人送你一个这样的地址,千万不要用!!!你能保证他就不会备份私钥?如果他备份了私钥,你能保证他就一定不会取走你的比特币?用上别人提供的地址,你的资产状态可能被人监控,你的资产随时有可能被别人全部拿走。       如果你真的好想要一个这样的地址,那我只能说:你一定要自主生成!!!你问我怎么生成?哦,请参考:http://8btc.com/thread-886-1-1.html       vanitygen这个工具做得还是很强大的:支持正则表达式;支持从文件中读取一堆前缀进行匹配;支持多线程。祝你找到一个自己满意的地址哦!

四、加密你的电子钱包       记得前不久有人说一朋友电子钱包被盗了,损失了上百个比特币,其丢币的原因是自己的电子钱包没有加密。所以我在这里要特别强调:一定要对电子钱包加密!!!如果你的钱包加了密码,就算是被人得到的电子钱文件,他可以看到你的钱包里的钱,但他却只有干看着流口水的份!当他尝试发送的时候就会要求输入密码,此时他只能捶胸顿足吧。       当然你的密码要足够健壮哦,特殊符号+大写字母+小写字母+数字一个都不能少!至于密码位数嘛,bitcoin-qt推荐设置10位以上,我认为嘛,多一点比较好,比如我的密码有35位。肯定有人会说密码可能会忘记,那样所有的钱就全丢了,是吧。谁说一定要记了?!好记性不如烂笔头,你找个本儿记下来呀,然后把本儿放进你的保险柜里。

五、电子钱包备份与keypool       电子钱包要经常备份,这可能对于有一点比特币常识的人都知道。但是,电子钱包备份也可能不安全!长铗呼吁大家发送一次比特币就备份一次电子钱包,请参考:http://www.8btc.com/lost-large-number-of-bitcoins       这太惊弓之鸟了吧!我的建议是:搞明白keypool的原理,做到了然于心就能艺高人胆大了。       bitcoin-qt启动时如果在datadir中没有找到wallet.dat文件会自动生成至少100个私钥到keypool而形成wallet.dat文件。只有当发送比特币时触发了找零机制才会到keypool中找一个未使用的私钥和地址来接收找零。请参考:http://www.8btc.com/joybtc_5       如果你的交易非常频繁,经常发送比特币触发找零机制,100个私钥的key pool是否太容易用完?如果是的话,那你可以根据你的实际使用情况适当调整keypool的大小,比如1000。更改keypool大小设置一般有两种方法:一种是在bitcoin.conf中设置keypool=1000,一种是在bitcoin-qt的入参中加入-keypool=1000。如果具体操作方法不清楚,可以参考BigChubbyCat的文章:http://www.8btc.com/disk,-keypool的设置类似于文章中的-datadir的设置。       设置好了keypool大小只是完成了第一步,此时你的电子钱包里还是只有100个私钥,还需要做一步操作,那就是到RPC控制台执行keypoolrefill命令。方法是菜单栏“帮助”->“调试窗口”->“控制台”,然后在命令输入框输入“keypoolrefill”回车执行。

怎样选择和使用比特币钱包?

如果你已经加密了电子钱包,那这个命令会执行失败,显示“Error: Please enter the wallet passphrase with walletpassphrase first. (code -13)”,没有关系,先临时解锁你的电子钱包就好。方法与输入keypoolrefill一样,只是这个命令有参数,格式:walletpassphase ,这里的就是电子钱包的密码,是超时时间,单位秒,超时时间到了之后电子钱包会再次加锁。示例:walletpassphase Hello&World520Program@yeah 480       多提一句,keypoolrefill命令会随你设置的keypool大小不同而需要不同的执行时间,不要以为程序死了,在执行过程中请耐心等待一会。

拥有和保存比特币,需要通过客户端,通常把该软件称为钱包。目前,整个比特币项目由Bitcoin Foundation来开发与维护,通常把他们称为官方团队。官方推出的客户端是Bitcoin Qt, 由C++编写核心功能,GUI界面由Python Qt完成。不含有GUI界面的被成为bitcoind,许多服务与核心功能均由其实现。运行bitcoind的通常称为节点(Bitcoin Node), 一个节点通常拥有完整的BlockChain数据,并实时与外界网络同步更新。

怎样选择和使用比特币钱包?

钱包中通常含有:

公钥、私钥、地址

与钱包中地址相关的交易信息

其他辅助数据

最核心的数据就是密钥,拥有密钥便拥有一切,相关信息均可由其而来。钱包并不一定需要包含完整的BlockChain数据,不包含BlockChain数据的钱包称为轻钱包(Light Weight Wallet)。对于大部分日常使用来讲,轻钱包便足够了。

分类

完全节点型(Full Node):含有BlockChain所有完整数据

简易节点型(SPV Node):Header-Only Clients,仅有Block头部信息,无需交易数据

CS型(Server-Client):服务端-客户端模式,大部分数据存储在服务端

BS型:所有数据均通过浏览器在线使用

Bitcoin Qt,因为其是一款完整的钱包软件,需要下载大约超过10GB的BlockChain数据(24万个block),对于大部分人来讲,是没有必要的。目前,官方主页上默认推荐的客户端已经不再是Bitcoin Qt, 而是MultiBit(支持Windows, MacOS和Linux的轻钱包);移动端目前最好用的是Bitcoin Wallet(安卓平台),iOS平台由于政策原因,一直未有出色的软件,Blockchain.Info为iOS提供了一个简单的钱包软件,Blockchain for the iPhone。还有就是在线钱包,如优秀的BlockChain.Info,其安全性均超过自行保存管理,推荐使用之。

最近还有一种流行的钱包:脑钱包。因其安全性较低,并不推荐大家使用,仅临时性场合使用之。其原理是由一串密码短语,通过Hash运算,得到密钥,只要记住这串密语即可使用钱包。因为密码短语符合大家习惯和记忆特点,可以通过计算大量常见组合来破解。除了暴力破解的问题外,失忆是最大的风险,比如摔个跟头跌成脑震荡,或长期不用自然忘得一干二净。

选择&存储

日常使用的额度通常小于10个币,可以存放在电脑或手机App中。通常存放1个币以下是比较保险的,丢了不太心疼嘛

持有几十、几百个币的,可以选择BlockChain.Info,Inputs.io等在线钱包。其也可以当做日常钱包使用。

持有上千甚至数万的,应该分开存储,并隔离存放。使用离线电脑生产密钥,打印出来托管至银行等高安全场所存储,并销毁现有密钥。同时还需要多份隔离存储,甚至对密钥进行加密。

密钥即一切,如不慎弄丢钱包,便永远失去这笔比特币。所以钱包需要小心妥善保管,不在自己的PC或者手机App中存储大量比特币,丢失的风险太高,病毒木马、硬件损坏、手机丢失等均造成无法挽救的损失。俗话讲鸡蛋不要搁在一个篮子里,多种方式存储也是降低风险的有效方式。目前丢失的比特币或有数百万BTC之巨。

常见钱包

Bitcoin-Qt – 官方客户端,基于C++/Qt,全平台,完全数据。

MultiBit – 全平台,轻钱包,官方推荐

Electrum – 著名轻钱包

Armory – 基于Python,含有诸多特性的轻钱包

BlockChain.info – 非常著名在线钱包

Inputs.io – 著名在线钱包

开发库

bitcoind – 官方客户端,无GUI,开发者必备

libcoin – libcoin

libbitcoin – asynchronous C++ library for Bitcoin

cbitcoin – A low-level bitcoin library written in standard C

Bitcoinj – a Java implementation of the Bitcoin protocol

gocoin – Bitcoin client library for Go / golang

pynode – Bitcoin P2P router, in python

bitcointools – Python-based tools for the Bitcoin cryptocurrency system,By Gavin Andresen

bitcoin-abe – Abe: block browser for Bitcoin and similar currencies

数据检索

BlockChain.info

Bitcoin Block Explorer

btcfans公众号

Scan QR code with WeChat

Disclaimer:

Previous: 比特币的冷储存技术浅谈 Next: 超级玩家如何看待比特币?

Related