Files
darkfi/proof/mint.zk
2021-10-30 17:57:49 +02:00

47 lines
1.1 KiB
Plaintext

# :set syntax=zk
# :source scripts/zk.vim
constant EcFixedPoint VALUE_COMMIT_VALUE
constant EcFixedPoint VALUE_COMMIT_RANDOM
contract Mint {
Base pub_x
Base pub_y
Base value
Base asset
Base serial
Base coin_blind
Scalar value_blind
Scalar asset_blind
}
circuit Mint {
# coin = Hash(pub_x, pub_y, value, asset, serial, coin_blind);
poseidon_hash C1 pub_x pub_y
poseidon_hash C2 value asset
poseidon_hash C3 serial coin_blind
add C12 C1 C2
add C C12 C3
constrain_instance C
# value_commit = PedersenCommit(value, value_blind);
ec_mul_short vcv value VALUE_COMMIT_VALUE
ec_mul vcr value_blind VALUE_COMMIT_RANDOM
ec_add value_commit vcv vcr
ec_get_x x value_commit
ec_get_y y value_commit
constrain_instance x
constrain_instance y
# asset_commit = PedersenCommit(asset, asset_blind);
ec_mul_short acv asset VALUE_COMMIT_VALUE
ec_mul acr asset_blind VALUE_COMMIT_RANDOM
ec_add asset_commit acv acr
ec_get_x x asset_commit
ec_get_y y asset_commit
constrain_instance x
constrain_instance y
# return (coin, value_commit, asset_commit);
}