Bitcoin 是无需强制依赖中央管理者即可转移货币价值的开放系统。同一名称指代协议、参与者网络及其货币单位;单位符号是 BTC,1 BTC 可分为 100 000 000 satoshi。理解 Bitcoin,可以从一笔付款入手:谁能支配这份价值,如何把这种权限交给收款人,其他人又如何验证它已进入共同历史。
银行余额代表银行对客户的债务。自行保管 bitcoin 时,我们掌握的是满足网络中特定记录支出条件的手段。协议记录金额和条件,而非所有者的法定姓名。钱包汇总这些记录,显示余额;币本身并不是存放在手机里的文件。托管机构或交易所的余额含义不同:通常是对控制密钥的服务商的一项请求权。能够在技术上签署付款,并不能单独决定法律上的所有权。 [Bitcoin Developer Guide — Transactions] [Bitcoin.org — Securing your wallet]
收款人提供钱包生成的地址。地址说明如何创建具有特定支出条件的输出,并不是装币的信箱或秘密密码。通常,私钥生成的数字签名授权下一次支出;验证签名无需公开私钥。条件也可以要求多个签名或等待。仅知道地址不足以花费资金。但获得所需秘密的人可以创建有效支出;网络无法区分密钥被盗与持有人同意。 [Bitcoin Developer Guide — Transactions]
此前交易中尚未花费的输出称为 UTXO。普通交易通过输入引用选定的 UTXO,将其完整消耗,并创建新输出。假如发送方有一个合适的 100 000 sat 输出,就可以创建给收款人的 60 000 sat 输出,以及重新归自己控制的 39 000 sat 找零输出。剩余 1 000 sat 是手续费,并非推荐费率。原输出在同一历史中不能再次花费。找零地址不必是原地址。签名前要核对收款人、金额和手续费。 [Bitcoin Developer Guide — Transactions]
钱包准备并签署付款;Full Node 按共识规则验证数据。例如,它检查输入确实存在且尚未花费、支出条件得到满足,以及普通交易没有额外创造价值。它可以将有效但未确认的交易放进本地等候区 Mempool,并转发给其他节点。各节点拥有自己的等候区和转发策略;拒绝转发不一定意味着交易在区块中无效。钱包可以使用自己的节点,也可以从第三方服务器获取信息。即使自己的节点也无法保护已经被盗的签名密钥。 [Bitcoin Developer Guide — Transactions] [Bitcoin Developer Guide — Operating Modes]
有权限的密钥持有人可以签署两笔不同交易,花费同一个 UTXO。两个签名都可能正确,而不同参与者最初可能看到不同付款。因此,除了权限,还需要共同的顺序。双重花费不是复制一个币文件,而是试图让同一输出的两种冲突用途都成立。在一份有效历史中,最多只能包含其中一种。仅凭消息接收时间、连接节点数量或钱包的说法,都不能在全网范围内解决冲突。 [Bitcoin: A Peer-to-Peer Electronic Cash System]
矿工组装候选区块,反复计算哈希,寻找满足难度目标的 Proof of Work。区块引用前一区块;修改较早历史,就需要重新完成其后的工作。节点先验证规则,再从有效分支中选择累计工作量最大的分支,而不一定是区块最多的分支。因此,挖矿帮助确定顺序,却不授予花费他人输出的权限。即使掌握多数算力,也不能迫使未更改规则的节点接纳无效区块;但可以干扰顺序和获得确认的可用性。 [Bitcoin Developer Guide — Block Chain]
交易进入已接纳区块,就获得第一次确认。后续区块通常会增加替换这段历史的成本。出块间隔不是时刻表:十分钟是长期目标,不是承诺的付款时限。重组可以移除此前接纳的区块,让交易重新成为未确认状态,或用冲突支出取代它。因此,所需确认数取决于付款价值和风险,并不带来绝对确定性。协议没有负责撤销付款的管理员。自愿退款是一笔新付款,需要重新考虑手续费。 [Bitcoin: A Peer-to-Peer Electronic Cash System] [Bitcoin Developer Guide — Block Chain]
区块的第一笔交易 Coinbase Transaction 可以把区块补贴和所包含交易的手续费分配给矿工。只有补贴创造新单位;手续费转移现有价值。最高补贴起初为 50 BTC,每 210 000 个区块减半。这种 Halving 不适用于手续费。按整数 satoshi 取整,使允许的补贴总和低于 2100 万 BTC。节点拒绝超额奖励。丢失密钥不会增加未来发行量,而单位数量有限本身也不决定购买力。 [Bitcoin Developer Guide — Block Chain]
源代码可以研究,修改建议可以公开提出。开发者发布软件,节点运营者选择自己验证的规则,矿工选择候选区块的内容。任何一种角色都不能独自替所有人决定;不兼容的修改可能分裂网络。参与者的经济影响力仍不相等。有限区块空间约束验证和传播数据的资源要求,但高需求会带来争夺入块空间的竞争。因此,手续费与交易大小及入块需求相关,而非简单取决于转账金额。 [Bitcoin Developer Guide — Block Chain] [Bitcoin Developer Guide — Transactions]
公开历史支持验证,也支持将付款与身份关联,例如利用交易所记录。假名性不等于匿名性。自行保管免去了请求托管人签名的必要,同时让持有人承担备份、设备安全和核对收款人的责任。备份必须能恢复所需密钥和配置;仅恢复钱包,不能让已经泄露的秘密重新保密。自己的节点有助于验证历史,却不保证价格、隐私或安全签名。独立验证的要点,是知道自己正在检查这些问题中的哪一个。 [Bitcoin.org — Protect your privacy] [Bitcoin.org — Securing your wallet]
要获得更完整的理解,请将本词条与以下词条结合阅读: Satoshi Nakamoto, Bitcoin Whitepaper, Genesis Block, Proof of Work, Full Node, 2100万枚上限. 反向关联还来自: Satoshi Nakamoto, Bitcoin Whitepaper, Genesis Block, Full Node.