Botanix Labs

2025年5月12日

比特币的去中心化金融起源

比特币的去中心化金融起源

在比特币上,代币、NFT和DeFi的开发实际上比乍一看要复杂得多。例如,在基于EVM和其他智能合约平台上,智能合约是图灵完备的,这意味着可以通过部署自定义智能合约来简单地添加新功能或选项。然而,在比特币上,开发者必须小心翼翼地在避免硬分叉的限制下进行创新,同时在现有协议功能的界限内进行创新。

在比特币上,代币、NFT 和 DeFi 的发展实际上比乍看起来要复杂得多。例如,在基于 EVM 和其他智能合约平台上,智能合约是图灵完备的,这意味着添加新特性或选项可以通过部署自定义智能合约简单完成。然而,在比特币中,开发者必须仔细遵循避免硬分叉的限制,同时在现有协议功能的限制内进行创新。正如我们在之前的文章中提到的,定义比特币重要性和价值的关键要素之一是其承诺保持原创,链条在时间上经历的变化最小。

尽管如此,比特币是第一个实现广泛采用的区块链,许多后来在更灵活的区块链上实现的技术在比特币中都有其早期根源。事实上,NFT 首次通过彩色币出现在比特币上;状态通道的构思可以概念上比拟为今天的 L1-L2 架构;而原子交换为现代跨链桥打下了基础。这些发展中的一些在我们的《从比特币开始:DeFi 的真实历史》的文章中有所提及。然而,要充分欣赏比特币作为 Botanix 和其他基于比特币的链的基础所具有的无与伦比的价值,重要的是深入研究早期的创新,这些创新为今天的生态系统铺平了道路。尽管相对简单,比特币实际上是一个复杂而迷人的生态系统,在整个 Web3 空间中拥有最丰富的历史之一。

与比特币功能的理论化:其能力是否足以建立一个复杂的生态系统?

比特币在 2009 年的推出引入了一种内置脚本语言,使得不仅仅是简单支付成为可能——例如,从一开始就可以进行多签名脚本和时间锁。中本聪甚至描述了如何通过 nLockTime 和序列号在各方之间重复更新未确认的交易,以进行高频交易,只有最终状态最终被记录在链上。

比特币脚本是比特币用来定义币的支出条件的完整脚本语言。它就像编程语言本身。脚本就像食谱——烘焙蛋糕的完整步骤列表。操作码是脚本的构建块——它们是开发者用来编写脚本的单个操作(指令)。操作码就像单个动作(例如:"混合," "搅拌," "烘焙"). 要理解脚本的作用,让我们简单回顾一下最常见的类型:

  • P2PK (支付给公钥) — 这是将 BTC 从一个钱包发送到另一个钱包的原始方法,后来被更短的变体 P2PKH 替代。它由多个操作码 (OP_XXXX) 组成,样子如下:
    OP_DATA_65 OP_CHECKSIG OP_DATA_33 OP_CHECKSIG

  • P2PKH (支付给公钥哈希) — 这个脚本的样子是:
    OP_DUP OP_HASH160 OP_DATA_20 OP_EQUALVERIFY OP_CHECKSIG
    P2PKH 很快获得更广泛的采用,因为它使用 32 字节的公钥哈希来优化交易大小,从而使交易比 64 字节的 P2PK 更小。大小越小,交易越便宜——这在比特币的使用和交易成本上升时尤其重要。

  • 存储任意数据 — 通常,这些脚本锁定零或很少量的 satoshi,许多脚本携带 ASCII 数据、链接或脚本。这样的一个脚本的例子:
    OP_0 OP_DATA_20 # 任意 20 字节的数据存储。
    还有通过 OP_RETURN 操作码存储任意数据的标准化方法。例如,比特币彩色币协议(早期 NFT 类似物)使用 OP_RETURN 嵌入代币元数据。

关于不同脚本的更详细描述在NCC Group 的研究中编制,该研究通过他们的解析器识别了156种不同的脚本模式。

我们能否尝试在比特币上使用脚本组织类似 DeFi 的过程?让我们来看看。

借贷

正如我们上面提到的,操作码可以组合,允许构建小的指令链,从而创建更复杂的操作。例如,通过使用操作码,可以构造执行借贷合同功能的复杂脚本。通过时间锁和多签的组合,可以实现这一点:

  • OP_CHECKSEQUENCEVERIFY (CSV) 用于相对时间锁(例如,资金在特定交易后的 X 个区块上锁),

  • OP_CHECKLOCKTIMEVERIFY (CLTV) 用于绝对时间锁(例如,贷款在特定区块高度或时间戳到期),

  • OP_CHECKMULTISIG(或多个 OP_CHECKSIGOP_ADD)需要多个方的同意,

  • 条件逻辑操作码 OP_IF/OP_ELSE 用于定义不同的支出路径(例如,偿还与违约)。

