DLC介绍
翻译:DeepL,Google Translate,校对: 李林
介绍
这些标准文件描述了一个链上/链下有状态的比特币合约的框架,依靠第三方的真实世界观察,但不泄露预言机的用途。
比特币合约是由每个参与方合作建立并签署的。
赌注:谨慎的日志合同的简短介绍
DLC最初由Thaddeus Dryja提出。 DLC的目标是让双方直接在比特币区块链上建立合同,使用预言机来确定合同结果。
预言机
预言机是一个通过对消息签名来对现实世界的事件作出反应的实体。
在事件发生之前,预言机公布一个公共nonce,该nonce将被用于以后产生签名。 用于签名的公钥也事先知道,但不需要对每个事件都是唯一的。一旦事件发生,预言机就会使用先前公布的nonce(和公钥)在事件结果上发布一个签名信息。
DLC的一个重要特点是,可以在没有合同参与者明确要求的情况下使用预言机签名。
这一特性是名称中 “谨慎的日志 “部分的原因,因为该协议根据其实施和实例化,使各方能够向预言机隐藏其合同的痕迹。
最小化信任执行
DLC的第二个特点是,参与合同的双方不需要相互信任。 合同的设置和执行是这样的,他们保证总是能够单方面关闭合同。
通过使用适配器签名,一方不可能有不当行为,各方之间的互动只需要在设置阶段。 各方还可以通过退款机制来防止有问题的预言机在事件发生时不产生签名。
当前版本的规范没有提供保护,以防止一方与预言机勾结。在未来的版本中,可能会考虑采取一些缓解措施,如使用预言机的联盟。
请注意,预言机不能在不泄漏私钥的情况下模棱两可(在单个事件的两个不同结果上创建两个不同的签名)1。
词汇表
适配器签名
一个适配器签名s'
是对一个消息m
的签名s
的加密,对其可以证明解密s'
导致有效的签名s
。
在DLC的背景下,签名s
是针对一个给定的合约执行交易,它是用一个预言机的签名点来加密的。
一旦一个预言机释放了签名,适配器的签名s'
可以解密为s'
,可以用来创建一个有效签名的CET。
合约执行交易
来自注资交易的交易支出,其输出代表DLC合约的可能支付。
注资交易
一个链上交易将合同抵押物锁定在一个输出中,只有在双方同意的情况下才能花费。 在一方投入的金额大于所需抵押物的情况下,它也可以包含变化输出。
预言机
提供信息以建立和决定一个DLC的结果的实体。 在事件发生之前,预言机发布一个一次性的R-value(除了一个跨事件重复使用的公钥),潜在的签约方可以用它来计算签名点和相关的适配器签名以建立一个DLC。 在事件发生时,它公布了一个关于事件结果的签名,是用之前公布的R-value创建的。
退款交易
从注资交易中支出的交易,返回每一方的抵押品。 它的时间锁定在预期事件发生后的某个时间,并且只在预言机出现故障的情况下使用。
R-value
R值(或R
或R点)是一个椭圆曲线点,对应于一个随机值(通常被称为k
或k值)的投影,用于构建和验证Schnorr签名。
虽然R值通常是Schnorr签名的组成部分之一,但在DLC中,它被重新归类为在签名时间之前发布的公共组成部分。
签名点
签名点S
是签名s
的图像,如S = s * G
,其中G
是椭圆曲线(或更普遍的循环群)的生成器基点。
如果用来创建s'的[R值](#r值)
R’是已知的,那么签名点可以在创建`s’之前只用公共信息进行计算。
在实践中,对于Schnorr签名,给定x
一个秘密密钥和P = x * G
其相关的公共密钥,k
一个随机值,使得R = k * G
和一个信息m
,一个签名s
被定义为。
s = k + H(P || R || m) * x
。
s'的签名点
S’可以计算为:
S = R + H(P || R || m) * P
。
-
译者的理解是如果预言机针对一个确定的事件,给出不同的结果,会直接导致同时拿到不同结果的人可以直接计算出预言机的私钥。技术原理的扩展阅读随机数对签名的重要性与伪签名的构造。 可见这种思路不是从技术上防止预言机作恶,而是利用经济利益形成一个约束。 ↩︎