名字里的双关
DLC 的全称写作 Discreet Log Contracts,刻意用“谨慎”的拼法致敬离散对数问题(discrete log):协议的可靠性建立在“从曲线点反推私钥不可行”上,而合约条款对链上观察者足够“谨慎”——外人几乎看不出链上那笔输出背后藏着一份对赌。原始论文出自 MIT 数字现金实验室的 Tadge Dryja,发表于 2017 年。
问题场景先摆平
设想两家商户约定:三个月后若某报价指数高于某个数,甲付乙若干比特币;低于则反向。传统做法要么双方互信托管,要么上智能合约平台并让合约读到价格。DLC 的第三条路是引入一个预言机:它不做仲裁人,只做“把结果变成一次签名”的公告牌。三方——甲、乙、预言机——彼此不需要知道对方的完整账本,链上也只出现一笔看似普通的双方联合出资输出。
机制三步走
第一步,约定结果集。双方商定一组离散结果(比如几十到几百个价格区间),并取预言机公开的、对应每个结果的一个承诺点——这些点是预言机预先公开的随机数承诺,和真实结果一一编号对齐。第二步,双向押注。双方共同锁一笔资金,并为每个结果各准备一笔结算交易:结算交易要用“预言机为那个结果签的名”作为支付条件。签名以适配器形式预存——一种天生残缺的半成品签名,缺的那一块恰好是预言机对那个结果的私钥碎片。第三步,兑付。预言机对真实结果发布那一个普通签名后,任何一方都能把它拼进自己那笔预签名,得到合法结算交易广播上链;没中的人拿到的,是对方拿自己结果碎片拼出的那笔。
为什么预言机不敢撒谎
预言机为每个结果预承诺了一个随机点,事后公布的结果签名会暴露它当时内部用的秘密值。如果它对两个矛盾结果各签一次名,两条合法签名会泄露完整的私钥——任何人都能算出来并公开。撒谎的代价从“道德风险”变成“一次性自杀”,这是 DLC 常被引用的一条安全直觉:预言机可以出错,但很难在留证据的情况下作恶。
版本与现状边界
原始构造假设 Schnorr 签名;后来出现了兼容比特币现行 ECDSA 的版本,安全假设更多一些,这也是公开资料的通行描述。围绕跨实现互操作,社区维护着公开的 DLC 互操作规范,2020 年前后已有多个兼容实现被记录在案;此后几年里,基于 DLC 的借贷产品与闪电网络结合方案在开发者邮件列表和媒体里陆续出现。需要划清的是:DLC 不属于比特币核心内置功能,它是一套在既有共识规则上跑的链下合约协议,资金安全性取决于双方与预言机的操作实现。
一条直觉线
把预言机想成公证印章机的厂商:它出厂前把每枚“结果印章”的内芯公开承诺过。谁也没法事后铸一枚假章而不被发现——因为假章一盖,它的私钥碎片就像印坏的钞版一样人人可捡。甲乙之间的合约条款则从头到尾只是两人保险箱(联合输出)背面的一张私人字条。
常见误区
一是把预言机当托管人:它碰不到资金,签名错了自己遭殃。二是以为链上能看到赔率或结果:外部只见到联合输出的开设与关闭,像一次普通的多方协作支付。三是把 DLC 和预测市场平台画等号——前者是协议原语,后者是建在其上的商业应用。
快速问答
问:预言机掉线怎么办?答:条款通常预置替代路径或退款时间锁,具体以合约实现而定。问:结果集连续怎么办?答:工程上用区间离散化加误差条款处理,边界值处理是合同设计重点。
风险提示:涉及衍生品结构的合约可能造成本金全损,本文仅作协议机制科普,不构成投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。