全部产品
Search
文档中心

隐私保护接口

更新时间: 2019-08-27

Java SDK 提供隐私保护的接口,用来隐藏智能合约交易中的交易金额。隐私保护接口主要有 3 个:

  • ValueHiding:用于加密交易金额。
  • PedersenCommitment:用于创建交易金额的承诺,以及使用 ValueHiding 加密交易金额。
  • Proofs:用于创建交易所需的证明。

ValueHiding

函数原型 函数说明
ValueHiding() 创建一个默认的 ValueHiding
ValueHiding(final byte[] pub, final byte[] priv, HidingType type) 创建一个 ValueHiding,pub 为公钥,priv 为私钥。通过 type 指定加解密方式,可以为 HidingType.ECIES 或者 HidingType.RSA_2048
该函数可以通过 priv 推导出 pub;如果仅提供 pub,那么 ValueHiding 只能用来加密。
public boolean loadKey(final String path, final String passwd) 使用 path 指定秘钥文件初始化 ValueHiding;passwd 为秘钥文件对应的密码。
public static ValueHiding genKeyPair(HidingType type) 随机一个生成 ValueHiding;通过 type 指定加解密方式,可以为 HidingType.ECIES 或者 HidingType.RSA_2048

PedersenCommitment

函数原型 函数说明
public native static byte[] genBlind() 生成盲因子,用于创建 Pedersen commitment(佩德森承诺)和范围证明。
public static PedersenCommitment createCommitment(long value, final byte[] blind, ValueHiding keypair, final byte[] extensions) 为交易金额 value 创建承诺,blind 为盲因子,keypair 用于加密交易金额和 blind。
public static long getDecryptedValue(final byte[] commitment, ValueHiding keypair) 使用 keypair 从commitment 表示的承诺中解密交易金额。
public static byte[] getDecryptedBlind(final byte[] commitment, ValueHiding keypair) 使用 keypair 从 commitment 表示的承诺中解密交易盲因子。
public static byte[] computeBlindDelta(final List inputs, final List outputs) 计算 inputs 表示的盲因子列表和 outputs 表示的盲因子列表之差,盲因子之差用于证明输入金额总数和输出金额总数相等。

Proofs

函数原型 函数说明
Proofs() 创建Proofs对象
public boolean addCommitment(PedersenCommitment commitment) 添加一个创建好的输出金额的 Pedersen commitment。
public void setBlindDelta(final byte[] delta) 设置输入总金额和输出总金额的盲因子之差。
public boolean addRangeProof(final List values, final List minValues, final List blindValues,final List commitments) 添加范围证明,values 为输入金额列表;min_value 一般设置为 0,表示范围证明要证明的最小值;blind_values 为创建输入金额对应的 Pedersen commitment 时所用的盲因子;commitments 为 values 里金额对应的 Pedersen commitment 在 Proofs 对象中的索引值。
索引值从 0 开始,Pedersen commitment 对应的索引值和调用 AddCommitment 时次序对应。
public final byte[] toBytes() 将 Proofs 对象序列化为 bytes;创建隐私保护交易时需要将 Proofs 序列化后的 bytes 添加到 Transaction 里的 extensions 字段。