本文介绍: https://blog.chain.com/hiddeninplainsighttransactingprivatelyonablockchain-835ab75c01cbConfidential Assets描述了一种称为保密交易”的方案,该方案模糊了所有UTXO的金额,同时保持了不创建销毁硬币的公共可验证性。进一步将此方案扩展到“保密资产”,一种单一的基于区块链的分类可以跟踪多种资产类型的方案。将保密交易扩展到不仅模糊输出金额,还模糊资产类型,从而提高所有资产隐私

Confidential Assets

文章结构

Preliminaries

输入输出模型

定义1. 将比特币交易定义为以下数据

(还需要coinbase交易,有输出但没有输入;在本文的目的中,它们可以被视为具有负费用的交易。)

用于隐藏交易数量的同态承诺

定义2. 给定一个消息空间

M

=

Z

q

mathcal M = mathbb Z_q

M=Zq,承诺空间

C

M

mathcal C simeq mathcal M

CM公共参数空间

P

P

mathcal{PP}

PP我们将同态承诺方案定义一个包含三个算法三元组

  • Setup:

    P

    P

    cdot rightarrow mathcal{PP}

    PP

  • Commit:

    P

    P

    ×

    M

    ×

    M

    C

    mathcal{PP} times mathcal M times mathcal M rightarrow mathcal C

    PP×M×MC

  • Open:

    P

    P

    ×

    M

    ×

    M

    ×

    C

    {

    t

    r

    u

    e

    ,

    f

    a

    l

    s

    e

    }

    mathcal{PP} times mathcal M times mathcal M times mathcal C rightarrow {true, false}

    PP×M×M×C{true,false}
    满足以下条件(对于

    p

    p

    S

    e

    t

    u

    p

    pp leftarrow Setup

    ppSetup):

  • 正确:对于所有

    (

    m

    ,

    r

    )

    M

    ×

    M

    (m, r) in mathcal M times mathcal M

    (m,r)M×M

    O

    p

    e

    n

    (

    p

    p

    ,

    m

    ,

    r

    ,

    C

    o

    m

    m

    i

    t

    (

    p

    p

    ,

    m

    ,

    r

    )

    )

    Open(pp, m, r, Commit(pp, m, r))

    Open(pp,m,r,Commit(pp,m,r))接受;

  • (加)同态性:如果

    O

    p

    e

    n

    (

    p

    p

    ,

    m

    1

    ,

    r

    1

    ,

    C

    1

    )

    Open(pp, m_1, r_1, C_1)

    Open(pp,m1,r1,C1)

    O

    p

    e

    n

    (

    p

    p

    ,

    m

    2

    ,

    r

    2

    ,

    C

    2

    )

    Open(pp, m_2, r_2, C_2)

    Open(pp,m2,r2,C2) 都接受,那么

    O

    p

    e

    n

    (

    p

    p

    ,

    m

    1

    +

    m

    2

    ,

    r

    1

    +

    r

    2

    ,

    C

    1

    +

    C

    2

    )

    Open(pp, m_1 + m_2, r_1 + r_2, C_1 + C_2)

    Open(pp,m1+m2,r1+r2,C1+C2) 也接受。

承诺具有绑定隐藏

定义3. 如果对于所有

m

m

M

m neq m’ in mathcal M

m=mM,以及所有

r

,

r

M

r, r’ in mathcal M

r,rM,都有

O

p

e

n

(

m

,

r

,

C

o

m

m

i

t

(

m

,

r

)

)

Open(m, r, Commit(m’, r’))

Open(m,r,Commit(m,r))拒绝,那么承诺是完美绑定的。

如果对于所有概率多项式时间(p.p.t.)的对手

A

mathcal A

A,使得

A

mathcal A

A 产生

(

m

,

r

)

(m’, r’)

(m,r)

m

m

m’ neq m

m=m 以至于

O

p

e

n

(

m

,

r

,

C

o

m

m

i

t

(

m

,

r

)

)

Open(m, r, Commit(m’, r’))

Open(m,r,Commit(m,r)) 接受的概率是可以忽略的,则承诺是计算绑定的。

