比特币开发者术语
这是一个专业术语汇编。普通用户应该使用词汇表页面。
百分之 51 攻击 / 主要攻击
控制大多数网络哈希率的某人修改交易历史并阻止新交易确认的能力。
地址
使用 Base58 编码格式化的 20 个字节的哈希值,用来生成 P2PKH 或 P2SH 类型的比特币地址。 目前用户交换支付信息的最常见方式。
不要混淆: IP 地址
Base58 编码
比特币中用于转换 160 位的哈希值到 P2PKH 和 P2SH 地址的方法。 也用于比特币的其他部分,例如用于 WIP 格式备份编码的私钥。 与其他的 base58 实现不同。
不要混淆: P2PKH 地址,P2SH 地址,IP 地址
区块
以区块头开头并受工作量证明保护的一笔或多笔交易。 区块是存储在区块链上的数据。
区块链 / 最佳区块链
区块链,每个区块都引用其前面区块。 最难重建的链是最佳区块链。
不要混淆: 区块头链
区块头 / 头部
单个区块的 80 个字节的区块头,被反复地散列以创建工作量证明。
高度 / 区块高度
区块链上指定区块前的区块数。 例如,因为创世区块前面没有区块,所以其高度为 0。
区块奖励
矿工可能要求一定金额作为创建区块的奖励。 等于区块补贴(新的可用的聪)加区块交易支付的交易费的总和。
不要混淆: 区块补贴,交易费
最大区块大小
共识规则允许一个区块的以字节为单位的最大尺寸。 当前区块大小限制是 1,000,000 字节。
不要混淆: 区块,区块链,区块链大小
区块初次同步
通过从对端下载每个区块并进行验证来同步区块链。
不要混淆: 区块头初次同步
布鲁姆过滤器
主要由 SPV 客户端使用过滤器,用来从全节点请求匹配的交易和默克尔区块。
不要混淆: 布鲁姆过滤器(通用计算机科学条目,比特币的布鲁姆过滤器是一个特定的实现)
链代码
在 HD 钱包中,256 位熵被添加到公钥和私钥中,来帮助它们生成安全的子密钥; 主链代码通常派生自携带主私钥的种子。
找零地址 / 找零输出
交易的输出把聪返给付款人,从而防止过多的输入转到交易费中。
不要混淆: 地址重用
子密钥 / 公共子密钥 / 私有子密钥
在 HD 钱包中,从父密钥派生的密钥。 该密钥可以是私钥,也可以是公钥,密钥的推导(派生)可能需要链代码。
不要混淆: 公钥(从私钥派生,非父密钥)
创币交易字段
一个特殊的字段,作为创币交易的唯一输入。 创币交易字段允许声明区块奖励并提供高达 100 个字节的任意数据。
不要混淆: 创币交易,Coinbase.com
创币交易 / 创造交易
区块的第一笔交易。 该区块总是通过矿工创建,它包含一个创币交易字段。
不要混淆: 创币交易字段(创币交易的一部分)
压缩大小
一种长度可变的整数,常用于比特币 P2P 协议和比特币序列化的数据结构。
不要混淆: 整形变量(比特币核心用于本地数据存储的数据类型),压缩(用于区块头中的难度对应值 nBits 的数据类型)
压缩的公钥
33 字节的椭圆曲线公钥而非 65 字节的未压缩公钥。
确认分数 / 确认数 / 确认的交易 / 未确认的交易
分数表明在最佳区块链上需要修改的区块数,用来移除或修改特定的交易。 确认的交易有一个或更高的确认分数。
共识
当几个节点(通常是网络上的大部分节点)在它们本地验证过的最佳区块链中都有相同的区块。
不要混淆: 社会共识(通常用于开发人员之间的讨论,以表明大多数人同意某个特定的方案),共识规则(允许节点维持共识的规则)
共识规则
全节点遵循与其他节点相同的共识的区块验证规则。
不要混淆: 共识(当节点遵循相同的共识规则就达成了共识)
孩子为父母付钱 / CPFP / 祖先挖矿
挖矿选择的交易不仅基于它们的交易费,还基于它们祖先(父母)交易和后代(孩子)交易的交易费。
不要混淆: 通过费用替代,RBF
衡量单位 / 比特币 / 聪
比特币值的衡量单位,通常用一些比特币来衡量,但有时用聪的数倍来衡量。 一个比特币等于 100,000,000 聪。
不要混淆: 二进制位,有两种可能取值的数据单元。
难度 / 网络难度
相对找到最简单的区块的难度,找到一个区块有多难。 最简单区块的工作量证明难度为 1。
不要混淆: 目标阈值(计算难度得到的值)
DNS 种子
DNS 域名解析服务器返回比特币网络上的全节点的 IP 地址集来帮助进行对端的发现。
不要混淆: HD 钱包种子
双重花费
使用与已经广播交易相同输入的交易。 当有一个交易已经记录在区块链上时,将被当作重复,欺骗或转换的尝试。
托管合同
一种交易,付款人和收款人把资金放入 2 比 2(或其他的 m 比 n)的多签输出中,均不会花费资金,直到都满足某些外部条件。
扩展的密钥 / 扩展的公钥 / 扩展的私钥
在 HD 钱包的情况中,使用链编码扩展的公钥或私钥允许它们导出子密钥。
分叉
当 2 个或 2 个以上的区块有相同的高度时,区块链分叉。 特别是发生在 2 个或 2 个以上的矿工几乎同时找到区块时。 也可以用于攻击。
不要混淆: 硬分叉(共识规则的变化会破坏不升级节点的安全性), 软分叉(共识规则的变化会削弱不升级节点的安全性), 软件分支(当一个或多个开发人员与其他开发人员永久地分开开发一份代码库), Git 分支(当一个或多个开发人员与其他开发人员临时分开开发一份代码库)
创世区块 / 0 号区块
比特币区块链上的第一个区块。
不要混淆: 创币交易(区块上的第一笔交易)
硬分叉
区块链上永久性的分叉,通常发生在未升级的节点不能验证通过遵守新的共识规则的升级的节点创建的区块时。
不要混淆: 分叉(所有节点遵循相同的共识规则的常规的分叉,一旦一条链的工作量证明高于另一条,该分叉被解决), 软分叉(区块链上由未升级的节点不遵循新的共识规则导致的临时分叉), 软件分支(当一个或多个开发人员与其他开发人员永久地分开开发一份代码库), Git 分支(当一个或多个开发人员与其他开发人员临时分开开发一份代码库)
加固的扩展密钥
HD 钱包扩展密钥的一个变体,只有硬化的扩展私钥才能生成子密钥。 防止链代码加任何私钥的组合使整个钱包处于风险中。
HD 协议 / HD 钱包
分层确定性(HD)密钥创建和传输协议(BIP32),允许从父密钥的层次创建子密钥。 使用 HD 协议的钱包称为 HD 钱包。
HD 钱包种子 / 根种子
用作为 HD 钱包生成主私钥和主链代码的种子的潜在短值。
不要混淆: 助记代码 / 助记种子(二进制根种子格式化为单词,使人们更容易记录和记忆)
区块头链 / 最佳区块头链
区块头链,每个区块头都链接其前面的区块头; 最难重建的链是最佳区块头链。
不要混淆: 区块链
区块头初次同步
通过在下载整个区块前下载区块头来同步区块链。
不要混淆: 区块初次同步(直接下载整个区块,不首先获取它们的头)
高优先级交易 / 免费的交易
没有支付交易费的交易,因为他们的输入空闲时间够长足以积累大量的优先级。 注:矿工选择是否接受免费交易。
初始化区块下载 / IBD
用于通过新节点(或长时间离线的节点)下载大量的区块来赶上最佳区块连的链尖的过程。
不要混淆: 区块初次同步(同步包含获得任意数量的区块;IBD 仅用于大量区块)
交易输入 / TxIn
一笔交易的输入包含 3 个字段:输出点,签名脚本,和序列号。 输出点引用前一笔交易输出且签名脚本允许花费它。
内部字节序
显示为字符串的散列摘要的标准字节序—相同的格式用于序列化的区块和交易。
不要混淆: RPC 字节序(反转的字节序)
库存
一种数据类型标识和一个散列值; 用于识别通过比特币 P2P 网络下载的交易和可用的区块。
不要混淆: 库存消息(传输库存的 P2P 消息)
锁定时间 / nLockTime
交易的一部分用于表明交易可能被添加到区块链的最早时间或最早的区块。
主网
比特币交易的原始和主要网络,其中的聪有真正经济价值。
不要混淆: 公共测试网(非常类似主网的开放网络,其中的聪没有价值),回归测试网(类似于测试网的私有测试节点)
交易可变性 / 交易延展性
某人改变的未确认交易且不使其无效的能力,这会改变交易号,使子交易无效。
不要混淆: BIP62(可选的新交易版本的提议,减少了常见交易的已知变化集)
矿工激活的软分叉 / MASF
通过矿工信号激活的软分叉。
不要混淆: 用户激活的软分叉(通过标记日或节点强制而非矿工信号激活的软分叉), 分叉(所有节点遵循相同的共识规则的常规的分叉,一旦一条链的工作量证明高于另一条,该分叉被解决), 硬分叉(区块链上因未升级的节点不遵循新的共识规则导致的永久性的分叉), 软分叉(区块链上由未升级的节点不遵循新的共识规则导致的临时分叉), 软件分支(当一个或多个开发人员与其他开发人员永久地分开开发一份代码库), Git 分支(当一个或多个开发人员与其他开发人员临时分开开发一份代码库)
主链代码 / 主私钥
在 HD 钱包中,主链代码和主私钥是从根种子派生的 2 个数据。
默克尔区块
连接匹配布鲁姆过滤器的交易到区块的默克尔树根的部分默克尔树。
不要混淆: 默克尔区块消息(传输默尔克区块的 P2P 协议消息)
默克尔树根
默克尔树的根节点,树中所有哈希对的后代。 区块头必须包含一个该区块中所有交易的有效的默克尔树根。
不要混淆: 默克尔树(默克尔树根是根节点的树),默克尔区块(连接根到一笔或多笔叶子交易的部分默尔克分支)
默克尔树
通过散列配对的数据(叶子)构建的树,然后对结果进行配对和散列直到剩余单个散列值,即默尔克树根。 在比特币中,叶子几乎总是来自单个区块的交易。
不要混淆: 部分默克尔分支(连接一个或多个叶子到根的分支),默克尔区块(连接一笔或多笔交易从单个区块到区块默尔克根的部分默尔克分支)
消息头
比特币 P2P 网络上所有消息前缀的 4 个头部字段。
最小中继费 / 中继费
最小交易费,用于中继到其他节点的交易必须支付给全节点的费用(如果它不是高优先级交易)。 并没有最低中继费—每个节点选择它自己的决策。
不要混淆: 交易费(最小中继费是过滤过低交易费交易的决策选项)
挖矿 / 矿工
挖矿是创建有效的比特币区块的行为,需要验证工作量证明,且矿工是挖矿的设备或拥有那些设备的人。
多签 / 足够的多签
公钥脚本提供给 n 个公钥并需要对应的签名脚本提供对应提供公钥的最少 m 个签名。
不要混淆: 包含在 P2SH 里的多签脚本,需要多个签名而不用 OP_CHECKMULTISIG 或 OP_CHECKMULTISIGVERIFY 的高级脚本
难度对应值 / 目标值
该目标值是低于必须使区块有效的区块头散列值的阈值,并且难度对应值出现在区块头中,是目标阈值的编码形式。
不要混淆: 难度(一个数字,用于衡量寻找区块头哈希的难度,相对于最容易目标值寻找区块头哈希的难度)
节点 / 全节点 / 归档的节点 / 已修剪的节点 / 对端
连接到比特币网络的计算机。
不要混淆: 轻量节点,SPV 节点
空数据交易 / OP_RETURN 交易 / 数据传输交易
在比特币核心 0.9.0 版或更新的版本中,中继和挖矿的交易类型,添加任意数据到可证明不可花费的公钥脚本,全节点不必存储在它们的 UTXO 数据库中。
不要混淆: OP_RETURN(用于 OP_RETURN 交易一个输出的操作码)
操作码 / 数据推送操作码 / 非数据推送操作码
来自比特币脚本语言的操作码在公钥脚本或签名脚本内部推送数据或执行函数。
孤儿区块
父区块没有被本地节点处理的区块,以至于它们还不能被完全验证。
不要混淆: 陈旧的区块
输出点
用于引用特定交易输出的数据结构,由 32 字节的交易索引和 4 字节的输出索引序号(vout)组成。
不要混淆: 交易输出,TxOut(和输出一样)
输出 / 交易输出
一笔交易的输出包含 2 个字段:转账 0 或更多聪的字段和指明必须满足哪些条件才能进一步使用这些聪的公钥脚本。
不要混淆: 输出点(某交易输出的引用)
P2PKH 地址 / P2PKH 输出
比特币付款地址,包含哈希的公钥,允许付款人创建标准的支付给公钥哈希(P2PKH)的公钥脚本。
不要混淆: P2PK 输出(直接支付给公钥的输出),P2SH 地址 / 输出(包括哈希的脚本和其相应的输出的地址)
P2SH 地址 / P2SH 输出
比特币付款地址包含一个哈希的脚本,允许付款人创建一个标准的支付到脚本哈希(P2SH)的公钥脚本。 该脚本几乎可能是任何有效的公钥脚本。
不要混淆: P2PK 输出(直接支付到公钥的输出), P2PKH 地址 / 输出(由散列的公钥和其相应的输出组成的地址), P2SH 多签(P2SH 特定的实例,其中脚本使用一个多签操作码)
P2SH 多签
P2SH 输出,其中兑换脚本使用其中一个多签操作码。 直到比特币核心 0.10.0 版,P2SH 多签脚本是标准交易,但大多数 P2SH 脚本不始。
不要混淆: 多签公钥脚本(也称作“裸多签”,这些多签脚本不使用 P2SH 封装), P2SH(通用 P2SH,其中 P2SH 多签是比特币核心 0.10.0 版特殊情况下的特定实例)
父钥 / 公共父密钥 / 私有父密钥
在 HD 钱包中,该密钥用于生成子密钥。 该密钥可能是私钥或公钥,且密钥的生成可能也需要链编码。
不要混淆: 公钥(从私钥派生,非父密钥)
支付协议 / 支付请求
该协议在 BIP70(和其他 BIPs)中定义,让付款人从收款人获取签名的支付细节。
不要混淆: IP 到 IP 支付协议(包含在比特币早期版本中的不安全,已停止的协议)
私钥
密钥对的私有部分,用于创建其他人都能使用公钥验证的签名。
不要混淆: 公钥(从私钥派生出的数据),父密钥(用于创建子密钥的密钥,不一定是私钥)
工作量证明 / POW
低于目标值的散列,一般只能通过执行一定量的暴力工作获得—因此论证了工作量证明。
公钥脚本 / 脚本公钥
包含在输出中的脚本,用于设置必须满足用于花费的聪。 在签名脚本中提供满足条件的数据。 公钥脚本在代码中被称为脚本公钥 “scriptPubKey”。
不要混淆: 公钥(用作公钥脚本的一部分但不提供可编程的身份验证机制),签名脚本(给公钥脚本提供数据的脚本)
公钥
密钥对的公共部分,用于验证使用密钥对私有部分进行的签名。
不要混淆: 私钥(派生出公钥的数据),父密钥(用于创建子密钥的密钥,不一定是公钥)
通过交易费代替 / RBF / 通过交易费代替选择
使用支付更高交易费的不同版本的交易代替未确认交易的版本。 可以使用 BIP125 信号。
不要混淆: 孩子为父母付款,CPFP
赎回脚本
功能上类似于公钥脚本的脚本。 其中一个副本用于创建 P2SH 地址(用于实际的公钥脚本),另一个副本放在支出签名脚本用来限制其条件。
不要混淆: 签名脚本(为公钥脚本提供数据的脚本,在 P2SH 输入中包含赎回脚本)
回归测试网 / 回归测试模式
开发人员能够立刻产生测试所需区块的本地测试环境,能够创建没有价值的私有聪。
不要混淆: 公共测试网(模仿主网的全球测试环境)
RPC 字节序
逆序显示的哈希摘要;在比特币核心 RPCs,众多区块浏览器,和其他软件中使用。
不要混淆: 内部字节序(内部字节序,典型顺序显示的哈希摘要;用于序列化的区块和序列化的交易)
序列号
所有交易的一部分。 一个数字,旨在允许锁定时间的未确认的交易在序列化前更新; 目前尚未使用,除非在交易中禁用锁定时间。
不要混淆: 输出索引数字(后面的交易用来引用特定输出的交易中的 0 索引号输出)
序列化的区块
2 进制格式表示的完整的区块—相同的格式用于计算总区块字节大小; 常用 16 进制表示。
同义词: 原始区块
序列化的交易 / 原始交易
2 进制格式表示的完整交易;常用 16 进制表示。 有时称为原始格式,因为多种比特币核心命令名中都带有 “raw” 字样。
SIGHASH_ALL
签名除任意脚本签名的整个交易的默认的签名哈希类型,防止签名部分的修改。
SIGHASH_ANYONECANPAY
仅签名当前输入的签名哈希类型。
不要混淆: SIGHASH_SINGLE(签名该输入对应的输出和其他部分输入)
SIGHASH_NONE
仅签名输入的签名哈希类型,允许任何人改变他们想改变的输出。
SIGHASH_SINGLE
签名对应输入(具有相同索引值)的输出的签名哈希类型,该输入,和任意其他输入的一部分。允许其他输出和其他输入序列号的修改。
不要混淆: SIGHASH_ANYONECANPAY(仅签名该单个输入的签名哈希类型的标志)
签名
与公钥相关的值,该公钥只能由拥有创建公钥的私钥的人来创建。 在比特币中用于在发送到公钥前验证花费的聪。
签名哈希
比特币签名的标志,表明签名签署的交易部分。 (默认是 SIGHASH_ALL)交易未签名的部分可能被修改。
不要混淆: 已签名的哈希,交易可变性 / 交易延展性(尽管非默认的签名哈希标志允许可选的延展性,延展性包含交易可能发生变化的任何方式)
签名脚本 / 脚本签名
通过付款人生成的数据,几乎总是用作满足公钥脚本的变量。 签名脚本在代码中又称为脚本签名。
不要混淆: 椭圆曲线签名(一种签名,除了其他数据,能用于公钥脚本的一部分)
SPV / 简单支付验证 / 轻量级客户端 / 瘦客户端
用于验证某笔交易是否包含在某个未下载完整的区块中。 该方法用于一些轻量级比特币客户端。
软分叉
软分叉是比特币协议的改变,其中只有之前有效的区块/交易变得无效了。 因为旧的节点将仍认为新区块是有效的,所以软分叉是向后兼容的。
不要混淆: 分叉(所有节点遵循相同的共识规则的常规的分叉,一旦一条链的工作量证明高于另一条,该分叉被解决), 硬分叉(区块链上因未升级的节点不遵循新的共识规则导致的永久性的分叉), 软件分支(当一个或多个开发人员与其他开发人员永久性地分开开发一份代码), Git 分支(当一个或多个开发人员与其他开发人员临时分开开发一份代码)
旧的区块
成功挖出但没有包含在当前最佳区块链上的区块,可能是因为在相同高度的其他区块首先扩展链。
不要混淆: 孤儿区块(该区块的前一个区块哈希域指向一个未知的区块,意味着孤儿块不能被验证)
标准交易
传递给比特币核心 IsStandard 和 IsStandardTx 测试的交易。 只有标准交易通过运行默认比特币核心软件的对端节点挖矿或广播。
起始字符串 / 网络魔数
在比特币 P2P 网络协议中定义的每条消息的 4 个字节的头部,用来寻找下一条消息。
公共测试网
开发人员能够在类似于比特币主网的网络上获得并花费没有真正价值的聪的全球测试环境。
不要混淆: 回归测试网络(开发人员可控制区块生成的本地测试环境)
代币
代币是驻留在现存区块链中的具有其基本代码的可编程数字资产。 代币有助于促进去中心化应用的创建。
不要混淆: 比特币,聪,安全代币,衡量单位
交易费 / 矿工费
一笔交易的全部输入减去全部输出值的剩余金额; 该费用支付给包含该交易到区块的矿工。
不要混淆: 最小中继费(接收一笔交易到内存池并通过比特币核心节点中继必须支付的最低费用)
交易号
用于唯一标示特定交易的标识符; 具体来说,是交易的双 sha256 散列。
不要混淆: 输出点(交易号和输出集的联合体,用于识别指定输出)
用户激活的软分叉 / UASF
通过标志日或节点强制代替矿工信号激活的软分叉。
不要混淆: 矿工激活的软分叉(通过矿工信号激活的软分叉), 分叉(所有节点遵循相同的共识规则的常规的分叉,一旦一条链的工作量证明高于另一条,该分叉被解决), 硬分叉(区块链上因未升级的节点不遵循新的共识规则导致的永久性的分叉), 软分叉(区块链上由未升级的节点不遵循新的共识规则导致的临时分叉), 软件分支(当一个或多个开发人员与其他开发人员永久地分开开发一份代码库), Git 分支(当一个或多个开发人员与其他开发人员临时分开开发一份代码库)
未花费的交易输出
可作为一笔交易输入的可花费的未花费的交易输出(UTXO)。
不要混淆: 输出(任意输出,包含花费和未花费的。输出是 UTXO 的超集,UTXO 是输出的子集)
钱包
存储私钥和区块链镜像的软件(有时作为执行处理的服务器的客户端),允许用户花费和接收聪。
不要混淆: HD 钱包(允许钱包从单个种子创建全部密钥的协议,使用该协议的钱包)
WIF / 钱包导入格式
一种数据交换格式,旨在允许导出和导入单个私钥,并带有指明其是否使用压缩公钥的标志。
不要混淆: 扩展的私钥(允许导入私钥的层次体系)
Watch-only 地址
钱包中不带相应私钥的地址或公钥脚本,允许钱包监视其输出但不能花费它们。