| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- # :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);
- }
|