| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- # :set syntax=zk
- # :source scripts/zk.vim
- constant EcFixedPoint VALUE_COMMIT_VALUE
- constant EcFixedPoint VALUE_COMMIT_RANDOM
- constant EcFixedPoint SPEND_AUTH_G
- contract Burn {
- Base secret
- Base serial
- MerklePath path
- Base leaf
- Base value
- Base asset
- Scalar value_blind
- Scalar asset_blind
- Scalar sig_secret
- }
- circuit Burn {
- # nullifier = Hash(secret, serial)
- poseidon_hash nullifier secret serial
- constrain_instance nullifier
- # root = calculate_root(path, leaf)
- calculate_merkle_root root path leaf
- constrain_instance root
- # 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
- # spend_auth_public = sig_secret * SPEND_AUTH_G
- ec_mul spend_auth_public sig_secret SPEND_AUTH_G
- ec_get_x sx spend_auth_public
- ec_get_y sy spend_auth_public
- constrain_instance sx
- constrain_instance sy
- # return (nullifier, root, value_commit, value_blind);
- }
|