这使得实现双向托管并设置超时成为可能。例如,假设 Alice 提供 BTC 作为担保,Bob 在链外借给她稳定币。他们想要一个合同,其中如果 Alice 未能在特定截止日期前偿还贷款,Bob 将获得 Alice 的 BTC;但如果她还款,BTC 将被解锁并归还给她。他们可以使用 2-of-2 多签名输出(Alice 和 Bob),默认情况下需要双方的签名才能支出资金。然后,为了处理违约,他们设置脚本,以便在特定区块时间后只有 Bob 可以支配资金。

然而,另一个挑战是:比特币无法自动计算利息、监控抵押品比率或强制清算。所有利息支付必须通过链外或额外的预签名交易进行(这相当复杂)。如果在贷款期间 BTC 的价格下跌,比特币脚本将无法知道——这将要求一个预言机或链外协议来触发提前清算。没有预言机,合同变得简化:它只知道最终截止日期。结果,基于 BTC 的无信任稳定币贷款很难直接在比特币 L1 上实施;相反,人们要么使用受信任的第三方,要么使用与其他链的原子交换机制。

AMM 功能

如上所述,理论上可以实现借贷和质押机制,但在实际操作中效率低下。然而,值得探讨的是,是否可以理论构建类似 AMM 的更复杂机制在比特币上。比特币包括数学操作码,如 OP_ADDOP_SUBOP_MUL(尽管有些已被禁用),以及比较操作码如 OP_LESSTHAN 等。从理论上讲,这种功能可能允许执行定价公式。理论上,可以创建编写固定价格或预定义可接受价格点的脚本编码,但不能在每次交易后动态调整。此类实现将面临结构性限制,即比特币中的每次交易都会创建一个新的 UTXO 和新的脚本,这意味着所有可能的状态都需要预先计算,或者在每次交易后必须部署新的合同。

AMM 功能的另一个重要方面是资产的交换能力。理论上,比特币可以支持原子交换,这可以构建为原子交换订单簿,而不是流动池。通过构建一系列 HTLC 或在不同价格点的报价,还可以模拟 AMM 类似的行为,从而形成静态的自动化市场做市商(类似于报价的收益曲线)。然而,维护这样的系统将非常繁琐——这将需要在每次交易后不断手动更新和重新发布带有新脚本的 UTXO,导致显著的链上成本。

扩展脚本功能

上述要点决定了为什么比特币定期进行重大更新以改善功能。在这些重要更新中,Taproot 是一个以软分叉的方式完成的,但在很大程度上改变了对脚本的处理。Taproot OP_SUCCESS 机制:通过 Taproot 升级(BIP 342),许多先前禁用或保留的操作码已在 Tapscript(SegWit v1 脚本)上下文中变为 OP_SUCCESS 操作码。 OP_SUCCESS 操作码意味着如果被执行,脚本将立即成功终止。这种设计简化了通过软分叉添加新操作码。具体而言,在 Tapscript 中,范围内的任何操作码(例如:0x50、0x62、0x7E–0x81、0x83–0x86、0x89–0x8a、0x8d–0x8e、0x95–0x99 和 0xbb–0xfe)的数字都被视为OP_SUCCESSx​。如果碰到它,它将导致脚本成功,无论其他逻辑如何。这将旧的 OP_NOP 升级机制替换为一个更安全、更灵活的机制——未来的软分叉可以重新定义 OP_SUCCESS 操作码为具有新行为,而旧节点(已经将其视为成功)不会认为这些脚本无效。总之,任何未列为活动的操作码,要么是预留/未使用的,要么在 Taproot 中已变为“始终为真”的 OP_SUCCESS