定义4. 如果给定

p

p

pp

pp

m

1

m

2

m_1 neq m_2

m1=m2,分布

U

1

=

{

C

:

C

C

o

m

m

i

t

(

p

p

,

m

1

,

r

)

,

r

M

}

U_1 = {C : C leftarrow Commit(pp, m_1, r), r leftarrow M}

U1={C:CCommit(pp,m1,r),rM}

U

2

=

{

C

:

C

C

o

m

m

i

t

(

p

p

,

m

2

,

r

)

,

r

M

}

U_2 = {C : C leftarrow Commit(pp, m_2, r), r leftarrow M}

U2={C:CCommit(pp,m2,r),rM}
是(相等的,统计上无法区分的,计算上无法区分的),那么承诺方案是(完全,统计上,计算上)隐藏的。

本文使用Pedersen承诺,它是满足计算绑定完美隐藏的同态承诺

Pedersen承诺

定义5. 取

M

=

Z

q

mathcal M = mathbb Z_q

M=Zq

C

mathcal C

C同构椭圆曲线群;进一步

H

mathcal H

H一个随机预言模型为基础的点值哈希函数

  • Setup 接受一个带有区别生成

    (

    G

    ,

    G

    )

    (mathcal G, G)

    (G,G)循环群,以及辅助输入

    α

    alpha

    α。它计算

    H

    =

    H

    (

    α

    )

    H = mathcal H(alpha)

    H=H(α) 并输出

    p

    p

    =

    {

    G

    ,

    G

    ,

    H

    }

    pp = {mathcal G, G, H}

    pp={G,G,H}

  • C

    o

    m

    m

    i

    t

    (

    m

    ,

    r

    )

    Commit(m, r)

    Commit(m,r) 输出

    m

    H

    +

    r

    G

    mH + rG

    mH+rG

  • O

    p

    e

    n

    (

    m

    ,

    r

    ,

    C

    )

    Open(m, r, C)

    Open(m,r,C) 接受当且仅当

    C

    =

    m

    H

    +

    r

    G

    C = mH + rG

    C=mH+rG
    (原始的Pedersen方案使用均匀随机生成

    G

    ,

    H

    G, H

    G,H,而不是将

    H

    H

    H 视为哈希函数的输出。在随机预言模型中,这两者是等价的。)

range proof

定义6. 给定如上所述的同态承诺方案,以及

0

A

B

q

0 leq A leq B leq q

0ABq我们范围

[

A

,

B

]

[A, B]

[A,B]范围证明定义为一对随机化算法

  • P

    r

    o

    v

    e

    [

    A

    ,

    B

    ]

    Prove_{[A,B]}

    Prove[A,B]:

    P

    P

    ×

    M

    C

    ×

    M

    ×

    S

    mathcal{PP times M rightarrow C times M times S}

    PP×MC×M×S,接受一个值并生成对该值的承诺,同时生成打开信息相关范围证明。

  • V

    e

    r

    i

    f

    y

    [

    A

    ,

    B

    ]

    Verify_{[A,B]}

    Verify[A,B]:

    P

    P

    ×

    C

    ×

    S

    {

    t

    r

    u

    e

    ,

    f

    a

    l

    s

    e

    }

    mathcal{PP times C times S} rightarrow {true, false}

    PP×C×S{true,false},接受一个承诺和范围证明,要么接受要么拒绝
    其中

    S

    mathcal S

    S 表示可能范围证明空间。要求对于所有

    v

    [

    A

    ,

    B

    ]

    v in [A, B]

    v[A,B]

    (

    C

    ,

    r

    ,

    π

    )

    P

    r

    o

    v

    e

    [

    A

    ,

    B

    ]

    (

    v

    )

    (C, r, pi) leftarrow Prove_{[A,B]}(v)

    (C,r,π)Prove[A,B](v)

    V

    e

    r

    i

    f

    y

    [

    A

    ,

    B

    ]

    (

    C

    ,

    π

    )

     

    a

    n

    d

     

    O

    p

    e

    n

    (

    v

    ,

    r

    ,

    C

    )

    Verify_{[A,B]}(C, pi) and Open(v, r, C)

    Verify[A,B](C,π) and Open(v,r,C)都接受。

