自缘其说
首发于自缘其说

比特币实践入门

比特币是什么

简单地说,比特币是一种虚拟货币,不同于人民币、美元这种由中央政府监管、中央银行发行的法币,比特币不受任何中央政府控制,没有纸质代表,有的只是一个运行在计算机上的一段程序。

比特币的技术核心在于去中心化的分布式系统,是P2P网络的一个典型应用,和传统的Client-Server模型的架构有着本质的差异。以支付宝为例,虽然支付宝的服务端背后是个复杂的分布式系统,但是支付宝的后端分布式系统顶多算是局域网的分布式系统,如果支付宝的所有服务器(或者一部分)宕机,那么你在支付宝上的钱肯定就不能用了。所以我们在支付宝的钱是严重依赖于支付宝的服务器的,支付宝服务器就是中心。而你的比特币余额其实并不依赖任何一家公司的服务器,它依赖的是整个互联网,只要整个互联网还存在,你的比特币就不会消失(除非被盗)。因为你的比特币账户的所有交易记录存储在多个节点上,运行比特币客户端的机器都是这个比特币网络的一个节点,这个节点既是客户端,又是服务端。

本篇文章主要介绍如何通过实践学习比特币,更多原理可以参考相关专业书籍,同时推荐一个播客 #82 聊聊比特币背后的技术和Blockchain

比特币开户

在支付宝开户只要打开官网注册一下,填写手机号、密码等信息就可以获得一个支付宝账户了,那么如何获得一个比特币账户呢?比特币的官方网站选择钱包 - 比特币 推荐了很多比特币钱包,这些钱包是比特币软件,下载之后可以按照指导生成一个比特币钱包,同时会分配给我们一个私钥,由于私钥不好记,多数钱包都会使用算法把私钥转换成12个便于记忆的英文单词,有人称之为密语,无论如何用户都要保管好密语或者私钥,因为私钥代表了一切,只有拥有私钥才能访问自己的比特币账户。我选择的是MultiBit HD钱包:


还有一个在线的网站 Bitcoin Block Explorer - Blockchain 也可以用来生成一个比特币账户,这是一个链上(on chain)的比特币网站,会给你生成一个真实的在区块链上的比特币账户,即使blockchain.info网站倒闭,你的比特币仍然可以使用,同时可以通过导出密语或者私钥的方式在其他比特币钱包客户端恢复你的账户。相反,一个链下(off chain)的比特币网站,会给你分配一个网站自己的账户,然后很多网站会员会共享一个比特币账户,非常不推荐这种方式,因为网站一旦打不开,你就无法使用你的比特币。

blockchain.info生成的比特币账户要及时备份恢复短语(密语 key words),就是12个简单的英语单词,之前是支持直接导出私钥的,现在是用BIP/44算法来生成密语用于恢复钱包。这里注意在用比如MultiBit客户端恢复钱包时要选对密语使用的算法,由于blockchain.info的密语是用的BIP/44的算法,所以在这个地方千万不要选错,否则你可能会发现两个不同的客户端比特币金额竟然不一样,stackExchange上也有人出现过这个问题:


交易

细心的读者可能已经发现我的比特币账户余额已经不是0了,那么如何获取比特币呢?传统的获取比特币的方式是挖矿,挖矿的过程其实是获取记账权之后的一笔奖励,这些人被称为矿工;或者直接通过真实的货币在交易所购买;还有一种方式,是通过境外网站点击广告获得比特币的奖励,比如BTCClicks Earn Bitcoins - Bitcoin Advertising - Bitcoin PTC .

无论哪种方式,我们都需要将自己的比特币地址告诉别人,别人才能给我们的账户转账,同一个比特币账户可以生成不同的比特币地址,最安全的做法是每次交易都用一个新的地址。最开始说到比特币是运行在一个分布式系统之上的,分布式系统都有CAP只能满足其一的问题,而比特币系统本质上就是个事务敏感型的分布式交易系统,但是这个交易系统并不保证强一致性,只保证最终一致性,交易最终是可靠的,一次交易超过6次确认之后就变成不可逆地被确认了,当然后续还是可以继续增加被确认次数,比如我的这笔交易到写这篇文章为止已经被确认742次:


总结

学习比特币的目的除了投资之外,对于技术人员来说,最有趣的还是用来学习比特币背后包含的区块链技术、分布式系统、加密算法等这些充满极客精神的元素,比如涉及到的非对称加密算法现在其实已经大量地应用在实际生活中了(如大行其道的HTTPS),理解甚至掌握这些技术对于希望把握未来的互联网人来说至关重要。

编辑于 2017-04-05

文章被以下专栏收录