另一个重要方面是操作码可以通过 BIP(比特币改进提案)流程进行提议,许多有趣的提案正在进行中或已被拒绝。 目前,有多个操作码等待批准,其中一些可能通过奠定基础来显著扩展比特币的功能,以执行更复杂的动作。其中包括:

  • OP_CAT — 旨在扩展包装和组合数据的能力,这可能极大地增强比特币的脚本能力。 OP_CAT 将允许更具表现力的脚本,例如某些契约机制和高级应用所需的脚本。最初在早期比特币中存在(2010 年禁用),OP_CAT 将从堆栈中弹出两个字节字符串并将其连接起来。这种简单而强大的操作将使脚本能够动态构建消息或执行复杂检查,例如在脚本中构建梅克尔树哈希。 BIP 提议为连接的结果限制为 <= 520 字节(最大堆栈元素大小)。

  • OP_CHECKSIGFROMSTACK / OP_CHECKSIGFROMSTACKVERIFY (OP_CSFS) — 可能使基于预言机的脚本和协议得以实现。例如,脚本可以要求来自预言机的签名,以确认外部条件(例如价格馈送或事件结果),通过在脚本中验证签名的消息。尽管执行起来简单,OP_CSFS 将为比特币解锁完全新层次的功能。例如,预言机可以签署一条消息,例如“BTC 价格在时间 X 下降到 2 万美元”,而贷款合同脚本可以使用 OP_CSFS 验证此签名,从而允许贷方在预言机的消息有效时清算抵押品。通过这种方式,可以根据外部数据(例如价格馈送)对链上担保品进行扣押,而无需依赖持有密钥的受信任第三方。同样,OP_CSFS 可以确保借款人的还款已发生:预言机(或贷方)可以签署一条消息,例如“已收到付款”,从而允许释放抵押品返回给借款人。如果没有 CSFS,这类条件在今天要么无法实现,要么需要一种作为共同签名者的预言机,这样安全性更差,因为存在串通的可能性。

  • OP_CHECKTEMPLATEVERIFY (OP_CTV) — 允许用户限制未来如何支出他们的硬币(例如,要求硬币仅发送到预定义的地址集合或在特定费用条件下)。CTV 可用于创建批量交易、通道工厂和其他基于契约的构造,确保执行某些预定义的操作。

但为什么这些提案仍未获得批准?最可能的原因是比特币开发社区对保护比特币原始形式极为慎重。一方面,新功能将增强功能。另一方面,比特币本质上是设计为一个缓慢的网络,而这种缓慢速度也可以被视为一种“原创性”。例如,在清算的上下文中考虑使用 OP_CSFS,速度起着至关重要的作用。如果发生崩溃并且 BTC 的价格急剧下跌,可能会出现矛盾的情况:首先,区块链的负载将激增,网络速度将下降;其次,比特币网络中的交易将在价格显著过时的情况下进行处理,而 CEX 和 DEX 的反应则要快得多。最有可能的是,在清算完成之前,价格将开始回升。比特币的缓慢操作速度,加上在繁忙时期极高的交易成本,使得在主网上原生实施面向 DeFi 的解决方案的尝试几乎毫无意义。

稳定币:在比特币中它们的有效性如何?

稳定币已成为任何 Web3 生态系统的基本组成部分,即使是那些与 DeFi 不直接相关的生态系统。稳定币使用户能够避免波动,并在不担心资产价格可能变化的情况下进行转账。如前所述,比特币网络在功能上的简单性和可以记录的数据量之间不断进行平衡。有趣的是,在比特币上创造资产的第一步是通过彩色币的发展,这些彩色币类似于 NFT。发行新资产在比特币上的构思可以追溯到 2012 年,当时 J.R. Willett 提出了“彩色币”,并随后帮助创建了比特币上的 Mastercoin 协议(后来更名为 Omni)。这为在比特币上对资产进行代币化(包括法定货币挂钩的代币)奠定了基础。

标准比特币脚本不包含直接的“代币”操作码,因此代币元数据通过 OP_RETURN 嵌入到交易输出中(这标记输出为可证明的不可支取,同时附带数据)。在早期实现中,甚至多签名脚本也被重新利用来编码数据,之后 OP_RETURN 成为标准化的。没有操作码可以强制执行代币规则——规则由链外解析比特币交易的软件维护。诸如彩色币、Omni 层(Mastercoin)、Counterparty 和开放资产等协议通过“着色”特定的 Satoshi 或 UTXO 来表示代币。例如,开放资产协议使用带有元数据的 OP_RETURN 输出,指定代币数量和资产 ID。实质上,比特币区块链本身对“代币”没有认识——它只看数据。代币的有效性(供应、所有权)由分析这些 OP_RETURN 消息的钱包在外部追踪。

OP_RETURN 还有一个大小限制。比特币核心的标准政策允许在单个 OP_RETURN 输出中最多包含 80 字节的任意数据。任何超过 80 字节的 OP_RETURN 中的数据将被视为非标准,并且默认情况下不会被传播。由于理论上,一个交易可以包含多个 OP_RETURN 输出,以增加更多数据(每个最多 80 字节),因此可以部分减轻这一限制。然而,比特币的标准传播政策通常只允许每个交易有一个 OP_RETURN 输出,以防止垃圾邮件。