范围证明具有以下安全性质:
定义7(Proving)。设

0

A

B

q

0 leq A leq B leq q

0ABq一个范围证明方案证明了一个金额在范围

[

A

,

B

]

[A, B]

[A,B]内,如果对于任何输出

(

C

,

π

)

C

×

S

(C, pi) in mathcal{C times S}

(C,π)C×S概率多项式时间算法

A

mathcal A

A使得

V

e

r

i

f

y

(

C

,

π

)

Verify(C, pi)

Verify(C,π) 接受,存在一个模拟器

B

B

B,它在给定

A

A

Aoracle访问的情况下可以产生

(

v

,

r

)

(v, r)

(v,r),使得

v

[

A

,

B

]

v in [A, B]

v[A,B] 并且

O

p

e

n

(

v

,

r

,

C

)

Open(v, r, C)

Open(v,r,C) 接受。
在这里插入图片描述
两个分布相同(不可区分)

我们观察到,由于承诺方案的binding,对

[

A

,

B

]

[A, B]

[A,B]中的金额的open排除了对

[

A

,

B

]

[A, B]

[A,B]以外的任何金额的open。根据定义7,给定一个具有有效范围证明

π

π

π的承诺

C

C

C,我们可以在基于仿真的证明中明确地谈论“

C

o

p

e

n

信息

(

v

,

r

)

C的open信息(v, r)

Copen信息(v,r)”,即使不知道它(因为这个知识原则上可以由模拟器获得)。特别是,任何要求对手提供承诺公开信息安全证明,如果公开信息被范围证明所取代,将继续有效。)

Confidential Transactions

Rangeproofs

首先描述一种在区间

[

0

m

n

1

]

[0,m^n – 1]

[0mn1]上对Pedersen承诺进行有效的范围证明,其总大小

1

+

n

m

1 + nm

1+nm成比例,使用了一种基于民间传说的基于二进制分解(bitdecomposition)的范围证明变体,其中数字以基

m

m

m表示,每个数位都被证明在

[

0

m

1

]

[0,m – 1]

[0m1]之间,使用环签名

使用Borromean Ring Signatures的一种变体。

Schoenmakers [19]描述了一种使用每个数字的零知识OR证明的简单基于

b

b

b数位的范围证明。我们的工作基于这个范围证明,并做出以下更改:我们的OR证明基于Borromean Ring Signatures:

定义9(Back-Maxwell Rangeproof )。考虑一个Pedersen承诺方案,其中包含生成器

G

H

G、H

GH,并且

H

C

M

mathcal{H:C → M}

HCM是一个random oracle hash

在这里插入图片描述在这里插入图片描述
分析:证明的第一大块可看作构建最多

n

n

n个规模为

m

m

m的环。

e

0

e_0

e0作为Borromean签名多个环相结合部分,下面的第二大部分构建每个内部结构。特别地对于

v

i

=

0

v^i=0

vi=0,将其处理成与其他环不可区分的项;而对于

v

i

0

v^ineq 0

vi=0部分和原始Borromean签名几乎相同除了对

e

j

i

e_j^i

