矿视界译文:匿名系统的体系结构设计

书接上文,上次矿视界给大家讲解了SERO技术革新(一)——区块链隐私保护的必要性,没看过的可以搜索矿视界官网。

为了实现更强的保密性能,SERO 匿名系统的体系结构设计在满足系统性能要求的同时,还需遵循以下基本原则。

The basic principle

基本原则

○ 不可追溯 — 区块链网络中每笔交易都有输入和输出通道,它们构成了一个非循环交易图,在这个图上所有交易流都可以被跟踪,所有交易序列都可以被串联、追溯。SERO 的设计初衷是切断两个交易之间的联系,使攻击无法进行。

○ 不可关联 — 区块链网络中的每个用户都有自己的收集地址。一旦该地址与实际用户身份相关联,网络中发生在该地址上的所有交易都将与对应用户的身份关联,从而导致将关联的行为暴露给该地址。当用户创建用于匿名的新假名公钥时,所有的交易和余额仍然是公开可见的。SERO 使用加密技术使支付地址不可关联。

○ 反统计分析 — 实际用户行为具有统计特征。如果区块链网络中的交易数据具有反映这种统计特性相关内容的功能,则可以通过对区块链数据的统计分析来推断属于特定用户的地址。当使用环签名时,如果环成员或节点是恶意的,抵抗统计分析的能力将会降低。而 SERO 能够通过技术手段完全隐藏地址之间的关系。

○ 可选审计解决方案 — 对于可供选择的审计方案和某些复杂的业务程序应用,SERO 用户可以选择可信的第三方对交易进行财务审计,并能够让第三方跟踪交易中的特定信息。

Protocol design

协议设计

SERO 协议的设计简要描述如下:

账户系统:

null

帐户分为两类:用户帐户与合约帐户。用户帐户是用户自主选择的 32 字节的帐户,合约帐户自动生成与用户安装的智能合约环境相对应的 64 字节地址;以上两类帐户都是唯一且不可重复的。

用户帐户可以生成 64 字节私钥 SK 和 64 字节公钥 PK,作为用户的支付地址。安装或调用智能合约时,钱包会根据当前条件生成一个临时地址。该临时地址不能与用户的私钥和公钥关联,并且只能使用一次。

安装智能合约时,钱包会根据当前条件将临时地址更改为 64 字节智能合约地址(CADDR)。当节点接收到地址时,需要确保合约地址以前没有出现过。

null

资产系统:

用户帐户或智能合约帐户都具有管理无限种类资产的属性,不仅仅是 SERO 币的结算交易费,账户下的所有资产都具有与 SERO 币相同的交易特征。除了 SERO 币外,其他资产可通过智能合约生成(类似以太坊)。

为了便于记忆,可为每项资产指定一个长度不超过 32 字节的名称(代币名),这些名称不允许重复使用。当账户执行余额查询或转账操作时,可以指定资产类型。

输出和输入结构:

null

输出结构:

null

输入结构:

锚是输入数据所在哈希树的根。Nil 是用于销毁已使用 OUT 的 32 字节哈希,Til 是用于交易跟踪的 32 字节哈希,并且仅对系统内的 OUT 有效。AssertCM 是输入的资产协议。OutCM 是交易的输出协议。

见证系统:

SERO 协议使用非交互式零知识证明(NIZK),在生成交易时需要提供资产来源的见证信息。每个节点将根据见证信息进行验证。SERO 使用哈希树算法来维护记录状态更改的见证系统。系统将在节点提供验证功能,在钱包端提供认证信息。

根=根哈希(位置、叶、路径):

根即当前哈希树的根

叶即当前位置的叶

路径即从叶至根的证明路径

证明系统:

null

SERO 的证明系统包括一个基于有向无环图的计算线路,用于描述每个 SERO 交易的内部约束:各种资产类型的输入和输出平衡,公钥和私钥的验证,交易的有效性,见证的有效性等。

加载数据的线路可以通过非交互式零知识证明(NIZK)生成证明。从提交的证明中,节点可以验证线路中加载的各种参数和约束条件,同时又能隐藏大量的详细信息。

步骤流程:

A. 计算

用户使用账户、资产和见证系统提供的信息,并根据当前运算需要提供输入数据。计算规则在离链环境下运行以获得结果。

B. 证明

用户使用随机变量 r 生成 STX 和计算结果,并将其提交给节点。STX 包括检查数据 Ci、编码数据 Ei 和验证数据 Pi。

STX=PROVE(RESULT,r)

STX={(C0. C1……Cn), (E0, E1……En), (P0, P1……Pn)}

C. 验证

节点收到 STX 后,会在见证系统和证明系统中确认 Ci。当证书被验证为正确时,节点将接受 STX。

RET_i=VERIFYi(C_i)

Check=ret_0 ret_1…ret_n

D. 确认

当资产接收方与已验证交易 STX 同步时,接收方使用私钥对编码数据 E_i 进行解密,并生成明文 D_i。明文 D_i 和证明 P_i 被输入到证明系统进行验证;成功即表示交易已验证。当交易被 n 个块确认时,交易接收者可认为交易已被确认。

D_i=FETCH_i (E_i,ACCOUNT)

ret_i=CONFIRM_i (D_i,P_i)

Check=ret_0 ret_1…ret_m

值得注意的是,SERO 的执行步骤是开放的,这意味着这种对步骤和参数的抽象描述支持持续升级,随后添加的功能对整体架构的影响也微乎其微。

以上就是 SERO 匿名系统的体系结构设计啦,下期矿视界将为大家带来世上最快零知识证明加密库 Super-ZK 的介绍。

文章来源:medium。

翻译&校对:有条鱼。

本文由矿视界(奇迹摩尔)翻译整理编辑,如需转载,请标明出处。

— to be continue —

打开APP阅读更多精彩内容