Java SDK は、スマートコントラクトトランザクションでトランザクション金額を非表示にするためのプライバシー保護 API を提供します。次の 3 つの API を使用できます。
- 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 を指定できます。この関数では、pub は priv から推測できます。 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 コミットメントとレンジ証明を作成するためのブラインドファクターを生成します。 |
| public static PedersenCommitment createCommitment(long value, final byte[] blind, ValueHiding keypair, final byte[] extensions) | トランザクション金額へのコミットメントを作成します。 blind はブラインドファクターを示し、keypair はトランザクション金額とブラインドファクターを暗号化します。 |
| public static long getDecryptedValue(final byte[] commitment, ValueHiding keypair) | keypair はコミットメントからトランザクション金額を復号します。 |
| public static byte[] getDecryptedBlind(final byte[] commitment, ValueHiding keypair) | keypair はコミットメントからブラインドファクターを復号します。 |
| public static byte[] computeBlindDelta(final List<byte[]> inputs, final List<byte[]> outputs) | inputs で表されるブラインドファクターのリストと outputs で表されるブラインドファクターのリストの差を計算します。ブラインドファクターの差は、合計入力金額が合計出力金額と等しいことを証明するために使用されます。 |
Proofs
| 関数プロトタイプ | 関数の説明 |
|---|---|
| Proofs() | Proofs オブジェクトを作成します。 |
| public boolean addCommitment(PedersenCommitment commitment) | 出力金額に対して作成された pedersen コミットメントを追加します。 |
| public void setBlindDelta(final byte[] delta) | 合計入力金額のブラインドファクターと合計出力金額のブラインドファクターの差を設定します。 |
| public boolean addRangeProof(final List values, final List minValues, final List<byte[]> blindValues,final List commitments) | レンジ証明を追加します。 values は入力金額のリストを示します。 minValues はレンジ証明の最小値を示し、通常は 0 に設定されます。 blindValues は、入力金額への pedersen コミットメントの作成に使用されるブラインドファクターを示します。 commitments は、Proofs オブジェクト内の values で指定された金額への pedersen コミットメントのインデックスを示します。インデックスは 0 から始まり、pedersen コミットメントのインデックスは AddCommitment の呼び出し順序に対応します。 |
| public final byte[] toBytes() | Proofs オブジェクトをバイトにシリアル化します。プライバシー保護トランザクションを作成するには、Proofs オブジェクトのシリアル化されたバイトをトランザクションの extensions フィールドに追加します。 |