eji的定义
在这里插入图片描述
在这里插入图片描述
正确性

  • 对于

    v

    i

    0

    v^ineq0

    vi=0的项,

    j

    =

    {

    1

    ,

    .

    .

    .

    ,

    v

    i

    1

    }

    j={1,…,v^i-1}

    j={1,,vi1}

    e

    j

    i

    e_j^i

    eji

    R

    i

    R^i

    Ri的计算直接按定义恢复

  • 对于

    v

    i

    0

    v^ineq0

    vi=0的项,

    j

    =

    v

    i

    j=v^i

    j=vi的项,

    e

    v

    i

    i

    =

    H

    (

    s

    v

    i

    i

    G

    e

    v

    i

    1

    i

    [

    C

    i

    v

    i

    m

    i

    H

    ]

    )

    =

    H

    (

    k

    i

    G

    +

    e

    v

    i

    1

    i

    r

    i

    G

    e

    v

    i

    1

    i

    [

    m

    i

    v

    i

    H

    +

    r

    i

    G

    v

    i

    m

    i

    H

    ]

    )

    =

    H

    (

    k

    i

    G

    )

    e_{v^i}^i=mathcal H(s_{v^i}^iG-e_{{v^i}-1}^i[C^i-{v^i}m^iH])=mathcal H(k^iG+e^i_{v^i-1}r^iG-e_{{v^i}-1}^i[m^iv^iH+r^iG-{v^i}m^iH])=mathcal H(k^iG)

    evii=H(sviiGevi1i[CivimiH])=H(kiG+evi1iriGevi1i[miviH+riGvimiH])=H(kiG)符合定义。

  • 对于

    v

    i

    =

    0

    v^i=0

    vi=0的项,则需让其也符合

    v

    i

    0

    v^ineq0

    vi=0中的定义:

    • e

      j

      i

      =

      H

      (

      s

      j

      i

      G

      e

      j

      1

      i

      [

      C

      i

      j

      m

      i

      H

      ]

      )

      =

      H

      (

      (

      k

      j

      i

      +

      k

      0

      i

      e

      j

      1

      i

      e

      m

      1

      i

      )

      G

      e

      j

      1

      i

      [

      k

      0

      i

      e

      m

      1

      i

      G

      j

      m

      i

      H

      ]

      )

      =

      H

      (

      k

      j

      i

      G

      +

      e

      j

      1

      i

      m

      i

      j

      H

      )

      e_j^i=mathcal H(s_j^iG-e_{j-1}^i[C^i-jm^iH])=mathcal H((k_j^i+frac{k_0^ie_{j-1}^i}{e_{m-1}^i})G-e_{j-1}^i[frac{k_0^i}{e_{m-1}^i}G-jm^iH])=mathcal H(k_j^iG+e_{j-1}^im^ijH)

      eji=H(sjiGej1i[CijmiH])=H((kji+em1ik0iej1i)Gej1i[em1ik0iGjmiH])=H(kjiG+ej1imijH)

    • R

      i

      =

      e

      m

      1

      i

      C

      i

      =

      e

      m

      1

      i

      R

      i

      e

      m

      1

      i

      =

      k

      0

      i

      G

      R^i=e_{m-1}^iC^i=e_{m-1}^ifrac{R^i}{e_{m-1}^i}=k_0^iG

      Ri=em1iCi=em1iem1iRi=k0iG

(关于这个方案对原始的Borromean环签名的改进可参考比对:https://blog.csdn.net/jiongxv/article/details/125014841

与Borromean环签名两个区别

省略部分:证明这个改进的range proof算法仍然是安全的,利用前面给出的定理7~8)

Confidential Transactions

修改比特币交易的定义(定义1)。
定义10。我们将机密交易定义为以下数据

有效性条件更改如下

  • 费用必须是非负的(除了coinbase交易)
  • 所有输入承诺减去所有输出条件总和必须等于

    f

    H

    fH

    fH,并且必须有所有输入验证密钥的有效签名。

定义11验证方程是:输入金额减去输出金额等于费用(将这些金额视为承诺时,乘以H)。

总结一下,机密交易和比特币交易之间区别是:

  • 明确的金额被同态承诺替代。
  • 不是计算fee,而是明确给出并检查输入减去输出是否对其进行承诺。

通过输入签名实现付款授权,这与比特相同,但在本文没有详细讨论。然而,我们需要论证这种变化不会允许无效创建硬币

定理3考虑一个有效的机密交易:

  • 费用

    f

    f

    f输入对金额

    {

    I

    i

    }

    i

    =

    0

    k

    {I_i}^k_{i=0}

    {Ii}i=0k进行承诺,输出对金额

    {

    O

    i

    }

    i

    =

    0

    l

    {O_i}_{i=0}^{l}

    {Oi}i=0l进行承诺。

  • 假设

    k

    +

    l

    +

    1

    <

    C

    /

    R

    k + l + 1 < |mathcal C|/R

    k+l+1<C∣/R,其中输出范围证明是在范围

    [

    0

    R

    1

    ]

    [0,R−1]

    [0R1]内的,且

    f

    [

    0

    ,

    R

    1

    ]

    f ∈ [0, R−1]

    f[0,R1]
    (通常,群阶为

    C

    2

    256

    ,

    R

    264

    mathcal C≈2^{256},R≈264

    C2256,R264,因此这一要求在实践中是不可能违背的。)

  • 如果范围证明是proving的且承诺是绑定的,那么

    {

    O

    i

    }

    {O_i}

    {Oi}任何子集都不会承诺多于

    i

    =

    0

    k

    I

    i

    f

    sum^k_{i=0} I_i − f

    i=0kIif

