Преглед изворни кода

merge patch for proof/mint.zk from halo2-burn branch

narodnik пре 4 година
родитељ
комит
2f4c5b24ad
1 измењених фајлова са 46 додато и 0 уклоњено
  1. 46 0
      proof/mint.zk

+ 46 - 0
proof/mint.zk

@@ -0,0 +1,46 @@
+# :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, value_blind);
+}
+