# 比特币及比特币钱包入门基础

By [Cheng](https://paragraph.com/@98989) · 2021-11-08

---

在开始正题前，首先，我们需要了解几个最为“基础”的概念：

1.私钥：
-----

对于比特币用户来说，最难理解的就是这个“私钥”，丢币是因为私钥，保管不好的也是私钥，那到底什么是私钥呢？其实很简单，您只需要记住这么一句话就够了“私钥就是个随机数”，这句话很简单，但其实大部分人都没搞懂，包括很多比特币“老人”们在这一点上也都是糊里糊涂的，我曾不止一次听到行业内大佬们说：“什么？如果别人生成了和我一样的私钥，我的比特币就没了？那也太不安全了吧”，这都是不懂的。

是的，私钥就是个随机数，大家或多或少对于随机数还是有概念的，比如说，抛硬币就是个随机数（不是正面，就是反面），扔骰子也是个6种可能性的随机数，比特币私钥也一样，只不过，这个随机数的概率空间很大（256位，也即是2的256次方），2的256次方是个什么概念呢？比宇宙中的分子还要多。

也就是说，别人是不可能和你生成一样的私钥的（1/2^256的概率），如果两次产生了相同的私钥，那一定是程序写错了，不可能是碰撞出来的，历史上几次因随机数导致的丢币（比如说 blockchain.info 曾经出过2-3次随机数事件），都是因为程序写错了，而不是碰撞出来的，对于 2^256 来说，碰撞是不可能碰撞出来的，这是比特币甚至整个密码学科的根基。

好了，现在大家知道了，比特币私钥就是一个很大的、256位的随机数，那为什么我们通过比特币客户端看到的私钥是一串 5 或 K 或 L 开头的文本呢？其实这串文本只是私钥的显示方式而已，我们总不能把二进制“0、1”的私钥直接显示给用户，因此进行了相应的转换，不过无论其显示的格式如何，本质上，私钥还是那个范围在 2^256 随机数中的随机数。

一般来说，私钥这个随机数都是通过计算机算法来生成的（密码学安全的随机数生成器），当然，你也可以通过抛256次硬币或者是扔100次骰子的方式来获得这个随机数（这两种方式都能产生出 2^256 范围内的随机数），然后用这个随机数来当成私钥，这其实也没问题，只不过需要把这个随机数转换成上面提到的显示格式，就足够了，当然，大家一般不会这么去做，毕竟麻烦。

能理解了上述内容，您就是真的懂了私钥的本质 - “私钥就是个随机数。”

2.地址：
-----

说完私钥，我们再来谈谈地址，我们不去谈那些诸如“公私钥对儿、椭圆曲线、数字签名、SHA256”等密码学概念，只谈地址这个比特币世界里最常用的东西。地址是通过私钥计算而来的，具体怎么算的，大家不用去管，只需要知道私钥能计算出地址，地址不能反算出私钥，这是前提。比特币地址是1开头的，从一个私钥计算出其对应的地址之后，您就可以往该地址上转比特币了，转入的比特币只有私钥的持有者才能花，就这么简单。比如说我们团队的捐赠地址是 1BitherUnNvB2NsfxMnbS35kS3DTPr7PW5 ，这个地址的私钥是我所持有的，任何转入到这个地址上的比特币也就只有我能花，同样简单，这个地址上当前有3个多币，有兴趣的可以去查查看。

3.区块链：
------

理解了私钥和地址，我们再来说说区块链这个火热的概念，其实区块链这个词也是被很多人给神化了，本质上，区块链其实是中本聪为了比特币所设计的一个“用来去中心化的存储比特币账目”的数据结构，所以，本质上，区块链就是个“账本”，区块链上记录的都是 A 给 B 转账了 5 个比特币这类的信息，就这么简单。但是为了能做到去中心化，还得能进行自我验证（账目都得验证，不能做假账），因此，① 这个账本被设计成了区块的结构，每过一段时间就会生成出一个新块，把账目做到新的区块中，做进区块的账目就不能再被修改了；② 这个账本中的账目还别设计成了链表（既前后链接的数据结构），这样，每一笔账目都能最快的查询到上一笔来进行验证，一笔一笔的沿着链条向前验证，最终，任何一笔交易都能验证到最初的原始交易（也就是最初挖矿的那笔交易）；这样就做到了去中心化及自我验证，这就是区块链这个数据结构的目的。

好了，现在我们讲完了私钥、地址和区块链这三个比特币最为基础的概念，对于初步了解比特币来说，这其实已经足够了，甚至已经比大部分业内人士强了。

了解了以上三个概念之后，您就应该理解如下事实：

1.私钥决定了比特币的产权，如果想花掉一个地址上的比特币，很简单，您得有私钥，没私钥？抱歉。

2.一定要保管好私钥，私钥丢了，币就花不了了，私钥被别人看到了，币就丢了。所以，请做好备份，请做好加密，如果可能的话，请尽可能的“冷”（也就是保持离线、断网），记住，被别人看到了，钱就没了，一定不要让别人看到。

3.地址是公开的，请广而告之，如果您拥护该地址的私钥，任何转入该地址的比特币都只有您能花。

4.账目都是去中心化的存储在区块链上的，也就是存储在比特币网络的每一个节点上的，并不是存储在私钥或者地址上的，所以，一个地址当前的余额是多少，这类的问题需要问区块链，区块链上有着比特币历史上的全部账目，账目都是公开的。

  

讲了这么多，大家也基本上了解了比特币，那什么是**比特币钱包呢**？

其实也很简单，比特币钱包其实就是“私钥、地址和区块链数据的管理工具”，比如说，私钥这个随机数得生成吧？生成之后得计算出地址吧？相关的区块链数据得维护吧？收到的、花出的账目也都得列出来吧？得能用来收款，也得能进行付款吧？

毫无疑问，所有这些都得通过工具来完成，这类的工具我们统称为“比特币钱包”。

钱包不少、功能各异，我这里先给大家简单分分类；根据区块链数据的维护方式，我们可以把钱包分为：

1.**全节点**（如 bitcoin-core 核心钱包），维护着全部的区块链数据（当前在50GB以上），完全去中心化，同步所有数据；

2.**SPV轻钱包**，只维护与自己相关的区块链数据，基本上去中心化（要依赖比特币网络上的其他全节点），仅同步与自己相关的数据；

3.**中心化钱包**，不依赖比特币网络，只依赖自己的中心化服务器，不同步数据，所有的数据均从自己的中心化服务器中获得；

从去中心化角度上讲，我们希望更多的人使用全节点钱包，这样比特币网络上的节点数也会更多，不过，由于区块链的数据量太大，严重影响了普通用户的体验，因此，当前越来越流行 SPV 轻钱包模式，越来越多的钱包解决方案也开始转向 SPV。中心化钱包由于不依赖比特币网络，有着流量和体验上的优势，不过因其要依赖第三方中心化的服务，服务不可用则钱包不可用，用户也需要信赖该第三方服务才行。

根据所使用的硬件设备，我们可以把钱包分为：

1.电脑钱包，钱包软件运行于桌面操作系统（Windows、MacOS、Linux等）；

2.手机钱包，安卓、iOS等；

3.在线钱包（如 blockchain.info ），运行与云服务，私钥加密存储于服务器上，通过浏览器访问；

4.硬件钱包，运行与专门定制的硬件上，可能需要与电脑或手机配合使用；

除了上述分类方式外，还有一种所谓的“链上 on-chain、链下 off-chain”的分类方式，这又产生出了一种“钱包”，叫“off-chain 钱包”。

其实，从本质上讲，我们并没有一种比特币交易叫“off-chain 交易”，也不应称这类的服务为“off-chain 钱包”，我们应该称其为“银行”或者是“存币平台”，因为在这种情况下，您手里所谓的一个比特币，其实只是该平台上的一个数字，而并非是比特币网络上真实的比特币，而是该平台欠您的钱，所以，我们应尽可能避免称这类平台为“钱包”。

比如说，交易所其实就是存币平台，各类的理财平台、云算力平台等也都是存币平台，这些平台都属于“off-chain”的范畴，我们应称他们为“银行”或“存币平台”，而不要称他们为“off-chain 钱包”。

我在这里反复强调“on-chain、off-chain”这两个词，其实也是不得已而为之，因为无论是有意的、还是无意的，这个概念一直被混淆，比如说，去年，曾有人在微博上搞过一次投票，让大家票选最喜欢的比特币“钱包”，“比特币存钱罐”名列前茅，其实呢，该平台并不是“钱包”，而是一个高利息的“存币平台”，后来出了问题，所以，我们应分清楚“**on-chain、off-chain**”的区别，想明白是要自己拿着比特币？还是要把比特币交给别人管理？分清区别，做好决策，这很重要。

好了，这就是我本次和大家交流的主要内容，希望能帮大家搞清楚一些最基本的比特币概念，让大家在使用比特币的过程中少走一些弯路。

---

*Originally published on [Cheng](https://paragraph.com/@98989/l4yaTbCyeBPnaVUtR1vg)*
