# 探索 DLC（谨慎日志合约）的安全性和潜力

By [BitSafe中文](https://paragraph.com/@bitsafe) · 2024-06-04

---

本文由 ScaleBit、DLC.Link 和 Bison Labs 共同撰写。

谨慎日志合约 (DLCs) 自 2020 年出现以来，在过去几年中逐渐受到关注。随着多个项目探索比特币第 2 层解决方案，这一概念最近被重新点燃。开发人员设想 DLCs 在比特币借贷、跨链交易和更复杂的自定义合约方面的潜力。鉴于这些期望，大多数人将 DLCs 称为比特币智能合约。然而，比特币网络无法处理复杂的逻辑验证。因此，DLCs 应该被理解为具有可预测结果和有限状态空间的协议。过分夸大 DLC 的功能并将其应用于不适当的场景可能会给项目带来不可预测的风险。

在本文中，我们从安全角度概述了 DLC 技术，列举了其当前常见的用例，并分析了可能出现的潜在安全问题。

**DLC 基础知识**

DLC 是一种规范，允许比特币脚本根据比特币网络内部的数据（例如时间戳和哈希值）或外部预言机来确定如何解锁最终脚本。

**示例 1**

Alice 和 Bob 同意对比特币的价格走势下注。他们设定了条件，如果比特币的价格在未来两周内超过 65,000 美元，Bob 将向 Alice 支付 100 美元。相反，如果价格跌破 65,000 美元，Alice 将向 Bob 支付 100 美元。他们没有让第三方来保管他们的资金，而是使用 DLC 来签订协议，这样他们就可以直接用他们的资金管理赌注。

该协议可分为三个步骤：

**步骤 1：初始合同**

首先，Alice 和 Bob 将共同创建一个 2-of-2 多重签名地址 A，并分别向其注资 100 美元。

**步骤 2：合约执行交易**

接下来，Alice 和 Bob 与预言机/裁判根据可能的结果，使用多重签名地址中的资金构建两笔交易。这两笔交易称为合约执行交易 (CET)。这两笔交易都需要使用 3-of-3 多重签名解锁，其中交易双方都提供了两个签名，第三个签名将由预言机根据最终结果提供。

**步骤 3：揭示**

在获得结果之后，预言机将揭示其中一笔交易的签名，让Alice和Bob根据结果执行交易。

这个简单的例子说明了 DLC 的本质：由于每个结果对应一个单独的交易，DLC 无法处理过于复杂的交易或允许太多参与者加入。这些特点决定了其功能相对有限。

**示例2：定时自动解锁合约**

**步骤 1：初始合同创建**

首先，Alice 创建一个智能合约，并向其中存入一定数量的资金。该合约包含一个计时器功能，设置为在指定的未来时间点后自动解锁资金。

**步骤 2：可选的早期解锁机制**

Bob 不直接参与资金存入，但有权在特定条件下提前解锁这些资金。这些条件可能是预定事件，例如 Alice 的请求或根据合约内部逻辑判断满足的某些标准。

**步骤 3：资金解锁**

如果Bob没有在既定条件下行使提前解锁功能，则合约的计时器会在预定时间到达时自动执行，将资金退还给Alice。如果Bob触发提前解锁机制，并满足合约设定的条件，则可以将资金提前释放给Alice，或者按照合约中的其他规定处理。

在下一节中，我们将讨论一些目前使用 DLC 的场景和项目。

**DLC 跨链桥**

DLC 概念最为人熟知和典型的实现就是跨链资产管理。DLC.Link、Bison Lab 等项目对 DLCs 抱有远大的期望，希望借此打造一种比传统转接桥更优越的跨链价值转移方式。传统的跨链解决方案需要用户将资金转移到特定地址，而该地址几乎完全由项目团队控制。尽管通过多重签名和去中心化网络提高了此类解决方案的可信度，但仍无法避免钱包所有者集体渎职或不响应的风险，导致参与者的资产损失。

DLCs 提供了一种不同的跨链交易方式，简单来说，DLC 也必须通过特定的地址来执行，类似于跨链桥。但不同之处在于，\*\*DLC 的控制者是预言机，而不是资产的任何参与者。这也是很多人声称 DLC 可以实现无需信任、去中心化的资产跨链交易的原因。\*\*不过从前面的描述来看，DLC 似乎与多重签名账户没太大区别。为了更好地理解这一点，我们考虑一个简单的例子：假设 Alice 和 Bob 正在打赌房间外面的天气，但由于房间没有窗户，他们只能请第三个人 Charlie 来裁判他们的赌注。不幸的是，Charlie 其实是 Alice 的朋友，所以 Bob 在询问时必须非常小心。

（1）Bob 问 Charlie：“我和 Alice 打赌，如果下雨，Alice 就赢，如果晴天，我就赢。请告诉我确切的天气情况。”结果很明显：无论外面的实际天气如何，Charlie 都可能与 Alice 合谋影响结果。

（2）鲍勃问查理：“请告诉我外面的天气怎么样。”如果查理对赌注一无所知，他可能会描述实际情况。

通过这个例子，我们可以很清楚的看到预言机和一般资产参与者的区别。预言机负责提供准确的描述，但并不一定理解这些描述可能产生的结果。虽然不同项目的实现方式可能有所不同，但总体上是类似的。在 DLCs 跨链桥中，任何参与者向 DLC 添加资产（例如 1 BTC）时，都会收到 1 dlcBTC。当参与者尝试解锁他们的 BTC 时，预言机将确定他们是否可以提供等于或大于 1 dlcBTC 的资产。如果可以，预言机将签名，允许参与者解锁他们的 BTC。相比项目方，预言机相对更值得信赖。首先，由于 DLC 地址是由用户和预言机共同创建的，因此预言机无法窃取这些资产。其次，预言机对具体行为无动于衷，只关注真实信息，减少了潜在的利益冲突。因此，使用 DLCs 构建新型跨链桥模型确实具有独特的优势。

**安全问题**

确实，理想情况下，使用 DLC 可以使跨链过程更安全，并让用户对跨链资产拥有更多自主权。然而，这只是理想情况，我们认为有必要强调一些安全问题。我们认为最值得注意的方面是预言机的可靠性、哈希时间锁的引入以及链上/链下部署问题。

**（1）预言机的可靠性**

这个问题可以说是 DLC 应用中最重要和最具挑战性的方面。如前所述，完美的预言机应该对 DLC 的状态一无所知，只响应信息查询。然而，在现实中，由于比特币是完全透明的，预言机可以主动收集有关 DLC 的信息，并可能与其他参与者勾结。同时，预言机需要为 DLC 脚本提供公钥，这进一步增加了预言机干扰 DLC 正常运行的可能性。

这个问题有两个不同的层次，第一个层次比较容易解决，即**预言机不应该参与DLC的创建过程**。具体来说，参与者应该请求预言机生成一系列公钥，称为公钥盒。每个公钥都会有一个预先协商好的规则，如果满足条件，预言机就会对其进行签名。这样，参与者可以直接使用这些公钥生成DLC，而无需预言机直接参与DLC的创建过程。

第二个层面相对更难解决，即**预言机不应该能够访问某个 DLC 的信息**。这一点很难实现，但具有很大的潜在风险。目前有一种不完善的方法可以实现这一点。第一种方法是使用 Schnorr 签名，要求多个预言机对同一条信息进行签名。因为主动查询 DLC 脚本并提供不正确的信息相当于成为恶意节点，因此增加网络中的节点数量并使用阈值签名可以大大降低恶意节点成功的可能性。在更可靠的解决方案出现之前，本文认为多重签名预言机的安全性至关重要。

**（2）哈希时间锁**

哈希时间锁（HTLC）在确保跨链交易的安全性和去信任性方面起着至关重要的作用。这些加密构造使各方之间能够进行有条件支付，其中资金仅在特定时间范围内满足某些条件（例如哈希的原像）时才会释放。在与借贷相关的 DLC 场景中使用传统哈希时间锁来管理 DLC 脚本鼓励用户进行快速交易。然而，通过将 HTLC 纳入 DLC 协议，它通过强制执行有时间限制的承诺并防止参与者不公平地锁定或访问资金来增加额外的安全性。如前所述，预言机提供一系列公钥作为解锁 DLC 的条件。需要注意的是，由于每个公钥都对应特定信息（例如比特币的涨跌），因此同一个公钥可能在多个 DLC 中使用。因此，在设置哈希时间锁时，至关重要的是不要使用与预言机公钥相关的内容进行构造。

此外，由于 DLCs 通常涉及条件判断，因此需要小心谨慎，以确保 DLC 不会对双方的解锁过程产生不公平的影响。例如，虽然甲方可能能够解锁资产，但乙方可能会因某些 DLC 限制而受到限制，从而导致不公平的结果。因此，彻底考虑这些因素对于减轻与借贷相关的 DLC 交易中潜在的安全漏洞至关重要。

**（3）用户参与**

用户参与 DLC 引入了一项关键的安全功能，即使原始资产持有者成为任何资产转移中值得信赖、必不可少的参与者。通过要求资产持有者在任何资金转移中签名，这种方法可确保只有在用户明确授权的情况下才能转移资产，从而大大增强了安全性。

该方法利用了用户控制的安全性概念，其中用户是验证和批准交易的最终权威。实际上，这意味着任何缺乏用户直接同意（通过其独特的数字签名证明）的交易尝试都会被自动拒绝。这降低了未经授权的访问和资产转移的风险，因为恶意行为者需要破坏用户的私钥才能发起交易，这是一个更具挑战性的任务。

此外，将用户签名纳入交易流程不仅可以减轻与外部威胁相关的风险，还可以增强参与 DLC 的各方的责任感。它提供了一种透明的资产流动追踪机制，确保交易的每一步都有记录和可验证。

**结论**

DLC 协议可以在跨链交易中培养更高程度的信任和可靠性，从而鼓励各个金融领域更广泛地采用和利用这些技术。随着Taproot 升级, DLC 变得更加灵活和强大，但它们的安全性有待进一步的测试。我们很高兴看到 DLC 技术重新受到关注并引发技术狂潮，我们将继续监控 DLC 的发展并提供持续的见解和分析。

---

*Originally published on [BitSafe中文](https://paragraph.com/@bitsafe/dlc-7)*
