
节点与钱包分别承担什么工作
理解这些术语,可以从两个问题入手:链上信息如何核验,操作授权如何表达。节点侧重按照协议规则验证和提供数据;钱包侧重管理密钥、展示相关信息及处理签名。两者可以配合,也可以集成在同一软件中,但功能并不相同。
钱包显示余额,并不意味着资产记录保存在钱包程序里。链上记录与本地密钥承担不同作用,因此,保存链上数据与保存签名能力也属于不同任务。
节点、客户端与验证者
以太坊文档将节点描述为接入网络的客户端运行实例。客户端是实现协议的软件;一个完整的以太坊节点需要执行客户端与共识客户端协作,分别处理交易执行、状态数据和共识规则。验证者软件承担额外的共识参与职责。
这里的软件组合适用于以太坊,不能直接套用于所有区块链。节点与客户端的区别,则可以理解为运行实例与软件实现的区别。运行节点也不自动意味着成为验证者。
全节点、归档节点与轻节点
全节点验证区块及状态;归档节点还保留历史状态,便于查询过去某个区块时的账户情况。轻节点依靠较少的数据和相关证明进行核验,需要向其他节点获取更多信息。
区分这些类型时,要同时看验证方式和数据保留范围。能够验证链上数据,不等于本地已经保存每个历史时点的状态;适合查询最新状态的配置,也未必适合大量历史查询。
钱包、公钥、私钥与钱包文件
比特币开发文档区分钱包程序和钱包文件:程序处理接收信息、签名和网络交互等功能,文件则可保存私钥及相关信息。私钥用于生成签名,公钥用于相关验证;地址可以采用公钥哈希或脚本哈希等形式,并不总是公钥本身。
这些概念解释了为何公开接收信息与保管签名凭据需要分开考虑。地址、公钥、私钥不是可以互换的名称,查看某个地址的信息,也不代表拥有对相关资产的支配能力。
常见问题:钱包必须联网或运行完整节点吗
钱包系统的签名与联网功能可以分离。离线钱包和硬件钱包能够承担签名任务,由联网程序获取链上信息、传递已签名数据。仅观察钱包可以跟踪相关记录,但没有相应私钥就不能完成对应签名。
因此,使用钱包不一定需要自行运行完整节点,签名设备也不一定直接接入区块链网络。判断一个钱包的功能时,应分别看它从哪里取得数据、在哪里完成签名,以及谁控制密钥。