Timed Commitment的实现

教程:定时承诺的实现

定时承诺介绍

承诺过程包括两个阶段:承诺阶段和开启阶段。通常来说,承诺在两方之间执行:承诺方C和接受方。更一般地说,我们可以假设有n个接受者,表示为 P 1 , . . . , P n P_1, ...,P_n P1,...,Pn.

  • 承诺阶段

    承诺方以某种秘密值 x x x启动承诺阶段,即承诺方向接收方传递信息“我拥有秘密 x x x”。此值将在开启阶段执行后为每个接受者所知。如果承诺者是诚实的,那么在开始阶段开始之前,对手(接收方)不应该有任何关于 x x x的信息

  • 开启阶段

    承诺方公开秘密 x x x,完成承诺。每个诚实的接受者都可以确信,无论恶意承诺者的行为如何,承诺都可以以一种方式公开,即承诺者既不能反悔也不能使用 x ′ ≠ x x^{'}\not=x x=x开启承诺。

  • 问题

    没有办法强迫承诺者公开他的秘密 x x x

  • 解决方法

    比特币为解决这一问题提供了一种有吸引力的方法。也就是说:使用比特币系统,可以迫使承诺人用一些钱来支持他的承诺,称为押金。如果他在一段时间 t t t 内拒绝公开承诺,押金将给予其他各方。

    • 首先,假设在协议启动之前,分类账包含n个未赎回的标准交易 U 1 C 、 . . . 、 U n C U_{1}^{C}、...、U_{n}^{C} U1C...UnC,这些事务可以用一个仅为C已知的私钥进行赎回,且每笔交易具有 d BTC。

    • 该协议被表示为CS(C, d d d t t t s s s),它包括两个阶段:承诺阶段CS.Commit(C, d d d t t t s s s)(其中 s s s包含C提交的消息和一些随机值)和开启阶段CS.Open(C, d d d t t t s s s)。

    • 诚实的承诺者总是在时间 t t t 内开启他的承诺。在这种情况下,承诺方收回押金,即分布式账本中包括可以使用C的密钥赎回的标准交易,且总价值为 ( d ∗ n d * n dn)BTC.

    • 此外,如果 C 未在时间 t t t 之前打开承诺,则每一方都会赚取 d BTC。更确切地说:对于每一个诚实的 P i P_i Pi,账本中都包含一个交易,其值为d BTC,可以用 P i P_i Pi已知的密钥进行赎回。

  • 实现一

    • 假设 x ∈ { 0 , 1 } ∗ x \in \{0, 1\}^{*} x{ 0,1}, 在承诺阶段 C 计算 s : = ( x ∣ ∣ r ) s := (x||r) s:=(xr), 其中 r r r 是从 { 0 , 1 } k \{0, 1\}^{k} { 0,1}k中随机选择的随机数,然后 C 将 h = H ( s ) h = H(s) h=H(s)发送给每一位接收方(这基本上构成他对 x x x 的“承诺”)。

    • 在开启阶段,C 将 s s s发送给每个接收方,接收方检查是否 h = H ( s ) h=H(s) h=H(s),并通过从 s s s中剥离最后 k k k位来恢复 x x x。如果 H ( s ) ≠ h H(s) \not= h H(s)=h,接受者将不接受开启过程。

    • 协议的基本思想如下

      • 承诺方独立地与每个接收者 P i P_i Pi交谈。对于每个 P i P_{i} Pi,C 将在承诺阶段创建一个价值 d BTC 的交易 C o m m i t i Commit_{i} Commiti. 这笔交易通常被 C 在开启阶段通过交易 O p e n i Open_{i} Openi 赎回。交易 C o m m i t i Commit_{i} Commiti 将以 O p e n i Open_{i} Openi 交易必须自动开启承诺(公布 s s s)的方式构建。技术上,可以通过构造 C o m m i t i Commit_{i} Commiti 的输出脚本来完成,这样 O p e n i Open_{i} Openi

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值