开发者参考
这是参考层:在阅读比特币代码或解码一笔原始交易时会遇到的 P2P 消息类型、脚本操作码、RPC 字段名和协议结构,而不是购买时会遇到的东西。
之所以有这一层,是因为 Bitcoin Core 开发者术语表(这些词至今多半还在那里查)自2021年以来几乎没有变化,其中若干词条已不再描述现在的软件。它所记录的 BIP70 支付协议,已在0.20.0版本中从 Bitcoin Core 删除。它的布隆过滤器词条描述的机制,从0.19.0版本起 Bitcoin Core 已不再默认提供。这里把每一条都对照代码现在的行为重新写过,并明确写出更正,而不是悄悄套用。
这些词分成几组。inv、getdata 和 MSG_FILTERED_WITNESS_BLOCK 这样的消息类型属于 P2P 协议。OP_RETURN 和 OP_CHECKSIG 这样的操作码属于脚本(Script)。签名哈希标志、序列号和锁定时间决定一个签名究竟承诺了什么。X509 和支付请求词条属于历史内容,并且会这样说明。
多数读者永远不需要这个分类,这没有问题。它之所以在这里,是为了让对确切字段名的搜索能落到一个准确解释它的页面,而不是一个只有一行的存根页。
47个术语。最近审阅:2026年11月8日。
开发者参考中的术语
- 标签比特币 URI 中的标签用于标明收款的个人或商家,在钱包中则是您为地址或交易添加的私人备注。
- 操作码又称 Opcode、数据推入操作码、非数据推入操作码、比特币脚本操作码操作码(opcode)是 Bitcoin Script 中的单个字节,用于告知验证节点下一步该做什么:要么将数据压入堆栈,要么对堆栈中已有的数据执行一项操作。
- 点函数点函数通过将 secp256k1 的生成元点乘以私钥这一数值,把私钥转换为公钥,它是所有比特币地址赖以构建的单向步骤。
- 根证书根证书是证书链顶端自签名的信任锚,之所以被信任,只是因为您的操作系统或浏览器厂商将其预置在了系统中。
- 公钥脚本又称 scriptPubKey、锁定脚本、Pubkey script公钥脚本是附在每个交易输出上的一小段比特币脚本(Bitcoin Script),规定了该输出中的比特币再次转移之前必须满足的条件。
- 见证脚本见证脚本包含 P2WSH 输出的真实花费条件,随见证数据一同传输,其字节按通常成本的四分之一计权。
- 描述符校验和描述符校验和是输出描述符中井号之后的八个字符代码,属于 BCH 码,可在钱包导入错误密钥之前发现键入和复制错误。
- 内部字节序内部字节序是比特币在序列化结构内部使用的排列方式:整数按最低有效字节在前的顺序写入,哈希摘要则按 SHA-256生成的顺序写入。
- 签名脚本又称 scriptSig、解锁脚本签名脚本是输入所携带的解锁数据,用于满足其所花费输出的公钥脚本,在现代 SegWit 输入中该脚本为空。
- 收据比特币中的收据是指您保留的、证明付款已发生的任何证据:在 BIP70 中它是商家签名的确认回执,实际操作中则是交易 ID。
- 赎回脚本又称 Redeem script赎回脚本是隐藏在支付到脚本哈希(pay-to-script-hash)输出背后的完整花费合约,由花费方附在签名脚本末尾提供,并通过哈希运算验证其是否匹配。
- 叶证书叶证书是您实际连接的服务器出示的终端实体证书,它证明的是对某个域名的控制权,而不能证明域名背后的人是谁。
- 证书链证书链是一份有序的证书列表,把服务器出示的证书与您的设备已经信任的根证书连接起来,每一环都由下一环签名。
- 支付协议(BIP70)又称支付协议、BIP70、Payment protocol支付协议(BIP70)是比特币曾尝试用经签名、由证书背书的支付请求取代裸地址的方案,Bitcoin Core 在0.20.0版本中移除了对它的最后支持。
- 中间证书中间证书位于根证书和叶证书之间,由根证书签发,并为叶证书签名,因此根证书的私钥可以保持离线、不被使用。
- Bitcoin Script又称比特币脚本比特币脚本是每笔比特币输出所携带的一种基于栈的小型脚本语言,用于设定在这些比特币再次被花费之前,花费者必须满足的条件。
- Bitcoin URI又称 BIP21Bitcoin URI 将一笔付款的详细信息整合为一个可点击的字符串,该字符串以 bitcoin:开头,可包含地址、金额和标签。
- CompactSize又称 Compact size unsigned integer、VarInt、变长整数CompactSize 是比特币在序列化数据中为计数和长度添加前缀所用的变长整数,小于253的值占1个字节,其余最多占9个字节。
- MSG_BLOCKMSG_BLOCK 是清单类型2,即节点在 getdata 消息中使用的代码,用于按哈希值向对等节点请求一个完整的区块。
- MSG_CMPCT_BLOCKMSG_CMPCT_BLOCK 是编号为4的清单类型,是仅用于请求的代码:它从不出现在通告中,只能用于发送给事先已同意使用它的对等节点的 getdata 消息。
- MSG_FILTERED_WITNESS_BLOCK带见证数据的过滤区块类型位于 BIP144 的保留类型列表和 Bitcoin Core 的源代码枚举中,但两处都没有任何实现。
- MSG_TXMSG_TX 将一个清单条目标记为交易,类型代码为1,您尚未确认的付款正是通过它在任何对等节点看到其内容之前向对等节点公布的。
- MSG_WITNESS_BLOCK见证区块清单类型是支持隔离见证的节点以扩展序列化格式请求区块的方式,区块附带所有签名,而不是将其剥离。
- MSG_WITNESS_TX见证交易请求以 getdata 消息发送,用于通知对等节点返回所指定的交易,并保留其签名数据,而不是将其剥离。
- OP_CHECKMULTISIGOP_CHECKMULTISIG 可一步完成一组签名与一份公钥列表的验证,而 Taproot 花费完全不能使用它,因为它会阻碍批量验证。
- OP_CHECKSIGOP_CHECKSIG 从堆栈中取出一个公钥和一个签名,并验证该签名确实对本笔交易作出了承诺,这是真正证明您拥有这些比特币的检查。
- OP_DUPOP_DUP 复制栈顶元素以便使用两次,这正是标准的 pay-to-public-key-hash 脚本既能对您的公钥计算哈希、又能用它进行验证的原因。
- OP_EQUALOP_EQUAL 逐字节比较栈顶的两个元素,并压入真或假的结果,它是每个 pay-to-script-hash 输出中的最后一个操作码。
- OP_EQUALVERIFYOP_EQUALVERIFY 比较栈顶的两个元素,若二者不同则立即终止脚本,传统(legacy)支出正是以此证明其出示的公钥无误。
- OP_HASH160OP_HASH160 对栈顶元素先执行 SHA-256,再对结果执行 RIPEMD-160,得到20字节的摘要,也就是以1或3开头的每个地址中所含的同一指纹。
- OP_RETURNOP_RETURN 是一种操作码,可使交易输出被证明无法花费,从而允许将少量任意数据写入区块链,而不会使有效币的集合膨胀。
- OP_VERIFYOP_VERIFY 弹出栈顶元素,除非该元素为真,否则中止整个脚本,从而使比特币脚本(Bitcoin Script)中的任何检验都成为硬性要求。
- PaymentDetailsPaymentDetails 是 BIP70 的内层消息,实际描述一笔付款:向哪些输出付款、付多少、请求何时过期,以及将已签名交易发送到何处。
- PaymentRequestPaymentRequest 是 BIP70 的外层信封:它将序列化的 PaymentDetails 数据块与证书链和签名封装在一起,使付款方可以核实是谁在发出请求。
- PKI又称公钥基础设施、公钥基建PKI(公钥基础设施)是由证书颁发机构、证书和信任库构成的体系,使软件能够判断一个公钥是否确实属于与其绑定的名称。
- PP amountPP amount 曾是 BIP70 输出中以聪计价的字段,商家希望由付款方自行决定发送金额时,该字段设为零。
- PP expiresPP expires 曾是 BIP70 PaymentDetails 消息中可选的 Unix 时间戳,用于告知钱包:该时刻一过,就不再处理这笔付款请求。
- PP memoPP memo 曾是 BIP70 允许商家、付款方或确认收款的服务器附在付款上、供人阅读的自由文本 UTF-8备注。
- PP merchant dataPP merchant data 曾是 BIP70 商家放入支付请求、并原样取回的一段不透明字节串,用于将收到的比特币与订单对应起来。
- PP pki dataPP pki data 是 BIP70 支付请求中的一个字段,用于承载商户的证书,采用 DER 编码,叶证书在前,其后是任何中间证书(如有),不包含根证书。
- PP pki typePP pki type 是 BIP70 支付请求中的一个单词字符串,用于说明商家如何对该请求签名:none、采用 SHA-256的 x509,或采用 SHA-1的 x509。
- PP scriptPP script 曾是 BIP70 输出中的必填字段,包含付款方必须原样复现的原始锁定脚本,其字节与最终写入交易输出的字节相同。
- r 参数r 参数是 BIP72 为比特币 URI 增加的参数,它以一个 URL 取代支付地址,您的钱包应从该 URL 获取已签名的支付请求。
- RPC 字节序RPC 字节序是比特币软件显示32字节哈希时采用的反转方式,也是您从钱包或区块浏览器复制的每个交易 ID 所采用的形式。
- SSL 签名SSL 签名是 BIP70 给对支付请求(PaymentRequest)进行签名的字节所起的名称,签名使用的是网络服务器证书的密钥,而这一叫法在当时就已不准确。
- URI 二维码URI 二维码是编码 bitcoin: URI 的方形黑白图案,相机可以读取其中的地址和金额,免去手动输入。
- X.509证书又称 X.509 certificate、数字证书X.509证书是一种经过签名的文件,将公钥与名称和有效期绑定在一起,也是您连接交易所时每一次 HTTPS 连接所依据的格式。
其余13个板块
- 基础概念比特币是什么,聪是什么,以及术语表其余部分所依托的几个基本概念。
- 地址与密钥币被发送到哪里,私钥究竟控制什么,以及一组助记词如何生成成千上万个地址。
- 钱包与托管热钱包、冷存储、托管型和多重签名,以及它们各自如何改变谁能动用您的币。
- 隐私与安全夺走人们比特币的各种攻击,以及阻止它们的习惯和工具。
- 交易与手续费一笔比特币交易由什么构成,为什么收费是这个数,以及如何让卡住的交易恢复通行。
- 购买与交易所订单类型、价差和费率表:交易所向您收费时使用的词汇。
- 市场与投资市值、波动率和现货 ETF。价格的语言,而不是价格预测。
- 挖矿与共识新区块如何产生,难度调整的是什么,以及在无人主管的情况下规则为何依然成立。
- 协议与升级SegWit、Taproot、软分叉和 BIP:比特币如何变化,由谁来决定。
- 闪电网络与 Layer 2支付通道、发票和路由,用于转移比特币而无需为区块中的空间付费。
- 监管与税务KYC、旅行规则、MiCA 和资本利得:触及您的账户和纳税申报表的规则。
- 文化与历史Mt. Gox、创世区块、HODL,以及塑造人们谈论比特币方式的事件和俚语。
- 节点与软件Bitcoin Core、全节点、修剪和 RPC:执行规则的软件。
常见问题
这个分类是写给谁的?
任何阅读比特币源代码、解码原始交易,或基于 P2P 协议和 RPC 接口工作的人。它是参考层,而不是购买层,拥有或花费比特币完全不需要其中的任何内容。
什么是比特币脚本(Bitcoin Script)?
一种小型的基于栈的语言,用来决定一枚币是否可以被花费。它刻意没有循环,这使得每段脚本的成本在运行前就可以预知。多数交易使用少数几种标准模式之一。
为什么字节顺序总在变?
因为比特币显示哈希时的顺序,与它存储哈希时的顺序相反。内部字节顺序是协议所使用的,而 RPC 输出和区块浏览器则把它反过来。把两者混用,是典型的第一个错误。
权威文档在哪里?
在源代码和 BIP 里,而不是任何一个网站上。这里的词条在有规范的地方引用规范,并在较旧的开发者文档已经过时的地方予以更正,而不是照搬。