PlatON上的隐私交易(二)

原创 PlatON

PlatON上的隐私交易(二)

由于区块链技术本身的特点及发展方向,隐私交易愈加成为人们关注的热点,在保证去中心化的同时保护用户交易的数据隐私是资产价值自由流动之本,本文分为三部分详细解析PlatON上的隐私交易,为分布式金融的持续蓬勃发展提供至关重要的底层支撑。

| 算法原理

法概念和定义

  1. 票据note:借鉴Bitcoin的UTXO模型,一个票据「note」即是一个UTXO,其是对金额的加密后的表示,逻辑上包括金额「value」、属主「owner」。金额就是该票据的密文形式;属主信息是由该票据的spending key决定,在后续章节会进一步描述;
  2. JoinSplit交易(简称「交易」):在本方案中,定义一个交易为多个票据和其他信息的集合。其他信息是指为验证交易逻辑包含的必要的数据,包括零知识证明等。
  3. 付款人**payer**,收款人**payee**:在一个交易里,指花费了票据的人,和拥有花费新创建的票据的权利的人。这里付款人,需要与发送者sender进行区分,后者是发送了交易给区块链网络的人;因此,sender可以与payer是同一个实体,也可以是被实际payee授权的一个第三方。

方案介绍

密钥和票据

借鉴DKSAP(Dual-Key Stealth Address Protocol) 协议,用户的钱包需要包括两个密钥对,spending key-pair和viewing key-pair:

  • a spending key-pair:ssk ,spk ; 用于授权一个交易。用户公开 spk
  • a viewing key-pair:vpk ,vpk ; 用于审计或查看一个或者多个票据。用户公开vpk 。

当payer需要创建一个新的票据 (output note) 时,首先生成一个临时密钥ephemeral key pair, (epkepk),用payee 的public viewing key vpk 一起生成一个shared secret (采用Diffie-Hellman key agreement原理)。随后,用shared secret和payee的 spk 一起生成一个该新票据的spending key-pair, 记为 nk 。注:每个票据都有一个独立的spending key-pair,该spending key-pair定义了该票据的ownership, 谁知道该spending key-pair的私钥部分,谁就具有花费该票据的权利。

DKSAP 的具体协议流程

假设Bob (payee)的密钥为:spending key-pair:( s,S=gs), viewing key-pair: ;( v,V=gvg为椭圆曲线群的生成元。

Alice (payer)先生成一个临时密钥对( r,gr ) , 然后将公钥R=gr 部分与放入Note数据中进行公开。

Alice计算一个shared secret: c=H(V r) ,H  是一个满足密码安全的哈希函数。这里由于采用了ECDH原理,另一方Bob也可以计算 。c=H(R v。Alice计算本次交易中Bob的交易地址为:Q=R . gc

Bob动态地检查链上交易,试图找到发送给他的Note。他可以根据每个Note中的R,计算出相应的shared secret,然后计算对应的Note接收地址 Q‘,与每个Note的接收地址Q进行比对,如果比对成功,则用Q背后的私钥部分c+s进行花费(签名),这里 gc+s=S.gc 。

Transfer交易流程

假设Alice需要转账给Bob 7 XATP,且Alice总共拥有票据包括N1:5 XATP,N2:3 XATP。在一个明文的JoinSplit交易里,N1N2作为input notes, Alice会创建N3:7 XATP,N4:1 XATP, 且指定N3N4属主信息分别为Bob和Alice。

一:payer Alice创建一个交易临时密钥对,JoinSplit key-pairPlatON上的隐私交易(二)

二:Alice计算input note commitments如下:

PlatON上的隐私交易(二)
PlatON上的隐私交易(二)
PlatON上的隐私交易(二)

(未完待续)

本文转载自https://mp.weixin.qq.com/s/IObxB5QWFQG2wIfH_XeqOA

(0)
PlatONWorld-M6的头像PlatONWorld-M6管理员
上一篇 20 7 月, 2021 08:36
下一篇 20 7 月, 2021 22:26

相关推荐

发表回复

登录后才能评论