观察到,简单地论证

i

=

0

k

I

i

f

=

i

=

0

l

O

i

sum^k_{i=0} I_i − f=sum_{i=0}^lO_i

i=0kIif=i=0lOi是不够的:例如,在输入和费用为零的情况下,攻击者可以提交两个输出量{1,−1},并且即使整个方程平衡,也可以凭空创建一个硬币。

Proof

  1. 由于所有的范围证明都是有效的,且承诺是绑定的,对于每个

    i

    i

    i,我们有

    0

    O

    i

    R

    0 ≤ O_i ≤ R

    0OiR。对于输入也是一样的,它们是先前(有效)交易的输出。

  2. 接下来,由于输入承诺减去输出承诺等于

    f

    H

    fH

    fH,我们有

    i

    =

    0

    k

    I

    i

    f

    i

    =

    0

    l

    O

    i

    0

    (

    m

    o

    d

     

    C

    )

    sum_{i=0}^kI_i − f − sum_{i=0}^l O_i ≡ 0 (mod~|mathcal C|)

    i=0kIifi=0lOi0(mod C),或者说存在某个整数

    m

    m

    m
    在这里插入图片描述

  3. 因为

    k

    +

    l

    +

    1

    <

    C

    /

    R

    k + l + 1 < |mathcal C|/R

    k+l+1<C∣/R,根据每一项的边界,我们可以把方程左边边界设为:
    在这里插入图片描述
    但这意味着

    m

    =

    0

    m = 0

    m=0,即输入金额加到输出金额上(加上fee)=0。

  4. 最后,由于所有的输出量都是正的,输出的每个子集的和必须小于或等于

    i

    =

    0

    k

    I

    i

    f

    sum^k_{i=0} I_i − f

    i=0kIif,如所希望的那样。证毕。

Performance

考虑一个群

G

mathcal G

G,其中标量和群元素都在1个空间单位编码(实际上是32字节或256位)。我们对比了三种方案:

  • 一种使用个数字单独的AOS环签名的朴素的民间距离证明方案;
  • 一种是使用在Elements Alpha[2]中实现Borromean环签名[15];
  • 本文方案。
    进行了渐进比较,也看了具体情况

    2

    38

    3

    24

    2^{38}≈3^{24}

    238324虽然naive和Alpha方案在基数4下是空间最优的,但我们的方案在基数3下是空间最优
    在这里插入图片描述

Confidential Assets

给出资产标签的定义(承诺的形式)

资产承诺和担保证明

定义12给定某个资产描述A(其精确形式在第4.4节中给出),相关的资产标签元素

H

A

G

H_A ∈ mathcal G

HAG,它是通过使用A作为辅助输入执行Pedersen承诺Setup得到的。

定义13给定一个资产标签

H

A

H_A

HA,一个(暂时的)资产承诺是形式为

H

=

H

A

+

r

G

H = H_A + rG

H=HA+rG的点,其中

r

r

r是均匀随机选择的。

在下一节中,使用这些资产承诺来代替Pedersen承诺中的生成

H

H

H。下面的定理证明了这一点。

定理4。设

H

H

H是对资产标签

H

A

H_A

HA的资产承诺,

C

C

C是一个Pedersen承诺,使得

O

p

e

n

H

(

v

,

r

,

C

)

Open_H(v, r, C)

OpenH(v,r,C)接受。那么如果

H

A

=

H

+

s

G

H_A = H + sG

HA=H+sG,那么

O

p

e

n

H

A