将元数据嵌入比特币交易的能力使得2012年创造Mastercoin成为可能,后来更名为Omni。Omni层对早期Tether操作至关重要,为首批USDT交易提供了传输层。在2010年代中期的某一段时间内,USDT在比特币(Omni)上的交易是加密货币市场中的主要稳定币,尤其是在Bitfinex和其他交易所大量使用。Omni交易是附带元数据的比特币交易。
Omni经历了几种实施类:

  • 类A:使用两个假地址(P2PKH 输出)记录数据,以在地址的 hash160 中存储信息。

  • 类B:一个 Omni 交易包含一个或多个 1-of-3 多签名输出。对于每个这样的输出,一个公钥属于发送者(允许之后的赎回),另外两个公钥编码 Omni 数据。

  • 类C:利用 OP_RETURN,这允许记录最多 80 字节的数据。

因此,Omni 可以将数据打包到一个 30 字节的有效载荷(在 B 类中)或直接放入 OP_RETURN(C 类)。即便是超出简单发送操作(16 字节)的更复杂的 Omni 交易,如交易或发行,通常在少数十至 40-60 字节的实际数据之间变化。因此,80 字节在 OP_RETURN 中通常是足够的。

尽管有这些创新,基于 Omni 的稳定币继承了比特币的优点(去中心化和安全性)和其局限性。通过 Omni 每次 USDT 转移都需要比特币网络费用和确认,吞吐量受限于比特币的区块大小和区块时间。Omni 甚至实现了一些功能,例如去中心化交易所(支持 Omni 资产的原子交换)和多代币支持。然而,除了 Tether 外,很少有资产在 Omni 上,而对该协议的兴趣逐渐下降。随着加密行业的发展,Omni 的局限性愈发明显。比特币交易费用上涨,10 分钟的区块间隔使得 Omni 交易变得缓慢且昂贵,用于活跃交易的成本高昂。到 2017 年,Tether 开始在更快的平台上发行 USDT(首先是 ERC-20 在以太坊上,其次是其他平台),交易所迅速采用这些更新版本,因为交易便宜且更快。

比特币及其脚本语言的设计本质上留下了很少的余地来实现复杂的智能合约,这些合约是链接发行方、资产清算、财政管理和其他功能所必需的。此现象导致实施存在重大的风险。例如,Omni 和 Ordinals 代币依赖于发行方(例如 Tether 或 Stably)维持法定储备的承诺。

此外,如前一节所述,比特币本身并不原生支持代币,因此每种稳定币解决方案实际上构成了变通。Omni 在 OP_RETURN 中编码数据的方法对数据大小有严格的限制,并要求所有参与者运行专门的解析软件。这使得钱包和交易所的集成变得困难。许多比特币钱包从未支持 Omni 代币,增加了用户访问的复杂性。同样,Liquid 和 RSK 也要求用户运行单独的节点软件或使用专用钱包,使它们远不如以太坊钱包中的 ERC-20 代币“即插即用”。

直到最近,随着 Taproot 的介绍,比特币获得了新的能力(通过 Taro 或 Ordinals)以更为干净的方式关联资产数据,但这些功能仍未广泛得到钱包的支持。在实践中,它们继承了 Omni 面临的许多相同采用挑战,尽管数据编码方法有所改善。Stably 的 BRC-20 稳定币在 2023 年中短暂引起关注。然而,其供应和使用仍然非常低,这部分是由于链上交易笨拙且昂贵。本质上,基于 Ordinals 的稳定币更像是一个理论的概念证明:它展示了技术上的可能性,但未能实现显著的市场采用。

所有其他与比特币相关的稳定币实施实际上都是侧链或第 2 层解决方案。例如,Paul Sztorc 和 Layer 2 Labs 提出的 Drivechain 以 BIP 300 的形式设想了点对点侧链。Liquid,与其 Liquid USDT(L-USDT),也作为侧链设计用于更快、更私密的交易和数字资产发行。RSK 以及 DOC(链上的美元)也是侧链的又一例子。Ordinals 的案例表明,直接使用比特币交易进行每次转移会导致在网络活动期间显著拥堵和高费用。

考虑到极为快速且低成本的交易技术的可用性,直接在比特币上启动任何东西的实用性正变得越来越值得怀疑。随着区块链技术的不断发展,这种方法变得愈发不可行。比特币仍然是一种独特的资产,在其当前形式中持有内在价值。因此,Botanix 旨在构建一个最大限度尊重并继承比特币原则和传承的链,以保持与比特币网络的紧密关系。这种方法使得能够创建一个现代系统,同时仍然继承比特币的所有优势。