1. 比特币网络
比特币网络是一个去中心化的点对点网络,节点之间可以直接进行交易。网络上有不同类型的节点。
1.1 比特币网络的节点
比特币网络的节点有两种主要类型:全节点也称为完整节点和简单支付验证(Simple Payment Verification,SPV)节点。
全节点可以执行比特币钱包、矿工、完整区块链存储和网络路由等全功能的比特币核心客户端的实现。但是,并不是所有节点都必须执行全部功能。
简单支付验证节点或轻量级客户端仅执行比特币钱包和网络路由功能。
比特币协议的最新版本是 70015,并由比特比核心客户端 0.13.2 版本引入。
有些节点更喜欢成为包含完整区块链的完整区块链节点,因为它们更安全并在区块传播中起着至关重要的作用,而另外一些节点则仅执行网络路由功能,而不执行挖矿或存储私钥(钱包)功能。还有一种类型是个体矿工节点,可以执行挖掘、存储完整的区块链并充当比特币网络由节点。
1.2 比特币网络常用的协议消息
比特币网络通过不同的魔数值(Magic Values) 来识别,如下表所示:
网络 | 魔数值 | 十六进制 |
main | 0xD9B4BEF9 | F9 BE B4 D9 |
testnet3 | 0x0709110B | 0B 11 09 07 |
交换 getaddr 和 addr 消息以查找客户端不知道的对等方。同时,任何一个节点都可以发送 ping 消息以查看连接是否仍处于活动状态。 getaddr 和 addr 消息是在比特币协议中定义的类型。下图显示了此过程:
节点还将检查标头链是否具有比区块更多的标头,然后通过发出 getdata 协议消息请求区块,如下下图所示:
1.3 Wireshark
要可视化对等方之间的消息交换,可以使用 Wireshark。
Wireshark 可以用作了解比特币协议的宝贵工具。下面将通过一个显示 version、verack、getaddr、ping、addr 和 inv 消息的基本示例来介绍它。
在消息的详细信息中,可以看到一些有价值的信息,例如数据包类型、命令名称和协议消息的结果,如下图所示:
上图显示的是一个协议,该图显示了两个对等方之间的数据流,通过该图可以了解到节点何时启动以及使用了哪种类型的消息。
下图所示的示例中可以看到消息的交换,如 version、getaddr 和 getdata,以及一些描述消息名称的适当注释。
2. 比特币钱包
比特币钱包软件用于存储私钥或公钥以及比特币地址,它可以执行不同的功能,例如接收和发送比特币。如今,软件通常提供两种功能:比特币客户端和比特币钱包。在磁盘上,比特币核心客户端比特币钱包被存储为 Berkeley DB 文件。
比特币钱包软件通过随机选择 256 位数字来生成私钥。生成规则是预定义的。比特币钱包使用私钥对外交易并进行签名。比特币钱包不存储任何硬币,也没有为用户存储余额或硬币的概念。实际上,在比特比网络中,并不存在硬币。取而代之的是,只有交易信息存储在区块链上(更确切地说是UTXO,未使用的交易输出),然后将其用于计算比特币的数量。
在比特币中,可以使用不同类型的钱包来存储私钥。作为软件程序,它们还可以向用户提供一些额外功能。以在比特币网络中管理和执行交易。
2.1 非确定性钱包
这些钱包包含随机生成的私钥,因此也被戏称为一堆密钥钱包(Just a Bunch Of Key,JBOK)。比特币核心客户端在首次启动时会生成一些密钥,以及在需要时生成一些密钥。
对于非确定性钱包来说,管理大量密钥非常困难,并且容易出错,这也可能导致盗窃和丢失硬币。
此外,用户还需要创建密钥的常规备份并采取适当的方式保护它们,例如加密密钥以防止盗窃或丢失。
2.2 确定性钱包
在这类钱包中,密钥是通过哈希函数从种子值中派生出来的。该种子值是随机生成的,通常由人类可读的助记码(Mnemonic Code) 单词表示。助记码单词在 BIP 39 中进行了定义,其中包含用于生成确定性密钥的助记码的比特币改进建议。
2.6 硬件钱包
除纸钱包外,在物理上保证钱包安全的另一种方法是使用防篡改设备存储密钥。这种防篡改设备可以定制制造,随着支持近场通信(Near Filed Communication,NFC)的手机的出现,它也可以是 NFC 手机中的安全元件(Secure Element,SE)。
Trezor 和 Ledger 钱包是最常用的比特币硬件钱包。下图展示的就是 Trezor 钱包的照片。
3. 比特币支付
可以使用各种技术接受比特币作为支付手段。在许多司法管辖区中,比特币未取得合法货币的地位,但也有很多在线商人和电子商务网站将其视为一种付款方式。买家可以通过多种方式给接受比特币的业务付款。例如,在网上商店中,可以使用比特比商家的解决方案;而在传统的实体商店中,可以使用销售点终端和其他专用硬件。客户可以简单地扫描其中包含卖方付款统一资源标识符(Uniform Resource Identifier,URI) 的二维码,然后使用移动设备付款。比特币 URI 允许用户只需单击链接名扫描二维码即可付款。URI 是代表交易信息的字符串。它在 BIP 21 中定义。二维码可以显示在销售终端附近。几乎所有的比特币钱包都支持此功能。
4. 比特币的创新
比特币经历了多次修改,并且仍在不断演变。通过解决系统中的各种弱点,它逐渐发展成为越来越可靠的系统。多年以来,比特币的性能一直是比特币专家和发烧友之间争论的焦点。因此,最近几年提出了各种建议来改善比特币性能,从而在协议级别提高交易速度,增强安全性、支付标准化和整体性能。
这些改进建议通常以 BIP 或比特币协议新版本的形式提出,从而形成一个新的网络。提案的某些更改可以通过软分叉实现,很少有需要硬分叉的情况。