论文笔记:Confidential Assets

news2024/11/20 20:19:25

Confidential Assets

  • 描述了一种称为“保密交易”的方案,该方案模糊了所有UTXO的金额,同时保持了不创建或销毁硬币的公共可验证性。
  • 进一步将此方案扩展到“保密资产”,一种单一的基于区块链的分类帐可以跟踪多种资产类型的方案。
  • 将保密交易扩展到不仅模糊输出金额,还模糊其资产类型,从而提高所有资产的隐私和可替代性。

文章结构:

  • Preliminaries:定义交易模型,承诺(特性)、范围证明(安全性定义)
  • 改进的Confidential Transactions:将交易中的明文金额改成承诺的金额,改进范围证明,并证明改进交易的安全性和性能优化。
  • Confidential Assets:机密资产协议。

Preliminaries

输入输出模型

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

  • 一个包含验证密钥金额输出列表。
  • 一个包含对其他交易输出的明确引用的输入列表。这些输入还具有使用其相应输出的验证密钥的签名
  • 一个fee,计算方式为总输入金额减去总输出金额,并由网络捕获。

(还需要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 A 的oracle访问的情况下可以产生 ( 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成比例,使用了一种基于民间传说的基于二进制分解(bit-decomposition)的范围证明变体,其中数字以基 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^i\neq 0 vi=0的部分和原始Borromean签名几乎相同,除了对 e j i e_j^i eji的定义
在这里插入图片描述
在这里插入图片描述
正确性

  • 对于 v i ≠ 0 v^i\neq0 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^i\neq0 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^i\neq0 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}^i\frac{R^i}{e_{m-1}^i}=k_0^iG Ri=em1iCi=em1iem1iRi=k0iG

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

与Borromean环签名两个区别:

  • 没有 s 0 i s^i_0 s0i值,这在Borromean环签名构造中用于计算 e ^ 0 \hat e_0 e^0,从而在总体证明中节省 i i i个标量。
  • 承诺 C i C^i Ci不再包含在任何哈希中(在计算子承诺到数字 ( m − 1 ) (m−1) (m1)时,如Prove算法的第4(a)ii步所示,这是必要的)。不幸的是,由此产生的构造在一般情况下不再是一个安全的环签名;安全性的证明取决于所有密钥都是绑定承诺而不是任意的公钥

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

Confidential Transactions

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

  • 一个输出列表,包含验证密钥、对金额的Pedersen承诺和Back-Maxwell范围证明,证明它位于区间 [ 0 , 2 n − 1 ] [0, 2^n −1] [0,2n1],其中 n n n明显小于承诺值群的比特长度。
  • 一个输入列表,这些输入是对其他交易输出的明确引用,并使用这些输出的验证密钥进行签名。
  • 一个明确列出的费用 f f f

有效性条件更改如下:

  • 费用必须是非负的(除了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=1...n 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+3\times24+2+3=78 1+3×24+2+3=78)(注意不要把机密资产和机密交易混为一谈)

“Small Assets” and “Big Assets”

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

Future Research

  • 范围证明效率。
  • ASP效率。限制输入集规模可以提高效率,但这会以用户隐私为代价,最好是避免这种权衡。
  • 聚合范围证明。如果能够聚合范围证明(例如,将 C 1 C_1 C1 C 2 C_2 C2承诺在 [ 0 , 2 n − 1 ] [0,2^n − 1] [02n1]中的值的证明合并成一个证明,证明 C 1 + C 2 C_1 + C_2 C1+C2承诺在 [ 0 , 2 n + 1 − 1 ] [0,2^{n+1} − 1] [02n+11]中的值),这也将提高基于区块链的系统的效率,因为证明可以放置在一个Merkle汇总树中,其节点包含其子节点的聚合范围证明。然后,验证者只需检查根节点,以确保整个树不会导致通货膨胀延迟对个别输出上的证明的检查,直到这些输出被花费
  • 量子抗性。本文中描述的原语都依赖于椭圆曲线离散对数假设,这被认为在量子对手面前是不安全的。量子困难性的类似物需要替代Pedersen承诺、ASP使用的环签名以及范围证明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1269379.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VSCode编译多个文件

打开tasks.json文件&#xff0c;找到"$ {file}“这一行。然后在其后面添加你想要编译的文件即可。 比如我这里是想要编译当前文件夹下的所有.cpp文件&#xff0c;那么我就直接把”$ {file}"给注释掉了&#xff0c;然后再使用通配符来代表所有.cpp文件。 最后解释以下…

支持向量机,硬间隔,软间隔,核技巧,超参数设置,分类与回归

SVM&#xff08;Support Vector Machine&#xff0c;支持向量机&#xff09;是一种非常常用并且有效的监督学习算法&#xff0c;在许多领域都有广泛应用。它可以用于二分类问题和多分类问题&#xff0c;并且在处理高维数据和特征选择方面非常强大。SVM算法的核心思想是通过找到…

vue3项目安装vite-plugin-mock 项目报错

vue3vite项目安装了vite-plugin-mock之后&#xff0c;根据官网配置使用&#xff0c;vscode会出现波浪线&#xff0c;启动项目&#xff0c;发现运行不了 解决办法&#xff1a; 安装vite-plugin-mock2.9.6的版本即可 pnpm install mockjs vite-plugin-mock2.9.6 -D

RabbitMQ的Web管理页面

访问页面 http://IP:15672/账号密码默认都是&#xff1a;guest 主页概览 Overview 显示当前RabbitMQ Broker的运行信息、连接信息、集群信息以及配置信息等。 连接 Connections 无论生产者还是消费者&#xff0c;都需要与RabbitMQ建立连接后才可以完成消息的生产和消费&#…

frida的hook代码:在python中格式,以及常用hook方法

js 写hook格式 首先frida的hook代码是通关JavaScript进行实现的&#xff0c;而且调用是通关python进行调用的 如果单独写一个js&#xff0c;就需要通关frida 命令进行启动了 首先聊一下frida的几个常用命令&#xff1a; -U&#xff1a;连接USB设备。-F&#xff1a;附加最前…

全球高纯铜靶材总体规模分析:行业现状及发展趋势

高纯铜靶材是指采用纯度在 4N&#xff08;Cu≥99.99%&#xff09;以上的金属铜生产的靶材&#xff08;N 即代表铜的纯度&#xff0c;N 前面的数字越大铜纯度越高&#xff09;。 高纯铜靶材是一种用于薄膜沉积工艺的材料&#xff0c;具有极高的纯度和特定的物理和化学性质。它通…

HotSpot 虚拟机中的对象

1、对象的创建 Java 是一门面向对象的编程语言&#xff0c;程序运行过程中无时无刻都有对象被创建出来。在语言层面上&#xff0c;创建对象通常仅仅是一个 new 关键字&#xff0c;而虚拟机中&#xff0c;对象&#xff08;仅限于普通 Java 对象&#xff0c;不包括数组和 Class …

【批处理常用命令及用法大全】

文章目录 1 echo 和 回显控制命令2 errorlevel程序返回码3 dir显示目录中的文件和子目录列表4 cd更改当前目录5 md创建目录6 rd删除目录7 del删除文件8 ren文件重命名9 cls清屏10 type显示文件内容11 copy拷贝文件12 title设置cmd窗口的标题13 ver显示系统版本14 label 和 vol设…

C51--LCD1602显示屏

LCD602显示&#xff1a; 1、概述 LCD602是一种工业字符型液晶&#xff0c;能够同时显示16x02&#xff0c;即32字符&#xff08;16列&#xff0c;2行&#xff09; 2、引脚&#xff1a; VSS&#xff1a;电源地VDD&#xff1a;电源正极——5V电源VO&#xff1a; 液晶显示偏压 …

【深度学习笔记】06 softmax回归

06 softmax回归 softmax运算损失函数对数似然Fashion-MNIST数据集读取数据集读取小批量整合所有组件 softmax回归的从零开始实现初始化模型参数定义softmax操作定义模型定义损失函数分类精度训练预测 softmax回归的简洁实现 softmax运算 softmax函数能够将未规范化的预测变换为…

数字系列——数字经济(2)​

上次呢&#xff0c;已经为大家捋了什么是数字经济&#xff1f;、数字经济的特点有哪些&#xff1f;和数字经济的构成&#xff0c;对于数字经济有了基础性的了解&#xff0c;今天继续为大家捋一捋。 数字经济的发展 1.互联网的普及 互联网作为数字经济的坚实基础&#xff0c;其…

P27 C++this 关键字

目录 前言 01 this关键字的引入 02 this关键字 前言 本章的主题是 C 中的 this 关键字。 以前第一次学qt的时候就遇到了this关键字&#xff0c;那时候还不是很会C&#xff0c;所以有点懵&#xff0c;现在我们就来讲解以下C中的this关键字 C 中有一个关键字 this&#xff0…

致敬成长:借助昇腾AI,00后开发者如何破解睡眠呼吸辅助诊断难题

导读&#xff1a;两年&#xff0c;如何从AI小白到优秀开发者&#xff1f; 打呼噜正在成为人们身边隐形的“健康杀手”。据《2017年中国人睡眠质量及科普报告》显示&#xff0c;约5000万人在睡眠中发生过呼吸暂停。30~69岁成年人中&#xff0c;阻塞性睡眠呼吸暂停综合征&#xf…

Python接口自动化测试如何设计接口测试用例(详解)

简介 上篇我们已经介绍了什么是接口测试和接口测试的意义。在开始接口测试之前&#xff0c;我们来想一下&#xff0c;如何进行接口测试的准备工作。或者说&#xff0c;接口测试的流程是什么&#xff1f;有些人就很好奇&#xff0c;接口测试要流程干嘛&#xff1f;不就是拿着接口…

柯桥学英语,商务外贸英语,BEC中级写作冲刺干货

think of… as 把……认为 eager to… 渴望 look forward to Ving 期待/盼望…… accept…as 接受……为 be certain of 对……确信 in contact with 与……接触 in accordance with 与……相符/一致 remind…of 提醒……关于 be advantageous to 有利于…… assure…of使……放…

嵌入式八股 | 校招秋招 | 笔试面试 | 精选题目

欢迎关注微信公众号【赛博二哈】获取八股PDF 并加入嵌入式求职交流群。提供简历模板、学习路线、岗位整理等 欢迎加入知识星球【嵌入式求职星球】获取完整嵌入式八股。 提供简历修改、项目推荐、求职规划答疑。另有各城市、公司岗位、笔面难题、offer选择、薪资爆料等 嵌入式…

[ISCTF2023] Crypto/PWN/Reverse

最近新生赛还挺多&#xff0c;不过这个开始后注册页面就被删了&#xff0c;没注册上。拿别人的附件作了下。 Crypto 七七的欧拉 这题只给了n,e,c这种情况一般正常没法解&#xff0c;猜n不正常 import gmpy2 import libnum from crypto.Util.number import *flagbISCTF{****…

通过抖音商城小程序门店服务预约效果如何

抖音已然成为众多企业商家经营的重要平台之一&#xff0c;尤其本地生活服务商家更可通过抖音实现套餐销售、门店引流等&#xff0c;而借势平台高额流量&#xff0c;也确实有非常高的效果。 而在实际运营中&#xff0c;随着私域化程度加快&#xff0c;无论微信还是抖音&#xf…

英语不好,能够学习编程语言吗?

可以&#xff0c;编程英语是不涉及语法、时态、人称的&#xff0c;比如&#xff1a; System.out.print("你好");此处的&#xff0c;System表示"系统"&#xff0c;out表示"在…外面"&#xff0c;print表示"打印"&#xff0c;每一个单词…

App的测试,和传统软件测试有哪些区别?应该增加哪些方面的测试用例?

从上图可知&#xff0c;测试人员所测项目占比中&#xff0c;App测试占比是最高的。 这就意味着学习期间&#xff0c;我们要花最多的精力去学App的各类测试。也意味着我们找工作前&#xff0c;就得知道&#xff0c;App的测试点是什么&#xff0c;App功能我们得会测试&#xff0…