理解比特币不同的网络
通常,普通的比特币持有者并不知道存在多个区块链。大多数人透明地连接到主网络,因为钱包软件默认在真实价值的网络运行。事实上,你将发现 3 个不同的比特币网络,它们各自具有自己的特点。
作为用户,我希望你知道比特币由庞大的点对点网络支持。更准确地说,有 2 个公共子网络:
带有“3”后缀表示第 3 代测试网。在正常操作中,钱包客户端连接到主网,这是唯一一个比特币在现实生活中具有具体价值的网络。测试网的名称不言而喻,它是测试和软件开发的最佳选择,因为测试币毫无价值。
第三个网络是一个虚拟网络,称为 回归测试网络(Regtest) 。该名称代表“回归测试”,它是比特币核心的一种特定模式,其中本地区块立即被挖掘。因此,回归测试与主网和测试网3 有很大不同,主网和测试网3 中矿工必须遵守一定的共识规则。快速区块让回归测试变得有趣:它使得可以使用极少的处理能力创建自定义区块链。
主网和测试网 3 主要在 p2p 访问的默认 TCP 端口和传输数据包的前缀(小端)上有所不同:
端口 | 数据包前缀 | |
---|---|---|
主网 | 8333 | f9 be b4 d9 |
测试网3 | 18333 | 0b 11 09 07 |
此外,测试网3 的验证规则要宽松得多,从而为实验性交易留出空间。
除了创世区块,区块链完全与网络无关。也就是说,区块和交易不包含任何关于其所在网络的信息。仅凭交易数据本身无法确定广播交易的网络。顺便说一句,交易可以原样发布到主网和测试网3。
为了避免歧义,用户共享的实体(即私钥和地址)通过添加魔术前缀使其依赖于网络。稍后我们将学习这些前缀是什么,以及它们如何影响密钥和地址的显示方式。
有些实体即使是普通比特币用户也必须处理:密钥和地址。为了使它们比十六进制更短且稍微更易读,比特币引入了 Base58 编码。Base58 是 Base64 的简化版本,Base64 是一种广泛使用的方案,用于在 ASCII 文本中显示二进制数据。以下是 Base58 的不同之处:
+
和 /
。0
、O
、I
、l
以避免视觉歧义。完整的 Base58 字母表:
值 | 字符 | 值 | 字符 | 值 | 字符 | 值 | 字符 |
---|---|---|---|---|---|---|---|
0 | 1 | 15 | G | 30 | X | 45 | n |
1 | 2 | 16 | H | 31 | Y | 46 | o |
2 | 3 | 17 | J | 32 | Z | 47 | p |
3 | 4 | 18 | K | 33 | a | 48 | q |
4 | 5 | 19 | L | 34 | b | 49 | r |
5 | 6 | 20 | M | 35 | c | 50 | s |
6 | 7 | 21 | N | 36 | d | 51 | t |
7 | 8 | 22 | P | 37 | e | 52 | u |
8 | 9 | 23 | Q | 38 | f | 53 | v |
9 | A | 24 | R | 39 | g | 54 | w |
10 | B | 25 | S | 40 | h | 55 | x |
11 | C | 26 | T | 41 | i | 56 | y |
12 | D | 27 | U | 42 | j | 57 | z |
13 | E | 28 | V | 43 | k | ||
14 | F | 29 | W | 44 | m |
有了这样的映射,Base58 编码只是一个数字基数转换。唯一棘手的部分来自大数字,正如在 base58.h 中所见。请注意字节序,与大多数区块链对象相反,Base58 字符串是大端编码的。
由于 Base58 字符串很长且不友好,通常会附加校验和后缀以避免输入错误。校验和由 hash256(有效负载)的前 4 个字节组成。格式(有效负载 + 校验和)称为 Base58Check。步骤:
Base58Check 示例将在第二部分中讨论。
完整源代码在 GitHub 上。
你已经了解到有 3 个不同的比特币网络。真实货币流通在主网上,而测试货币存放在测试网3 上。回归测试用于测试本地的自定义区块链。所有用于比特币转账的长字符串都是 Base58 编码的。
在下一篇文章中,我将通过键序列化和 地址(典型的交易终点)完成整体图景。如果你喜欢这篇文章,请分享。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!