大多数主要加密货币,如比特币、以太坊和莱特币,都基于开源代码。任何人都可以访问区块链背后的代码,修改它,并将其作为原始版本的替代品发布。这些开源项目发布的版本被称为 reference client。
Reference client 是根据规范精确编写的定制软件代码。这使得开发者在制作他们自己的定制版本时能够参照原始客户端。在协调开发者的工作和贡献时,这样的参照点是不可或缺的。大型加密货币通常有一个默认的参考实现,使得获取运行节点所需的个人客户端软件成为可能。
软件开发团队通常有某种形式的层级结构或领导层,并且对项目应该如何运作有一个愿景。这使他们能够创建工作计划,设定明确的目标,以及在必要时集中处理紧迫问题。
然而,在编写开源软件,如比特币的原始代码时,并没有单一的领导者,使任何人都可以根据自己的意愿改变它。有人可能会觉得增加区块大小是好的,而另一些人可能更倾向于保持现状,专注于故障排除。
不过,无论改变什么,除非区块链网络的足够大一部分同时进行相同的改变(参见我们关于分叉的文章了解如何将变化引入区块链),这些变化才能生效。因此,有必要找到一种方法,在开发者之间达成一致,这样他们就可以引入关键更新。他们可以通过专注于 reference client 的开发来实现这一点。
reference client 通常存储在基于云的存储库中,如 GitHub,这使任何开发者都可以提交代码并跟踪变化。
一个最受欢迎和广泛使用的比特币 reference client 是比特币核心 (Bitcoin Core),它是原始中本聪客户端(以比特币之父中本聪命名)的后代。由bitcoin.org托管,这个 reference client 构成了比特币重要更新的基础。
有时,一群有不同愿景的开发者选择在 reference client 的源代码中进行重大改变,迫使 reference client 分叉。从比特币核心分叉出来的版本包括 Bitcoin XT、Bitcoin Unlimited 和 Bitcoin Classic。比特币经典没有经受住时间的考验,而其余的停止了对比特币的支持,现在主要作为比特币现金的客户端。
与 XT 或无限不同,它们是从另一个客户端分叉出来的,有些 reference client 是从零开始创建的。尽管这对原始的中本聪客户端确实是如此,以太坊也有几个用多种不同编程语言编写的定制 reference client。Go 以太坊项目(Geth)提供了一个用谷歌的 Go 语言编程语言编写的客户端,Parity 使用 Rust,cpp-ethereum 使用 C++ 等等。
对于诸如加密区块链这样的开源项目,拥有标准的客户端实现至关重要。由于每个人都可以访问 reference client,开发变得更加容易,而且已经具有革命性的技术得到了升级,引入了重要改进并解决了潜在问题。
运行客户端是访问区块链的最直接方式。它允许你通过运行自己的节点成为网络上的真正对等者。但如果你实际上并不拥有任何加密货币,这是无关紧要的。获得一些硬币的最简单方法是在交易所用传统货币交易它们。