Java SDK 提供隐私保护的接口。用来隐藏智能合约交易中的交易金额。主要有三个接口:
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<byte[]> inputs, final List<byte[]> 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<byte[]> 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 字段。 |
在文档使用中是否遇到以下问题
更多建议
匿名提交