(

v

,

r

s

v

,

C

)

Open_{H_A}(v, r − sv, C)

OpenHA(v,rsv,C)也会接受。

推导一下:

O

p

e

n

H

(

v

,

r

,

C

)

=

C

=

v

H

+

r

G

=

v

(

H

A

s

G

)

+

r

G

=

v

H

A

+

(

r

s

v

)

G

Open_H(v, r, C)=C=vH+rG=v(H_A-sG)+rG=vH_A+(r-sv)G

OpenH(v,r,C)=C=vH+rG=v(HAsG)+rG=vHA+(rsv)G

这个定理是直接的,它意味着对某个资产承诺作为生成元的Pedersen承诺也是对同一金额以底层资产标签作为生成元的Pedersen承诺。此外,任何知道因子

s

s

s和对于一个生成元的open信息的人都可以确定对于另一个生成元的open信息。

这样的Pedersen承诺不仅对承诺的金额进行承诺,还对底层资产标签进行承诺,具体如下:

定理5。如果存在一个可以在以下游戏中以非可忽略概率取胜的ppt算法

A

mathcal A

A,那么存在一个模拟器

B

mathcal B

B,该模拟器可以以非可忽略的概率解离散对数问题(对于生成元

G

mathcal G

G)。

  1. A

    mathcal A

    A调用

    S

    e

    t

    u

    p

    i

    Setup_i

    Setupi生成资产标签

    H

    i

    H_i

    Hi,对于

    i

    =

    0

    ,

    1

    ,

    .

    .

    .

    ,

    n

    i = 0, 1, … , n

    i=0,1,,n

  2. A

    mathcal A

    A生成承诺

    C

    i

    C_i

    Ci打开

    (

    v

    i

    ,

    r

    i

    )

    (v_i, r_i)

    (vi,ri),使得对于

    i

    =

    1

    ,

    .

    .

    .

    ,

    n

    i = 1, … , n

    i=1,,n

    O

    p

    e

    n

    i

    (

    v

    i

    ,

    r

    i

    ,

    C

    i

    )

    Open_i(v_i, r_i, C_i)

    Openi(vi,ri,Ci)接受。

  3. A

    mathcal A

    A生成打开

    (

    v

    ,

    r

    )

    (v, r)

    (v,r),使得

    v

    0

    v ≠ 0

    v=0

    O

    p

    e

    n

    0

    (

    v

    ,

    r

    ,

    i

    =

    1

    n

    C

    i

    )

    Open_0(v, r, sum^n_{i=1} C_i)

    Open0(v,r,i=1nCi)接受。

(证明略)

根据Definition 7后面的评论如果要求敌手产生范围证明而不是open信息,则相同的定理成立

我们将向所有交易输出附加新的随机资产承诺,并且我们需要一种在不揭示映射的情况下链接输入和输出的方法。以下工具将是必不可少的。

定义14。资产满射证明(ASP)方案包括以下算法

  • Prove接受“输入”资产承诺集合

    {

    H

    i

    }

    i

    =

    1

    n

    {H_i}^n_{i=1}

    {Hi}i=1n,一个“输出”承诺

    H

    =

    H

    i

    +

    r

    G

    H = H_{i^∗} + rG

    H=Hi+rG(其中

    1

    i

    n

    1 ≤ i^∗ ≤ n

    1in),以及

    r

    r

    r。它输出一个证明

    π

    π

    π

  • Verify接受集合

    {

    H

    i

    }

    i

    =

    1

    n

    {H_i}^n_{i=1}

    {Hi}i=1n

    H

    H

    H和一个证明

    π

    π

    π然后要么接受要么拒绝

我们经常说ASP是从输入承诺的集合

{

H

i

}

{H_i}

{Hi}到输出承诺

H

H

H

定义15。如果由Prove算法生成的证明

π

π

π是盲因子

r

r

r的零知识证明(zkPoK),则ASP是安全的。

这很容易通过环签名构造,环签名是其其中一个密钥zkPoK,例如AOS环签名。

