# DLCs 如何利用Schnorr签名？

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

---

数字签名是密码学领域的基石，Schnorr签名已成为该领域的主要内容，以其高效和直接而著称。谨慎日志合约(DLC)通过采用Schnorr构建实现了多种潜在条件结果。让我们从贷款场景的角度来探讨这个问题，仅有两个明确的结果可达成一致。

想象一下Alice借给鲍勃一些加密货币。他们就这笔贷款的两种可能结果达成一致：

1.**还款**：Bob成功偿还贷款，价值回到Alice手中。

2.**清算**：Bob 拖欠贷款，因此所有价值都转移给 Alice 作为补偿。

为了促进这一点，他们决定使用 DLC。

在传统的Schnorr签名过程中，会生成一个一次性使用值，即标记为 k 的随机数。使用此随机数，通过与椭圆曲线的基点 G 相互作用来确定值 R。另一个值 s 是从私钥、消息和随机数 k 导出的。签名由 (R, s) 组成。

然而，DLCs 却给这个故事增添了一些转折。 Alice 和 Bob 都有自己的长期公钥。让我们关注 Alice 的密钥，标记为 A。当他们设置贷款条款时，会生成一个随机数 k，从而创建值 R。DLCs 将 Alice 的长期密钥 A 与一次性密钥 R 结合起来，创建合约的“公钥”。签名就是值 s。

现在，为什么要采用这种 DLC 贷款方式？此设置允许 Alice 和 Bob 为两种潜在结果预先准备签名。此外，在结果明确之前，他们的协议细节（偿还或清算）仍然保密。当时间到了，Bob是否已偿还或违约时，就会显示相应的签名，并执行合同。此外，通过仅使用 s 值作为签名，合同签订时在区块链上记录的数据更少。

**DLC结算**

一旦 Alice 和 Bob 之间的贷款场景展开并且结果变得明显，另一个关键角色就会登场：认证者。该角色与传统的预言机不同，以更加去中心化的方式运行，确保结果在没有中心控制点的情况下得到验证。

认证者介入以确认现实世界事件的结果，无论是还款还是违约。以通过以太坊上的DeFi协议获得贷款的用户为例，然后该用户偿还贷款。该协议的智能合约与其预言机系统一起公布还款结果。然后，认证者验证以太坊链上的结果，并计算一个与该结果以加密方式对应的谨慎日志。这个谨慎的日志编号旨在解锁 Alice 或 Bob 预先签名的签名之一。

通过认证者公开的谨慎日志编号，Alice 或 Bob 都可以使用它来解锁相关签名。该签名与谨慎的日志编号配对时，可作为结果的加密证明，启动区块链上合约的执行。该过程的分散性是其突出特点。通过利用谨慎的日志编号，系统确保了忠实反映现实世界事件的防篡改机制，使Alice和Bob能够在没有任何不当干扰的情况下查看合约直至达成一致结论。

总之，Schnorr签名是密码验证领域的基石。然而，通过适应现实场景（例如我们的贷款示例），DLCs使其进一步发展。这种适应凸显了加密工具在不断发展的区块链环境中的灵活性和潜力，并强调了安全性和实用性。

---

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