Pebble Coding

ソフトウェアエンジニアによるIT関連技術や数学の備忘録

secp256k1_zkpライブラリの関数

secp256k1_zkpライブラリの関数概要のメモです。
スカラー値は小文字、楕円曲線上の点は大文字で表現します。
未調査の部分は?としてあります。

/// seedを指定してハッシュ関数を通した点を返す
// 同じseedを指定した場合、いつも同じ点が返されることが保証されている
secp256k1_generator_generate()

/// seedを指定してハッシュ関数を通した点 + blind * G を返す
secp256k1_generator_generate_blinded()

/// ペダーセンコミットメントを生成する
/// C = blind * G + value * H
secp256k1_pedersen_commit()

/// blind[0] + blind[1] + ... + blind[n]
secp256k1_pedersen_blind_sum()

/// C[0] + ... + C[n] + NC[0] + ... + NC[m] がO(無限遠点)かどうかを返す
secp256k1_pedersen_verify_tally()

///   value[0] * generator_blind[0] + blinding_factor[0]
/// + ...
/// + value[n] * generator_blind[n] + blinding_factor[n]
/// を加算した和が0になるように、最後の値blinding_factor[n]を書き換える
/// 各行は入力の場合は加算ではなく減算する
secp256k1_pedersen_blind_generator_blind_sum()

/// ?
secp256k1_rangeproof_verify()
secp256k1_rangeproof_rewind()
secp256k1_rangeproof_sign()
secp256k1_rangeproof_info()

/// ?
secp256k1_surjectionproof_n_total_inputs()
secp256k1_surjectionproof_n_used_inputs()
secp256k1_surjectionproof_initialize()
secp256k1_surjectionproof_generate()
secp256k1_surjectionproof_verify()

/// ?
secp256k1_whitelist_signature_parse()
secp256k1_whitelist_signature_n_keys()
secp256k1_whitelist_signature_serialize()
secp256k1_whitelist_sign()
secp256k1_whitelist_verify()

ジェネレーターポイントを生成するのに、constant time でスカラー値を楕円曲線上の点に割りあてるハッシュ関数についてのpaper
https://www.di.ens.fr/~fouque/pub/latincrypt12.pdf

プライバシーポリシー

お問い合わせ

スポンサーリンク