定义16。AOS ASP如下:

  • Prove计算

    i

    =

    1

    .

    .

    .

    n

    i = 1,…,n

    i=1n

    n

    n

    n差值

    H

    H

    i

    H −H_i

    HHi(其中之一将是

    r

    r

    r),并使用这些差异计算一个空消息的环签名。

    π

    π

    π就是这个签名

  • Verify计算相同的差值们并验证环签名
    如果底层的AOS环签名方案是zkPoK,那么AOS ASP是安全的,这是显而易见的 。

Confidential Assets

考虑在单个交易中支持多个不可互换的资产类型的方案的扩展。

定义17。机密资产交易是以下数据

  • 一个输入列表,有两种形式之一:
    • 对另一笔交易输出的明确引用,使用该输出的验证密钥签名
    • 资产发行输入,其具有明确的金额和资产标签;
  • 一个输出列表包含
    • 一个验证密钥,
    • 具有从所有输入资产承诺到

      H

      o

      H_o

      Ho的ASP的资产承诺

      H

      o

      H_o

      Ho

    • 使用生成元

      H

      o

      H_o

      Ho而不是

      H

      H

      H的Pedersen承诺,其金额使用Back-Maxwell范围证明(也使用

      H

      o

      H_o

      Ho而不是

      H

      H

      H)证明位于范围

      [

      0

      ,

      2

      n

      1

      ]

      [0, 2^n − 1]

      [0,2n1]内,其中

      n

      n

      n明显小于承诺值群的比特长度

  • 一个fee

    {

    (

    f

    i

    ,

    H

    i

    )

    }

    i

    =

    1

    n

    {(f_i, H_i)}^n_{i=1}

    {(fi,Hi)}i=1n,明确列出

    • 这里

      f

      i

      f_i

      fi对应tag

      H

      i

      H_i

      Hi的资产的标量金额。为了简单起见,要求所有的

      H

      i

      H_i

      Hi都是不同的。(

    • 注意,用于支付费用的资产类型必须被揭示。实际上,我们期望一个工作系统只使用一种资产,比如比特币,作为计fee单位,因此不会失去隐私
    • 每个

      f

      i

      f_i

      fi必须始终是非负的;

    • 资产起源于资产发行输入,这取代了机密交易中的coinbase交易

有效性方程与机密交易的相同,只是费用承诺的计算为

i

=

1

n

f

i

H

i

sum^n_{i=1} f_iH_i

i=1nfiHi,而不仅仅是

f

H

fH

fH

Performance

在3.3节中,我们描述了附加到每个交易输出的范围证明的大小。这对于机密资产是不变的,但我们还需要两个额外数据:资产承诺和显示此承诺合法的ASP

例如,一个资产标签

H

A

H_A

HA的承诺

H

H

H,AOS ASP用环签名构造,单个环签名规模

n

+

1

n+1

n+1

在3.3节的单元中,资产承诺的规模为

1

1

1,ASP的规模为

n

+

1

n + 1

n+1,其中

n

n

n给定输出可能来自的输入数量。对于任何具有

m

m

m个输出和

n

n

n个输入的整个交易,因此附加数据的大小为

m

(

n

+

2

)

m(n + 2)

m(n+2)

我们可以通过隐私为代价来改进这一点:使用较弱形式的ASP来改进

n

=

3

n=3

n=3。那么附加的数据将只花费

5

m

5m

5m,这样渐进性能更好

Issuance 发行

在区块链的上下文中,希望确保任何资产A只能被使用一次,以确保无法通过多个独立的发行来膨胀资产。将发行与UTXO的花费关联起来,并确保每个特定UTXO最多只有一个发行,可以实现这种唯一属性。将花费的UTXO的明确引用发行者指定的值一起哈希,即Ricardian contract hash,生成Pedersen承诺的辅助输入

A

A

A

定义18给定要花费的输入

I

I

I,它本身是对另一笔交易输出的明确引用,以及发行者指定的Ricardian contract

C

C

C,资产熵

E

E

E定义为

H

a

s

h

(

H

a

s

h

(

I

)

H

a

s

h

(

C

)

)

Hash(Hash(I)||Hash(C))

Hash(Hash(I)∣∣Hash(C))

Ricardian contract是一份机器解析法律文件,规定了资产的使用条件,尤其是赎回条件这样的合同可能如何设计执行详细信息超出本文的范围。在这里重要的是这样的文件存在,并且其哈希在发行资产时被不可撤销地承诺

定义19。给定资产熵

E

E

E,资产标签是通过使用

H

a

s

h

(

E

0

)

Hash(E||0)

Hash(E∣∣0)作为辅助输入执行Pedersen承诺设置得到的元素

H

A

G

H_A ∈ mathcal G

HAG。每个非coinbase交易输入最多可以关联一个新的资产发行:

定义20。资产发行输入包括:

  • 一个UTXO花费

    I

    I

    I解释为同一交易的非发行输入);

  • 一个Ricardian合同

    C

    C

    C

  • 一个初始发行的显式

    v

    0

    v_0

    v0,或者Pedersen承诺

    H

    H

    H和BackMaxwell范围证明

    P

    0

    P_0

    P0

  • 一个布尔字段,指示是否允许重新发行。重新发行将在下节中解释

