本文解释了比特币节点的功能、验证交易的原理,以及全节点(归档节点和剪枝节点)与轻钱包的区别,并阐述了运行比特币节点的重要性,包括提高隐私性、支持比特币网络去中心化、参与规则共识等,同时也讨论了运行节点的成本。
作者:Ted Stevenot
大多数人都知道,比特币没有执法者(ruler),但确实有规则(rules)。这些规则得到维护,对每个持有比特币的人都很重要。但是,没有权威,比特币的这些规则是如何得到执行的呢?答案是,由遍布全世界的许多比特币用户所运行的成千上万个节点所组成的网络来维护。
比特币节点是一类计算机软件,可以连接到比特币的点对点网络中。节点会根据网络规则来验证、接收和发送新的比特币交易(transaction)。要理解比特币节点会做什么以及它是如何工作的,我们要从理解比特币的两个最根本的部分( 账本 和 规则集)开始:
一般来说,个人电脑和便宜的专用电脑(比如 树莓派)就可以运行比特币节点。在更低功耗的硬件(比如智能手机)和远程硬件(比如云服务器)上运行也可以,但一般不推荐这样做。
最流行的比特币节点软件是 Bitcoin Core,你可以 免费下载。
一笔比特币交易被签名授权后,它就会被广播给网络中的所有节点。收到这笔交易的节点会立即根据规则集来验证它是不是一笔有效的交易,以此决定要不要把它转发给自己知道的其它节点。
节点会追问下面几个问题:
每一个节点都根据规则集,对每一笔待打包的交易运行独立的验证。这个过程是:
区块在节点间传播和验证的冗余,提高了欺骗任何一个节点和一群节点(让他们接受无效信息)的难度,降低了下列风险:
理解节点的角色还需要你基本了解比特币挖矿,因为两者是相辅相成的。待确认交易(pending transactions)就是还没有添加在区块链上的交易,需要传播给矿工,由矿工从中挑选出一些,加入到包含待确认交易的区块模板中。
- 比特币交易的传播、验证和确认 -
然后,赢得工作量证明竞赛的矿工会将自己挖出的新区块传播到网络中。即使到这时候,验证的流程也会继续:节点会检查矿工挖出的区块,进一步确认其有效性。矿工在组装交易到区块时,必须验证遵守规则集。要是他们不遵守,节点就会在验证的时候拒绝这样挖出的区块,而挖出该区块的矿工就无法得到该区块的区块奖励(增发的比特币),也无法得到该区块所包含的交易的矿工手续费。
平均每 10 分钟,会有一个新的区块被某个矿工添加到比特币账本中。当新区块被添加到账本中时,它会跟前面的区块产生关联。整体上,这些前后串连的区块就成了所谓的 “区块链”。每当有区块添加到区块链上,整个区块链的体积就增加一些。下一节我们会讲到,比特币区块链的体积增长会增加比特币节点的负担。
全节点 指的是包含完整的区块链规则集、可以独立验证比特币的软件。有两种类型的全节点: 归档节点 和 剪枝节点。
归档节点 有时也叫 “监听节点”,它是保存了全部历史区块(包含了自中本聪在 创世块 中挖出第一笔比特币以来的所有比特币的流转事件)的全节点。这些信息会在归档节点本地保存,并在其它节点索要时分享给他们。
归档节点面临的挑战之一是,随着区块链本身的体积增长,下载和存储完整副本的难度或者说成本也会上升,而区块链的体积会随着区块被挖出而持续增加。为帮助控制文件的体积并让节点更亲民,全节点可以搭配比特币账本的 “剪枝” 副本来运行。
剪枝节点 就是抛弃某个时间点以前的区块链,并使用较为节省空间的压缩区块来代替这个时间点以前的详细交易历史。
- 来源: 比特币白皮书 -
修剪节点并不会限制其独立验证的能力 —— 因为区块之间是有数据关联的,剪枝节点利用这一点就可以保持验证的能力。即使剪枝节点在压缩数据以外没有保留别的数据,它们也被认为是免信任的,因为它们可以从头验证所有区块数据。
剪枝节点中的压缩区块,实际上是这些区块的数据的 “ 哈希值”(摘要)。因为它们的体积更小,压缩区块减少了运行剪枝节点所需的存储空间。在验证过程中,这些区块摘要也是可以依靠的,因为如果输入的数据与真正的区块不符,其哈希值也会不同,立即就能被检测出来。
剪枝节点的一个缺点在于,它没法向其它全节点分享完整的区块链,也无法在本地检索历史数据(举个例子,这在运行闪电节点时是有必要的)。在有需要时,剪枝节点必须向归档节点请求数据,因为后者才保存了完全的交易历史。
“轻钱包”,也叫 “瘦客户端”、“轻客户端” 或者 “轻节点”(虽然它并不真的是节点),它没有比特币账本的拷贝,也无法像全节点那样验证交易。
轻钱包依赖于第三方运行的完整的比特币节点来获得区块链数据。这意味着,轻钱包的用户必须信任自己所连接到的节点(以及这个节点背后的实体)。
绝大部分的轻钱包都使用简易支付验证(SPV) —— 一种最先在比特币白皮书中介绍的技术 —— 来最小化验证交易时所需的信任。在验证交易时,SPV 验证区块的摘要(同时也是执行比特币规则集的子集)。但是,SPV 节点并没有消除所有信任因素。如中本聪在白皮书中所说的,“当且仅当诚实节点控制着网络时,SPV 是可以依靠的”。一旦有所疑虑,请运行自己的节点。
轻钱包很常见,也被大多数比特币用户所用。你在使用 BlueWallet、Trezor Suite 乃至 Ledger Live 而不运行自己的节点时,你就是在使用轻钱包。轻钱包将区块链存储和编制索引的负担交给了第三方,这使得轻钱包很容易安装,只需要最小的存储空间和带宽就可以使用,而且同步起来非常快。
轻钱包还面临着隐私上的牺牲,因为一些个人信息,比如 IP 地址、钱包地址和交易历史,都必须分享给第三方。也有一些例外正在开发中,比如为闪电网络设计的 Neutrino 轻钱包,可以实现高度的隐私性。
比特币节点不等同于比特币矿工。节点只是比特币的信使和规则维护者,而矿工是抄写员。矿工会运行计算密集型的工作量证明算法(而节点不会)。矿工依赖于节点来知晓新的交易,也依赖于节点来传播和验证自己挖出的区块。
因为节点并不参与工作量证明挖矿的过程,他们也并不需要付出比特币矿工那么多的能源和算力。工作量证明是难以计算但易于验证的。虽然节点在验证和转发关于新区块和待确认交易上扮演着关键的角色,他们无力在比特币区块链上增加新交易。
在了解这么多关于节点的知识之后,你可能会好奇,我们个人需不需要运行节点呢?其实,运行节点有许多好处,但也有一些成本。你要自己衡量其优点和缺点,自己决定是否要运行节点。
运行自己的节点可以帮助你提高隐私性。有了节点,你就可以重播和验证自己的比特币交易,还可以搜索区块链上的信息,不必假手于他人。而且,你可以直接验证和确认自己的钱包收到的任何比特币交易。
当你要使用第三方的服务来完成这些操作时,你的 IP 地址会暴露,也许攻击者可以定位你的地理位置、将你的个人信息与你的交易历史关联起来、找出关于你的更多信息以及跟你交易的人。运行你自己的节点,这样暴露的风险就小了很多。
运行节点也会提高你对计算机、比特币和比特币区块链的了解。这些知识和经验可以帮助你提高从比特币中得到的效用,并让你可以帮助其他人。
运行你自己的节点可以帮助转发和验证交易和区块,这也是帮助比特币网络保持更新、良好运行。如果你运行了全节点,你可以分享 “初次区块同步( initial block download)” 所需的信息;新节点要借助初次区块同步来下载区块链以及验证网络的当前状态。这就是在帮助比特币网络。
此外,因为运行节点会存储区块链并执行比特币的规则集,你就帮助了比特币网络的去中心化。
这也会帮助你保护你在比特币上的投资,因为你参与到了比特币规则集的共识过程。运行了节点,你就参与到了决定哪个升级(比如 Taproot 和 covenants)可以部署到网络的过程中。你的节点持续执行比特币的规则集,也可以帮助维护比特币的独特属性,比如比特币的 2100 万 BTC 供给量上限。
在大多数情况下,运行节点的总开销都是很小的,但可以分为如下几类:
(完)
虽然 Unchained Capital 的客户端使用 SPV 轻钱包模式,你在使用 Caravan(我们的开源金库恢复工具)时也可以直接连接到你自己的节点。要获得关于 Caravan 的最新使用提示,请关注我们的 YouTube 频道。
你也可以登录我们的 在线讨论会,了解如何如何使用 Unchained IRA 来控制你的私钥同时获得税收优惠、如何使用 Unchained 多签名金库 来自主保管比特币同时消除单点故障。
- 本文转载自: btcstudy.org/2022/06/02/... , 如有侵权请联系管理员删除。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!