探讨比特币DeFi的起源:为什么应用扩展如此复杂?

1 月前
閱讀 10 分鐘
8 視圖

比特币的复杂性

在比特币上开发代币、NFT和去中心化金融(DeFi)实际上比表面上看起来要复杂得多。与在以太坊虚拟机(EVM)及其他智能合约平台上相比,后者允许开发者通过简单地部署自定义合约添加新功能或选项,比特币的开发者必须十分谨慎,以避免导致硬分叉并在现有协议功能的限制内进行创新。使比特币独树一帜并具有独特价值的一个关键因素是其对“原始性”的坚持,自诞生以来主链变化不大。

尽管如此,比特币仍然是第一个获得广泛采用的区块链。许多后续在更加灵活的区块链上实现的技术,实际上都是在比特币上孕育的。例如,NFT初次以“彩色币”的形式出现在比特币上,状态通道的概念在设计上与现在的L1-L2架构非常相似,原子交换则为现代跨链桥奠定了基础。我们在之前的文章《从比特币开始:DeFi的真正起源》中提到了一些这些发展。而要真正理解比特币作为Botanix及其他比特币链基础设施无与伦比的价值,我们需要更深入地了解这些早期创新如何为今天的生态系统铺平道路。虽然比特币本身相对简单,但其却是Web3领域中最复杂且最迷人的生态系统之一,拥有极其丰富的历史。

比特币的功能理论

探讨比特币的功能理论:比特币的能力是否足以支持复杂的生态系统?比特币于2009年推出时,内置的脚本语言不仅支持简单支付,还支持复杂操作,例如多重签名和时间锁。中本聪甚至描述了如何利用nLockTime和序列号的未确认交易在两方之间更新,以实现高频交易,最终写入区块链的状态则是最终状态。比特币脚本是一种非常独特的机制:它是图灵不完备的,这限制了其功能,但同时也保持了简单和安全。因此,在比特币上构建任何复杂功能时,开发者必须在脚本提供的框架内进行设计。脚本包含大量的命令(操作码)用于编程各种行为,最终将被写入交易数据中。可以将比特币脚本视作一个食谱——一组步骤来烘焙蛋糕。操作码是这种语言的构建单元,它们是程序员编写脚本时使用的基本指令,比如“搅拌”和“加热”。为更清晰地理解脚本的功能,我们可以简要回顾一下最常见的脚本类型:NCC Group的一项研究总结了156种不同的脚本模式,并对这些脚本结构进行了详细分析。

接下来,我们可以尝试通过脚本组织一个类DeFi机制。

借贷机制

正如之前提到的,操作码可以组合以构建一系列小型指令链,从而实现更复杂的行为。例如,开发者可以通过组合操作码构建具有贷款合约功能的复杂脚本。这可以通过时间锁和多重签名的组合来实现:这些工具可以实现“带超时的双边托管合约”。例如,假设爱丽丝提供比特币作为抵押,而鲍勃则线下借给她稳定币。他们希望通过合约设定以下规则:如果爱丽丝未按时还款,鲍勃将获得她的比特币;如果她按时还款,比特币将被解锁并返还给爱丽丝。

为此,他们可以使用一个2-of-2的多重签名输出(爱丽丝和鲍勃都需要签名才能使用这些资金)。然后,他们可以设置脚本逻辑:如果在达到某个区块高度后贷款仍未还清,只有鲍勃可以单独使用这些资金。然而,这里仍然存在一个重大难题:比特币本身无法自动计算利息、监控抵押率或强制平仓。任何利息支付都必须通过链下进行,或者借助预签名的交易(在实践中非常复杂)。如果在贷款期间比特币价格下跌,比特币脚本本身无法得知,也无法自动触发强制平仓。为实现该功能,必须使用预言机或链下协议。没有预言机,合约只能基于最终到期时间作出判断。因此,在比特币层上直接实现无信任的BTC抵押稳定币借贷是非常困难的。

AMM特性

如上所述,借贷和质押机制在理论上可以通过比特币脚本实现,但在实践中效率较低。我们仍然可以探讨是否有可能在比特币上构建更复杂的机制,比如自动化市场制造商(AMM)。比特币脚本包含像OP_ADD、OP_SUB和OP_MUL这样的数学操作码(尽管其中一些已被禁用),以及像OP_LESSTHAN这样的比较操作码。从理论上讲,这些功能可用于实现价格计算逻辑。开发者理论上可以构建一个具有固定价格或一组预定义可接受价格点的脚本,但在每笔交易后无法动态调整价格。原因在于比特币使用UTXO模型,每笔交易都生成新的UTXO和脚本,因此每种可能的状态必须预先计算,或者每笔交易后必须重新部署合约。

实现AMM的一个关键因素是资产交换能力。理论上,比特币支持原子交换,可以以订单簿而非流动性池的形式构建。类似于AMM的行为也可以通过构建一系列哈希时间锁合约(HTLC)或在不同价格点发出待处理订单来模拟,以形成一个静态的自动市场制造系统(类似于收益曲线)。然而,维持这样的系统非常繁琐,每笔交易后脚本需要手动更新并重新发行UTXO,具有极高的链上成本。因此,尽管理论上可以构建AMM,但在实践中面临更大的问题:比特币主网上只有一个原生资产,即比特币。

扩展脚本功能

上述几点解释了为何比特币经常进行重大更新以改善其功能。其中一项重要更新是Taproot,它通过软分叉引入,极大地改变了脚本的设计。Taproot的OP_SUCCESS机制:随着Taproot升级(BIP 342)的引入,许多先前被禁用或保留的操作码被转换为Tapscript中的OP_SUCCESS操作码(即SegWit v1脚本)。

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。

稳定币在比特币生态系统中的有效性

稳定币已经成为任何Web3生态系统的关键组成部分,即使这些生态系统与DeFi没有直接关系。它们使用户能够对冲波动风险,并在转账时无需担心资产价格变化。如前所述,比特币网络一直在寻求功能简单性与可记录数据量之间的平衡。有趣的是,在比特币上发行资产的最早尝试是通过发展“彩色币”实现,这在某种程度上与NFT相似。早在2012年,JR Willett提出了在比特币上发行新资产的想法,并引入了“彩色币”的概念。

随后,他帮助创建了Mastercoin协议(后更名为Omni),为比特币上的资产代币化奠定基础(包括锚定法币的代币)。由于标准比特币脚本中没有直接的“代币”操作码,开发者只能借助OP_RETURN将代币元数据嵌入交易输出中(OP_RETURN使输出不可花费并附带数据)。在OP_RETURN标准化之前,甚至连多重签名脚本也被用于“迂回”方式编码数据。比特币脚本本身无法强制执行任何代币规则——规则由负责解析比特币交易的链下软件维护。彩色币、Omni层(前身是Mastercoin)、Counterparty和Open Assets等协议通过“给特定的satoshi或UTXO上色”来表示代币。

综上所述,这些复杂的机制表明比特币不仅仅是一种数字货币,但其在制约下的灵活性与动态性仍然是其需要不断探讨的主题。