重新发行和能力令牌

资产可以是固定发行的,或者可选择重新发行

  • 这个功能是一个令牌,为其所有者提供在初始发行后的任何时点改变流通中的资产数量的能力。
  • 创建一个支持重新发行的资产时,初始资产发行和重新发行能力令牌同时生成。

定义21。给定资产熵

E

E

E资产重新发行能力通过使用

H

a

s

h

(

E

1

)

Hash(E||1)

Hash(E∣∣1)作为辅助输入执行Pedersen承诺设置得到的元素

H

A

G

H_A ∈ mathcal G

HAG

支持重新发行的资产在其资产发行输入中指示这一点,并且交易包含一个额外的金额为

1

1

1的输出,承诺到资产标签

H

A

H_A

HA

通过这种方式,资产标签与相应的重新发行能力相关联,持有这种能力的人可以通过揭示能力的盲因子以及原始资产熵来主张他们的重新发行权利

定义22。资产重新发行输入包括对包含资产重新发行能力的UTXO的花费;原始资产熵E;正在花费的UTXO的资产承诺的盲因子;以及显式的重新发行金额vi,或者Pedersen承诺H和Back-Maxwell范围证明Pi。

这种重新发行机制通用基于能力的身份验证方案的一个特定实例可以使用相同的方案来定义控制对其他受限操作的访问的能力

Performance

与机密交易不同,在机密资产中,每个输出都必须附带范围证明,而且每个机密资产输出还必须有一个资产标签和资产满射证明。与第3.3节一样,我们认为曲线点和标量具有相同的大小
对于一个金额在范围

[

0

m

n

)

[0,m^n)

[0mn)内并引用A个资产的输出,因此范围证明和ASP的总大小是

(

1

+

m

n

)

+

(

2

+

A

)

(1+mn)+(2+A)

(1+mn)+(2+A),其中第一个术语是范围证明的贡献,第二个是资产标签和ASP的贡献。
(范围证明

1

+

m

n

1+mn

1+mn,资产标签1,ASP

A

+

1

A+1

A+1
对于一个

[

0

3

24

)

[0,3^{24})

[0324)范围证明和三个输入的原型示例,总共是78个标量,或19968位。

1

+

3

×

24

+

2

+

3

=

78

1+3times24+2+3=78

1+3×24+2+3=78)(注意不要把机密资产和机密交易混为一谈)

“Small Assetsand “Big Assets

  • Big Assets:用ASP绑定输入与输出资产类型,使得机密资产能够在支持无限多种资产类型的区块链上运行,这些资产类型可以在链定义之后添加
  • Small Assets:另一种方案,适用于一小组固定的资产标签,是在链的开始定义资产标签,并使每个输出包含全局资产标签列表的ASP。
  • 还可以通过在每个交易中选择其输出具有ASP的资产标签子集来使用中间方案,具有全局动态资产列表。一般来说,有很大的空间可以根据特定用例的ASP大小和隐私之间的最佳权衡进行调整。

Future Research

原文地址:https://blog.csdn.net/jiongxv/article/details/134463581

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_32704.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注