Commit 62f57dc9 authored by mdj33's avatar mdj33 Committed by vipwzw

shield point H as circuit pub input

parent 12a86ad0
......@@ -295,11 +295,11 @@ txFee=100000000
#私对私token转账,花费token(true)还是BTY(false),
tokenFee=false
#curve H point
pointHX="9252662952969393856711468743327022054484546162727338092576697495684140272191"
pointHY="8220002160263982499510761441032261960817037857915665984040705585999508400744"
pointHX="19172955941344617222923168298456110557655645809646772800021167670156933290312"
pointHY="21116962883761739586121793871108889864627195706475546685847911817475098399811"
#电路最大支持1024个叶子hash,10 level, 配置可以小于1024,但不能大于
maxTreeLeaves=1024
hashSeed="seed"
hashSeed="19172955941344617222923168298456110557655645809646772800021167670156933290312"
[metrics]
#是否使能发送metrics数据的发送
......
......@@ -100,15 +100,15 @@ function mix_transfer() {
${CLI} send mix config register -r 16664447758440542061402448540177654829488285379043162144052840929545481936061 -e a97592e700eb0f87c5738b35c8d460ce33a4a59bde6128081ddd042c3c262f76 -a 1MCftFynyvG2F4ED5mdHYgziDxx6vDrScs -k 0xcacb1f5d51700aea07fca2246ab43b0917d70405c65edea9b5063d72eb5c6b71
##config deposit circuit vk
${CLI} send mix config vk -c 0 -z 11d72c948d3d6b88a49d99b55ac035875fbecc3654a0e275bb731b2da3acb94610bdc3e5aea2738b230cac2988e1290cd711f9170808e1c8eee0b4d1682c663825c8f7d853ca655f502524091ce0a48e7229f05df8e40bd31839ba19ef9ea3b81d5d15428b59e5c1b523917a989c189a2b9ed799cb18318160b47829868138cb2b49730f693a497e022a14344374410004ed29ab3333a2c4ff5a63d486d841210969ea406d44fc0af8f5a3ded0fe76f9a90c6c42c518e3725d07f91c0bcda1330982f9732d7a542b11ef8c90c2bb39d9f85f8bc240c2bea852d4dda3961be1e22a33bf4a7120e37df97c58aa10ac88fc365f156bffad5f0709615a0389b6542401689987d98818e7c0c55ca092ae21dd9895a5baba579a68bac5807e4f37677e128265980bf81da9622334495acd490d986068d12a148ec26f6b16d74e22f19d2ac20e521154c443fe93dba26c2b1cb6c8fa2533b8029ba28c168b80398b2a980268c89af9b92ed851e5cb18f1a688ce8d654b7db547c6753516776e6a16662c14ef921c2f016514a09a2265112b8f24da3267828793c9e37a5fa156dd3f5e8b279ac92cb2f35e64e2620def2c45b51503ee4552a1da0cfb055711efc08d89fe0e3a407989f7b14a8b0353a5ca8907be1d2551b2c085b2104e3afba15e30ad0d0527b06bd267ab6dffdc80b5ba6ff86adfb8c3f87e48a4ab3ba46de238e400ca1c7f4a396c30d31b20c756a1789213657c0fff66d7e7f8b1a3ec9728a1aada9622b0c732c615c9c78322da5da67ab6861ee30eaba4b0103c956265310e743f65000000031b3e8a8ac3b0ff4f009474b7dfb2e99e8c1368440219b8418351d2de4ec193c61b8fad37c1d5028da1e6a6b67e2c6858868710598175f4c6c07850d5e8ab53c120380af328d225d79a6ad6a716b7421de1b6f26793683fb83fae14ab6858486d062af23453da53472221872353ae3ac2900f711ab285de1cd9562eed856333c425767d1fb4797b1a64836d343541193cbfcc0e748fbb8a8b2f315505927c20fe1a87bc97b5f5d4e61216b061f2daa0703510a9813d253f710d73ad862c916603 -k 4257D8692EF7FE13C68B65D6A52F03933DB2FA5CE8FAF210B5B8B80C721CED01
${CLI} send mix config vk -c 0 -z 0ab151c3f5ab4f02641e312dedc949fc34cef739ac7ceb72416274e27871a2b909a9e5219bcb43d1b13e87b9eea296625b0e3289b43b03cf70e3f77d7ca699c322f66bd31c2dea48018df71f2f8f5c94da9effe18563a29e74a3a1de6b4756521266aa67b4f7c9fc50fdf20fa99fce41247dde6d98501859c11dd4b72b8370d41dd5574d8f9d76ffa5389108d2577ad7fd0b934eaf44c006f1a754c7c238efa01511960ab2e37126bb6708397376fc137b384cf3f19099d4528dd41edb217eef22db1280cfae1949e5638870aaea06b90e322a4750ab3bea50d7df3f390ff1100e5db695c47db343ec04f8024f125ab210562123709852e53f1cf1ce8a2bac7800e049de7ed1196afcecca91b3163dff1f9dd13cba199c1c8a2ba12d7ac2860a12f967926f3d79e2a0d83251abeb84015b85643351b8a72c03d58c114f0c86fb2074307017b63aab2826bf02f1c08021abf46788da44bff7808ae5c80ba493f6245238707e3322f28ba7c48fe122893f6e3d76ff8bc14d2dc24688317385491d3055d5c0937f9db16495652ed40ae7bdfa223e5e14c59cdeace3f0caee452e0920096addf2cea748671bc8b2ce6eae8ae59af10ca4d202cbacd3ba269e0a5da72b99033697ff84a19789545d3fe8d7e3f7c4e26dfdb6d5db76742b89ec62fe5306fe23fa60b4a0ae7da5bedb1aabf42d483d534962122d54c6ae5853d121853c28eec11fa4c59cc4dd0787b90a3c0089fe81629722fb1a54b2043a0fc3171c650df2d4ddf86d70047524c5d856810927840656fe45b4ab9e676ce227e71273c0000000032db890127ff54710550d5af52986938be708c0ade9e8f903f67570de4a00e49411ac3492154d2ee4286b29f81d6c7a604df8b315065f9bb94eeca31ce6143b9e0c0eb9fa18c283c2145c25840a67b882dc5ca8e9f7e4295398cb20306a5d612714c40d52ad2296b2ae0e930d84cc105d91d3da03ddacc94018084eea36c7abd12b4765a421b2692bdab5c30abbdbc936f9ec6186d73acb473ea36ea0a57127b42ca754c1ffaf99a706e4830212afda0bcd7bf8f0a51ddab790df3e651000841d -k 4257D8692EF7FE13C68B65D6A52F03933DB2FA5CE8FAF210B5B8B80C721CED01
##config withdraw vk
${CLI} send mix config vk -c 1 -z 17497f382733020c2441ee2179d468e4a871353ecf52e7bc7f57600703e6cd0417c8a91b86c1e6e55316bd1ba88db8c817b646add9c5289497faf705e2e0a50510a31a9fbbcbec3399e15f1caea1e372a51827e08335606f7f1a9428539e4a3025ea43142772f0300fcb6e2e03057be5deebbc7e00cad1019da0452c2ab90d582caa5e4c22103eadf15f5ded717187934e4e9a44997766d6a770c42ff520e00d1d5a65abd94ac973cfb60d07499505d4db9584ccb428041336610d422a6d203007171dc5d586c536b3f49c2daf4d3b0a095a67ea759b49f182c87b41ac03848722b838c495beb5537c43fa7175bc5346743a2eb620856d0daa92614f283027ae2aff76e2a53c74648f52d9bd65ccf3064f2b9d9230e45bdaaa2214aa593d90180e85e2e045eac57a2b2b86d3eb23215bdc6b8b0ecb80e37374d41e1f7101acb502a75d203e2e058258f53f8c58192c8f0849a67a5ab5c7d26d782e4e1a10669c03285a2eae35d76a09c20841c49e72e7d7896da7a788d146836d5ba60bd2981b0eeabf8ee62fd2406056b556db292d18cbda9bcbe008791cb96fcb17ca6a33b0090652012ee82cce78f6ba28fe807cd3f668ba1fbdf795002d5ca1335a5de65307936b649d057637f8ff815d86aef66fc49960d02a8244cbd64658bc5758ee2a271e7a651fd9ef47bd7683c5457c724365c4a49e5e4ab88c980e33292ca1467c1e4b36114f7ed29b48bc2cf422be5c8ca374647971eb7daa1016348546190a762cc190a0d413e00c81f098a84e880bb53024be29917ebba4a55d59c40a606c0d0000000519dd32ea5a02431cbd4c38143012542385d9085b4c5d0b4f176285feae96d232061ed041ec53ee1897dc1eb82f1456bcb939b7512fe60548c97873bc602606c91f1d2dea1819016ef4bf1f1f3a6e074f04f04117d0628375f15779bc612078a302aa853d4d2e348cf05422efffd585fea5826ae63770b35be4ba8087092cf5150560d8d5e21d5b60413658c69f52d0ab2b399490f7e572ad8612a08472721ceb107ffe99a3a4de489fa4849a63eb5a574ddac2ccf7afe89c06c77c43a94e4d4b1c1250247c5352bd7b34dcd075f52cb31c5f4c96ba3120355a3dc010d330c4e02707c707d9cc3772ce61f7ff8bbd50d2633453a21d10edf821ceea93ba205bee2955c296632546fffbbdfdeea2f1aa67a9b1a90903ea12a3818d5e44f9964a6109afe1cbce7b5bccdf71718f22a3d57f6afd1a7976a75c093410520cf79bebf8 -k 4257D8692EF7FE13C68B65D6A52F03933DB2FA5CE8FAF210B5B8B80C721CED01
${CLI} send mix config vk -c 1 -z 2ec2d037b66a1be7b07a8acbdc6de9fe02d9c6f3f9c620d84f1f07482da694131e922a695e61e4c976ce197ad77549b30605bb02540bcae0a05a1fe20212790e1396bea4c567c18b31f274072fc78283db4f0af154f5c711b5900060756aec171076ef15c3b0603969f70d4c99ada36e26c7d5b77002ff721023fd2edfe0b2a21569e07cae10cbefeca4d08b85da4d430b075ae7f443a473b7ec98382edf694e066abb75bb76deeca2dc1c8373561b3709c3ef4a5430a99c612bc70bb9a8a1470f18c0791e1797ee0014e8090b2e8c283789868fe93c9f5c4270bcac988a22be28df0e0cd8499778322fc465f8f08a71b8d242f47cb05691b8220a533be501f02741de93f1c787b9607811521a7695d9f3b56f77264ce3b2912f66d41605f9af1e671e76fb453a96730c573cc4672edd4f1c80677c5fdf6cd5e51f3a9ed8e5ab2795a7f7e51cabacd4795775dbc4056f15db1f790cdcd159cf27f3929de817a10806e21eb0634175fbf565a6180b5cfeca86e891e796cff5cc93f7317b44aca0164a54562e587c98cb00af51699342078d665b7cc9e36ef484890bec208a538e1a8a3d0057ddb19d5f6764a9b1b06eb9e4fc8bb8bdc81851a9e5f6e1dff78bf71b5038105a8520169948171e63054de847efd960575e91defe822a30728eb39f0bc741f5b129490d2b4c9f21121c58a82a641018c11c4ef383c58616bf334be30939cb14e8458f2c637400a5238804cae6beb35e4779b032334a86066ccbe0432f8a7e069d91d92a00129477c10cf262af0047aa74576efad1195d52e6f5f30d000000052185f49e302904514d4903b9a92b14b842164953dee02eb418a8df75a4e720fc23a10a0934c53319891fc59e233cb4c87cfe05817069ba4eacf0e0c126ad463f20bf9ee9d17070c41d18a95617108568094c74d328f98445e451fd070317d15722c4e7837112e3383c8eeba2f5c0936a74060a65df281be970306fc5e2e609c72bc86aad57eed36817e377e3c442d1c4bb5611e0b737caee7f67bae6946a7c1b19f77daf8d47d2d08bf72105ae2ac402bab78fc103ae265733fff2616dcfc09816b3c05d350fcd8d1c5cda7b1c743c43520d276310866bdde1dd1087073f86960fafbefd05d08722fad1a0aed57bbf9dc3a97cc13d4352f752985f364732c4332602b423b84741578880f7698d6b88997a6517e5f09e849e947a4fc35ec2f47a2a48f81533aed4a1460c133204ead8b72a0ef6bb10ccab4370fa68217513537a -k 4257D8692EF7FE13C68B65D6A52F03933DB2FA5CE8FAF210B5B8B80C721CED01
#transferInput
${CLI} send mix config vk -c 2 -z 153cd9b6c5bd77f41c63012def12cfa719cedbbb7c376353ada8865bd9d386a22ebdbbd1da14114ff44d1ffd49d3a1f108a6affd4614c9c519fc84425bec6293145cb2f2e7c8945ed7e9a7a7ef02c1555bb0886e7c15a8be254cbab1adbbe33919b40f19c82819808f1f87ac6ae96657a60ff37557ec55e73043f51a3ae17ade00973ce23495e3dc7941b468ff0e9b9b0ae73d722fc5401983a8def9f48ab76020b317cf6ccbc216c4a20210c34e061b2d3f74e8a1645b8be4b7ff073abdb22923d6b82003695d70bf025442860d9979f4b547569d1c79bcb36bd85498d66969304a7edfa12d4ef559b07b93834024f424cc73d115e231d31c0489d22a19403321583c42261bb161b3566c574c42bfc80ef00bb5890e40b90ef3361eadb38f181144271f45c753afda2f81bdd2868e1adb7b2519d2f75ddb05e7fe7250a2bfc00beb6540deba4e021b1edc5d0c5e08015674d5db33c591714297acf1f02c35af1069621ead725fc0527099915ea5de69282cb9850de96495e86b61670f9146b411a9ea9a4df35af15a333495475ddd34df53692471d09e7fbc337471829f64d203a199091300223531a0298b17ad923c29f8982b32862b1c091d970f9b5cc9ef23a7761a669a5dd9d631424ea8879b89b22afcee997fc6ab95cdf9dc9baac6461c1bc5f5736b339568767e9ccab43e63dbfbd3f3a94f1100f566fa5f72029b701fda13678ff8db802156bce08bcc2ededa2914ac45d4be6d459abd612fbdd77718874dcb119724bcd71c8de5e10f7c79f4b66434f8b9a1e2a174d92cb10b1ca70000000628e6eaab99088247e8106f52f47b5940f3c5294d2283006bf3c29532c59a4c5a0e931758722334e0299af3b6cb36e9457fcac0bcd5440d80355babd3c05e88211e1e7f5bcdc4863afa2d49c743652305f971c92920c0bb61e76a1bb51f08156303ac2e2f58c0a6f2627b820ff08f0cedbbbfd99fa840b79de57e0f6ebf5969ce2efddfb68b6c57535a6be061335009ea879087b15def360546c5f1a4b0f737bf0d785f07ada66b23c6a037ce372994fd072a97c16d74c513f63e987217ec8dc210cbcb5c6dd8ffe745a63e88470fc09cade0ef877c4f107c08070fa19674618813e5be4d5db40af84bd83db80fccadee83af1549c92f4c935256bd5dd68b97f32e8dff5346fb5fa554c9ce617774c2a43cd7b6c5d5edbc9cd0dce0ba74b5ec87043b59f5b19c20057780c99db499d2565bc9f90c252f27cc37b2f5c9c69f504c13357153d572be7823f67ca794ca52088e20396eb7bef837109f542041fdd56310c5bd398cbfa8e588fd8342cbd103f58249481f5af3eac33f15add8fe4a64e4 -k 4257D8692EF7FE13C68B65D6A52F03933DB2FA5CE8FAF210B5B8B80C721CED01
${CLI} send mix config vk -c 2 -z 051c202afa691740e646a47155aeac1ae11d3ee4d48de8b79ae734e12778ca800b1e907766f83a5b6c6ef9388cc4a308621405100edfb3505356d9440c51ccee1157fb810e73c92fba52b31a2d14ca659d1219d81662049ca4b07c9d5cd8089a0f37d9e2242f3d7a5400f6d8f2bc6e14600f94e215535cc04579a95b5034f2232d07eb10f6c423d1190da1869d12d008b0f315d80508c166866873f13c34b30e009bd4a44819d3e59a12ac3176ac2e38a230c0bb560f11f16facf18d06776d6d1364e734e8eb6c94fbfe60ef7c772155cb753adbfe7e41a04f3adbd19a83ef51152a2cf2796445d81a85e308551a55830617ba7721225817a54a88aa9f5805e40b968e5db1cc5f923bedd53937e8537137e2b04dff00a9cbb14840061e9ca72d226cd17379427435f1cd0814ac065290e8f86cd5da8a52b9d284445c4220c1251f2da600177ad117eaca24ef9f856448879e957eb9a7ad3bc44c3bea4618bdf324d07d82b550c2d041059e69c38132240a89f9012fea639ac95c7b4332a055162ed54236ffae5de62a0c005889f2e2b95959dd67ffce49933ccef6fe5c5586aa2f9ee1d799bf9ab26e5e3a6b6413e694ea87d2a64da143b8319f6885e569d4d2053eb82e7c1fc8b041df190139e8b3bdc46e2e43864469269b76fac014bb5e930d7389657eafee1564f3fc5103e8c910e49d25248500edcc60f9c5b588722e980d818cbb640a79fce4c5dcad482e3c59c9ad657d0e0b46c0663c9639918c999b155a86125433594e9043f9adda2d3427b48ab5585e901ef855ce21a390c9e4a3000000081cd2a326d969e1a6a79bc34e249d8cddc713347c0f55e8dd723d4ca4b3cb7afb0d01e639e44717003f53934678b422ff82acbceddbbaa668e810d3d6e24f6d321c1d8197db7e0080bdbb51f5e7bbbee992ad691d3049e1dba5808bca929427111d050684da6bf46717d1af9eda2296a06e86567769d099fc22a72a85c66eafff17e0a9db9f6502c74ad802eeb65b4250765598bd6b9a0aa0feec4fe00b7ca2230d7627b067e9b589a5e2b8f8bae8ce5dc32891aeb4c59ac220bcda1d92a38942134dd434a78f3e018f4d53d96a5efc20f03137f75e543044789e321336efa2b116cff3644e3e6c4c059da67c39b419d222cff307a0b144176aa7ff0d6d64221c2de30c6f7c679a3f5f98321f67a045f4d1f02ff7e764456cf6229d27f6ac4322222d503fec674239e329f946b3a962ebae9f0d65246c354d36aaea58bc74f91d178c223006f0f12316c364b1c48e7cd20dc08bf4434c6ec40b723f8d7560e5651a902177973149bdddb43d18ddd14bbc2a64ab3e3398dcba75ee1d39840d347422716359ac1db91cf14d1948337f776f7b5a581309b0fc728ad2e34e902cb5bf2b18a357de815af71028c8487059aa4b3148c71c2ed68e4add8a9953f817d0f21bbe6ef3224ef1e9187e2caf5d3b28d5e0db0a877361ca6eff76796ae424f87b169f9e28c3d0c05b8372d3b3d7db413756fac99ab4ad8b966d9f231742e64408 -k 4257D8692EF7FE13C68B65D6A52F03933DB2FA5CE8FAF210B5B8B80C721CED01
#transferOutput
${CLI} send mix config vk -c 3 -z 13934cfcc6ff87d92bd9bf14fc22abdda42ecfd544a0dd8b5b38d8936cb91f7d2ab93a5f2e54a2b09ae0f822be44bb304d2e8a3a9a2590e134cef4de7ca61e6222f85e2b09a87301942fa12d8755467ce88b30679f703b48a3ed973b526648c614058f734069dc99be9312b0f64b46dbfe8b5a1c7a7b2abd301417abe61cd7580f07fb23e6b6e998dbc16fa3f5e9d0489ec2867f496f79364628731c8a81159d26ba7de29f451d5b6128224f398ad7797a605b022f5a6de1b59276a339d88921218971e393ea6027f758ddffe692b11269b5ab17f72266661cc452b83f83a70818d7a37dabff75b1995952a63c45ef51695e18ce1b9b6bf0da5dbe3c9625ad090dd507dc37e610ea95e32f2109bd7ae0783484675a445cf396ca0653d4e3c71b27c0b8d2d3239ce11da02406913fbec4d973bb1ff1922a6d5d295581f635afc22cc1379afb9f5158d88baed9020b8d393f1c7157b30a36724d6efcf162fad84e20cd61fa92f99ef48a4ab4a0d93f91f06204addb1686344476605f2089defb561c4b0f8502b3dbe27395b86e8535fc4ca14c25c071880f8153e931194473b2d809dae5160125311328f69840cc36c0d68e3b135827f79076ec6cde7c94b607792485812b35437227068c0122eaa92ab9e181a7b6776b681d3c6d58d3a2d7e8462537bc06071d29fc3ec2e789d343359fd2adb5aa1e343033b6456cd9f9c9859120c39266d6032c2e4cd703c2ebaf1ed66edeaa95b8e9363190cb2e33b7c430ad2e7d9a9587ed281bf44e2305aa20c3e031ede1cfc40cfc600b09b45b0647cf1100000004269eb69c9017e0e3e8f2fefae3d2bf072ce5a9369b9dc4a949863a096b8c2fe70e53a7aaf51d02342549315f63b45527dbc1fc8b640b471337ea89ab78179c6305ba8d54c55ef56feb4623a09629f70164572993ac8ff3472753d643f325622220f4e4183a52903095d6989f5f3aaa18da0693d815e18eacab419e1306a492d42b1a34104b599e2c91e697969f4e47fb2305f5e0e587b1616c2cf53d4ac5ebba004710a9c23bfd6dfe3b0b4ce9b934fc6a6b2304640d56fc2ecdc20d37dbe352048691666bb7323b37f75cb2a3c078e05ee3d38ba666f33ee3c9cf9cbe2e1a901fcfbf411bdbf8b3e671579c29fe2da9b29cc1e99ab30801d8b9a1bd87c5cd8c -k 4257D8692EF7FE13C68B65D6A52F03933DB2FA5CE8FAF210B5B8B80C721CED01
${CLI} send mix config vk -c 3 -z 2646cb1c4bb8a140f415eea2c77a9daf8e484f2046e2730fc65954a74e360c1e267a8008649752e825cc003ba1a09ebf8540be49ceda6d2eaeae03b5e66736ae11bbb7c2fe42b0547e9bd568bd1511bd27489263b454c86e24ca42b81880f2622c38407f9a3e30e64dc3b76d56f0bf4288cbe4750daa91582525e7ed828cb2412662b76a46c868254530f2efc58705f171cff1c6d030f6d5e8fa87070d85373711317064e1ed6e1acb1fdf58c7801abcf953214d4934b9eba7c48510d90225810a3e018d98bd7c0fd0f5b0ebc0e9536362783fada89c97f744ca531eef0a6ed0072c7b22dae0e3eff404a49a6633c4050792ecb09930fd614b60fcc4b356edb701f8d766ae2e36f7c1e63622ec5c92ba0ef273199e52085228edf5108521545b12acb48ef9f5ee1adbc7bbcda6fa55fc421d8c62357d5814c1320fba2d4ed82a1b83f4596edc9fd297ac836725d635e101d022db2056d031e2e088f7ecd32b442beb194682415b6c76654b76dc093646b43aebfb0d09ee75882eb1a4344dae0603b2c48c3e321fede6bcaa60ca27497e8a9c97a95bfbcc76ba3303a7f1bba2441371423823ca6c7b82397ee678f57e55ae26b127d7f6a086266726c1b057576b12c173471d0ff82b08eb1937f57f50630a1f145fde62e6ba80a69511565b99711cddd6f348cc530dba26f52317d3bae46cf1b7a60bb55e6f1d5f4303d7edc53914d674be4814a22eb65a1fe2831ece438a31209b0b1cbeba8f901b48dae4de770201ff2a51398254d7d8c1f459e72a336221c663677298b0a58fb3972dbc7b7b000000060ec29eca4fa56da19081893c9bf504b3117e4a19eae4f59ac3d73d2340fced9518a151d7b1c437cab7afcd3573660b707ae2cefa7f976a2d1d97514515ea78cf1515411d1baf74c4da25bddd0b403824031a6d3e84ab92fcb79f1d4df521d0af2c3c6456ca5fa049d406c71f54ab6a3fde440031fa6cdc3790b736e237d3c7cd10d3315f7fc93918996f925652eb843e2c0c00cfe66615f6c1fa1074069dcd7a02c99dccbb857786c47a6ff1aec76803960a255cfee5987792b94195b7b8666b0738e212f51c1842e7c168c60a8989e3dbb381446c71da439e22570fae2f93ab2394f2bcfa252adfede9d3e4a189b4d215ad507c0ae291f5dcf8e2892923cc771ee29277c8026dd46de818e6aed6db2e28d440a52cb52b7b4ce376e1b80a078f1f8c9fbf6d1ac90c65ecdfd0d9e00a45eac94074e89a2581f21bd9958945c72307d07433866715de28649aceb06bb22ca4536cf5c17f61a8161b68a638701b100da04c352d930e42d62c9cfa801ec9c56ec1755df8df48d35660b5764b5d0be7 -k 4257D8692EF7FE13C68B65D6A52F03933DB2FA5CE8FAF210B5B8B80C721CED01
#auth
${CLI} send mix config vk -c 4 -z 1473ab4328616752c00ea248309e10bce4b92e3fd4e3047e30747512821e24741a59bb2115d794d53e8a123b284f59acfccfe5fd76c87a4ee5cf72a24e415d52049eddd126746ca46f1a6b5151354844fba1cc136f56dc8d52ee087e77ee545a24793c266c6760371f66e3ddcbd2f50fdb40ebcd63327d0daeccace522636aa42525af4490cdbcba010d5d60b17b899a5d4ce32a4f028153d18ccb9b54108e35215fc55fa11835b75755f4b2e71af4787c7d8424c8fcde9b59d0283fa1a6596c287a8695a5c4fbe45979ba25930455fddeec304c1e0fe1d980730a262bd3c15a097ed012586cc746756ff350ba08c0f7e97b1e3368ad99d4b413419544a5ceea09b9dbb381264e8a786e9875c7fc9989ad119aa3a8e1b07f170dfc29b6603ac1245629f9260508d08747a7b8ddc2502be73cdc16e467d47df69aa71575d39119197ce70dbe1e1f1d8f1b45a3dddc63e6e236794fe08b42080e6746e8e22628f70d436597422407240ed94d46b32d0914451225dfeb64124f7215476148092e190010e75b4d11104f80c5259fda8778d6886fcbf789c48a13e21d7357eafd8a8308b0ae3dfcc341e715bdab7de49fb699330025da6060eb91b5a79cbe25e1cb3705f350c2d348ef3df4a6cccb11e68874fc8e75d617b3934a7c654c8c854f3752091291b80aa18de8fbd41b0ec39ebbd96ca685e6386da6cc204ae13a9184d18b044f26507b4b443e60e02162492364452a83246e9643adbd42e87316dc04382b29c76acfba7614956b9d9aed7e49be9258268e22adbba0aee818a3f8bc1c3bf40000000411f40834f563e79b2ffabc45c24797299ee34346888f34802b784b62427bd5d429f5117115d7162353b65557850a4a2f99e9834ca8ad95830ede631d897048521fabfd0dd4246c4d8e98062daf771ded13921619e76df0ae190ed0200757684e02ef7e138bf53134af024817312c725cc8a6617c8ecdd66d65e90576f59596c90358b4ce57d7b4832639096c4fc814fa067b3d4b11a4ba8626c543b26b68bac505c2ac761fb39a0b160010b4085dbe7ab2f4c940b96fa75fbcd0fefa6fbf12811e86674dd28531b9b264e6f098b91344df5755dd28a41696d1ffa878f5dd9ada0be976bdfcb9f5538df6dc9eee17babeeecaf3c93b4f317d189bb82cb0b7c264 -k 4257D8692EF7FE13C68B65D6A52F03933DB2FA5CE8FAF210B5B8B80C721CED01
${CLI} send mix config vk -c 4 -z 064e30b2d67831d68cce9f2309eb09eba041a948a5b87f1fb1422be921cb988d16150150f1ce6b3c05c708a84ecbb981b4bcd0b7678d9825234da26335168b8119e9f7dff32dd0b2c8f029b1326659721c17b757fb43fc115663dbe61f0517d90ecc2f9ee148756ae207dea302394aee1ae2da9c2b2b53e57f9cc2aed7b763eb23f7f286446f938b3a30ea7f4d22696367b2e58ce34c048a6c735ba340f6cf7104eb6dcd58210758e6c79a07396725ba3b31c69d42bb65c5ccab75f60516c0ad03ca1d155048fb23dd286651eea7aec4afd3d573722d708a2872b45a70de81782261cf19f4051f6d73d5f997289f7f97be0dbf8975cc50d7619b42e0c883d4c313264e46631f13bd49b5a4ad955575f58a54932cf36d89047cd8cdfad8953eab1c500bad362114f0be85a742dd09ffeab5fa16c9ff81e3d7d5d99debb2e7f25c2d2c3431da5d210c49610f0a9731d1789810956c39d0512a25ded2bfafdbce720aabf526c01c0b181e2470fba30393785af0dc2fd21b0e4e194f9fa509a86efb2ff283e0969e9722aaf523fc7d1243bbf8c446e3006452d15f95f9630a409e6201d8af6f9919c5861a6fa6d5d55a986790cd1fee2aeedc26af16cb4477534c5a09d7910721123fdc1fa98e34d4cf67bfcc159a234e0d006202a35ccaa82d83fa031656baaa050e0ecd0aed0762347718780f3be923a975d3aa041b51cb48045e0b626704c4f975399477f33bf2e5c0200350a19aad1f05f39c30221b54a47593054ae06fd883518e0b3658b54142c64a67f6e1152ca1a93215d8c71659b7caff000000041c8e2e41136855709f53ed332d2a2b3bf793758a11f058b676cce8176051db5b1ad307808cc54fbd897eb68b9ff83266618c1172be210262d2146db0db7fd7391399b1df6dda25cadb729c83ee3f9ceca02c32f28be603634c597ca1c67edadd0e6a7a30fbe46b57a8742bcb0212ec2fc7eb0808543bd70f2de7dd9a7c8904f20f72dfe65916f22382e01f757084bdbd7ee33ea4eca28c598b51bd7cb191973602b091483ee1ed95d9d0c8e28c79a0a4ba627769b194d0c0e6b308031367cc060cdbadd39510b391adc885ff4123f0d9f4c6ccfb23fc9347bfc09a5144dc38de098a53cd28ded02023dec1baec74dd7005a7f82acf75f3eef65b3bac64fe1136 -k 4257D8692EF7FE13C68B65D6A52F03933DB2FA5CE8FAF210B5B8B80C721CED01
}
......
......@@ -22,7 +22,7 @@ import (
2. check if exist in authorize pool and nullifier pool
*/
func transferInput(db dbm.KV, execer, symbol string, proof *mixTy.ZkProofInfo) (*mixTy.TransferInputCircuit, error) {
func transferInput(cfg *types.Chain33Config, db dbm.KV, execer, symbol string, proof *mixTy.ZkProofInfo) (*mixTy.TransferInputCircuit, error) {
var input mixTy.TransferInputCircuit
err := mixTy.ConstructCircuitPubInput(proof.PublicInput, &input)
if err != nil {
......@@ -37,6 +37,16 @@ func transferInput(db dbm.KV, execer, symbol string, proof *mixTy.ZkProofInfo) (
return nil, errors.Wrap(err, "transferInput verify spendVerify")
}
//确保用户使用的和链配置的一致,不能私自篡改
conf := types.ConfSub(cfg, mixTy.MixX)
pointHX := conf.GStr("pointHX")
pointHY := conf.GStr("pointHY")
inputHX := frontend.FromInterface(frontend.GetAssignedValue(input.ShieldPointHX))
inputHY := frontend.FromInterface(frontend.GetAssignedValue(input.ShieldPointHY))
if pointHX != inputHX.String() || pointHY != inputHY.String() {
return nil, errors.Wrapf(types.ErrInvalidParam, "input circuit H point=%s-%s not match config", inputHX.String(), inputHY.String())
}
err = zkProofVerify(db, proof, mixTy.VerifyType_TRANSFERINPUT)
if err != nil {
return nil, errors.Wrap(err, "transferInput verify proof verify")
......@@ -51,12 +61,23 @@ func transferInput(db dbm.KV, execer, symbol string, proof *mixTy.ZkProofInfo) (
2. check if exist in authorize pool and nullifier pool
*/
func transferOutputVerify(db dbm.KV, proof *mixTy.ZkProofInfo) (*mixTy.TransferOutputCircuit, error) {
func transferOutputVerify(cfg *types.Chain33Config, db dbm.KV, proof *mixTy.ZkProofInfo) (*mixTy.TransferOutputCircuit, error) {
var input mixTy.TransferOutputCircuit
err := mixTy.ConstructCircuitPubInput(proof.PublicInput, &input)
if err != nil {
return nil, errors.Wrapf(err, "decode string=%s", proof.PublicInput)
}
//确保用户使用的和链配置的一致,不能私自篡改
conf := types.ConfSub(cfg, mixTy.MixX)
pointHX := conf.GStr("pointHX")
pointHY := conf.GStr("pointHY")
inputHX := frontend.FromInterface(frontend.GetAssignedValue(input.ShieldPointHX))
inputHY := frontend.FromInterface(frontend.GetAssignedValue(input.ShieldPointHY))
if pointHX != inputHX.String() || pointHY != inputHY.String() {
return nil, errors.Wrapf(types.ErrInvalidParam, "output circuit H point=%s-%s not match config", inputHX.String(), inputHY.String())
}
err = zkProofVerify(db, proof, mixTy.VerifyType_TRANSFEROUTPUT)
if err != nil {
return nil, errors.Wrap(err, "Output verify proof verify")
......@@ -110,7 +131,7 @@ func MixTransferInfoVerify(cfg *types.Chain33Config, db dbm.KV, transfer *mixTy.
txFee := mixTy.GetTransferTxFee(cfg, execer)
//inputs
for _, i := range transfer.Inputs {
in, err := transferInput(db, execer, symbol, i)
in, err := transferInput(cfg, db, execer, symbol, i)
if err != nil {
return nil, nil, err
}
......@@ -119,14 +140,14 @@ func MixTransferInfoVerify(cfg *types.Chain33Config, db dbm.KV, transfer *mixTy.
}
//output
out, err := transferOutputVerify(db, transfer.Output)
out, err := transferOutputVerify(cfg, db, transfer.Output)
if err != nil {
return nil, nil, err
}
outputs = append(outputs, out)
//change
change, err := transferOutputVerify(db, transfer.Change)
change, err := transferOutputVerify(cfg, db, transfer.Change)
if err != nil {
return nil, nil, err
}
......
......@@ -14,8 +14,8 @@ import (
)
const (
baseHX = "9252662952969393856711468743327022054484546162727338092576697495684140272191"
baseHY = "8220002160263982499510761441032261960817037857915665984040705585999508400744"
baseHX = "19172955941344617222923168298456110557655645809646772800021167670156933290312"
baseHY = "21116962883761739586121793871108889864627195706475546685847911817475098399811"
fee = 100000
)
......
......@@ -12,6 +12,8 @@ type TransferInputCircuit struct {
NullifierHash frontend.Variable `gnark:",public"`
ShieldAmountX frontend.Variable `gnark:",public"`
ShieldAmountY frontend.Variable `gnark:",public"`
ShieldPointHX frontend.Variable `gnark:",public"`
ShieldPointHY frontend.Variable `gnark:",public"`
//secret
ReceiverPubKey frontend.Variable
......@@ -130,7 +132,7 @@ func (circuit *TransferInputCircuit) Define(curveID ecc.ID, cs *frontend.Constra
valid = append(valid, circuit.Valid8)
valid = append(valid, circuit.Valid9)
CommitValueVerify(cs, circuit.Amount, circuit.AmountRandom, circuit.ShieldAmountX, circuit.ShieldAmountY)
CommitValueVerify(cs, circuit.Amount, circuit.AmountRandom, circuit.ShieldAmountX, circuit.ShieldAmountY, circuit.ShieldPointHX, circuit.ShieldPointHY)
VerifyMerkleProof(cs, mimc, circuit.TreeRootHash, proofSet, helper, valid)
return nil
......
......@@ -9,7 +9,7 @@ import (
"github.com/consensys/gnark/frontend"
)
func TestTransferInputAuth(t *testing.T) {
func TestTransferInput(t *testing.T) {
assert := groth16.NewAssert(t)
var inputCircuit TransferInputCircuit
......@@ -21,8 +21,10 @@ func TestTransferInputAuth(t *testing.T) {
inputCircuit.TreeRootHash.Assign("950328190378475063285997697131233976268556642407874368795731039491163033995")
inputCircuit.AuthorizeSpendHash.Assign("21866258877426223880121052705448065394371888667902748431050285218933372701264")
inputCircuit.NullifierHash.Assign("18261754976334473090934939020486888794395514077667802499672726421629833403191")
inputCircuit.ShieldAmountX.Assign("2999198834503527181782558341022909853195739283744640133924786234819945005771")
inputCircuit.ShieldAmountY.Assign("19443413539487113257436159186910517766382570615508121086985490610335878889881")
inputCircuit.ShieldAmountX.Assign("12598656472198560295956115825363858683566688303969048230275808317634686855820")
inputCircuit.ShieldAmountY.Assign("5287524325952639485224317845546845679649328720392059741208352845659048630229")
inputCircuit.ShieldPointHX.Assign("19172955941344617222923168298456110557655645809646772800021167670156933290312")
inputCircuit.ShieldPointHY.Assign("21116962883761739586121793871108889864627195706475546685847911817475098399811")
inputCircuit.ReceiverPubKey.Assign("13496572805321444273664325641440458311310163934354047265362731297880627774936")
inputCircuit.ReturnPubKey.Assign("10193030166569398670555398535278072963719579248877156082361830729347727033510")
......
......@@ -11,6 +11,8 @@ type TransferOutputCircuit struct {
NoteHash frontend.Variable `gnark:",public"`
ShieldAmountX frontend.Variable `gnark:",public"`
ShieldAmountY frontend.Variable `gnark:",public"`
ShieldPointHX frontend.Variable `gnark:",public"`
ShieldPointHY frontend.Variable `gnark:",public"`
//secret
ReceiverPubKey frontend.Variable
......@@ -29,7 +31,7 @@ func (circuit *TransferOutputCircuit) Define(curveID ecc.ID, cs *frontend.Constr
mimc.Write(circuit.ReceiverPubKey, circuit.ReturnPubKey, circuit.AuthorizePubKey, circuit.Amount, circuit.NoteRandom)
cs.AssertIsEqual(circuit.NoteHash, mimc.Sum())
CommitValueVerify(cs, circuit.Amount, circuit.AmountRandom, circuit.ShieldAmountX, circuit.ShieldAmountY)
CommitValueVerify(cs, circuit.Amount, circuit.AmountRandom, circuit.ShieldAmountX, circuit.ShieldAmountY, circuit.ShieldPointHX, circuit.ShieldPointHY)
return nil
}
......@@ -21,8 +21,10 @@ func TestTransferOutput(t *testing.T) {
{
outCircuit.NoteHash.Assign("11183619348394875496624033204802036013086293645689330234403504655205992608466")
outCircuit.ShieldAmountX.Assign("2999198834503527181782558341022909853195739283744640133924786234819945005771")
outCircuit.ShieldAmountY.Assign("19443413539487113257436159186910517766382570615508121086985490610335878889881")
outCircuit.ShieldAmountX.Assign("12598656472198560295956115825363858683566688303969048230275808317634686855820")
outCircuit.ShieldAmountY.Assign("5287524325952639485224317845546845679649328720392059741208352845659048630229")
outCircuit.ShieldPointHX.Assign("19172955941344617222923168298456110557655645809646772800021167670156933290312")
outCircuit.ShieldPointHY.Assign("21116962883761739586121793871108889864627195706475546685847911817475098399811")
outCircuit.ReceiverPubKey.Assign("13496572805321444273664325641440458311310163934354047265362731297880627774936")
outCircuit.ReturnPubKey.Assign("10193030166569398670555398535278072963719579248877156082361830729347727033510")
......
......@@ -78,19 +78,20 @@ func leafSum(mimc *mimc.MiMC, data frontend.Variable) frontend.Variable {
return mimc.Sum()
}
func CommitValueVerify(cs *frontend.ConstraintSystem, amount, amountRandom, shieldAmountX, shieldAmountY frontend.Variable) {
func CommitValueVerify(cs *frontend.ConstraintSystem, amount, amountRandom,
shieldAmountX, shieldAmountY, shieldPointHX, shieldPointHY frontend.Variable) {
cs.AssertIsLessOrEqual(amount, 9000000000000000000)
curve, _ := twistededwards.NewEdCurve(ecc.BN254)
var pointAmount twistededwards.Point
pointAmount.ScalarMulFixedBase(cs, curve.BaseX, curve.BaseY, amount, curve)
var pointH bn254.PointAffine
pointH.X.SetString("9252662952969393856711468743327022054484546162727338092576697495684140272191")
pointH.Y.SetString("8220002160263982499510761441032261960817037857915665984040705585999508400744")
var pointH twistededwards.Point
pointH.X = shieldPointHX
pointH.Y = shieldPointHY
var pointRandom twistededwards.Point
pointRandom.ScalarMulFixedBase(cs, pointH.X, pointH.Y, amountRandom, curve)
pointRandom.ScalarMulNonFixedBase(cs, &pointH, amountRandom, curve)
var pointSum twistededwards.Point
pointSum.AddGeneric(cs, &pointAmount, &pointRandom, curve)
......
......@@ -86,7 +86,7 @@ func (p *mixPolicy) createAuthTx(req *mixTy.CreateRawTxReq) (*types.Transaction,
return nil, errors.Wrapf(types.ErrInvalidParam, "asset exec=%s or symbol=%s not filled", req.AssetExec, req.AssetSymbol)
}
proofInfo, err := getZkProofKeys(mixTy.VerifyType_AUTHORIZE, auth.ZkPath, mixTy.AuthPk, input, req.ZkProof)
proofInfo, err := getZkProofKeys(mixTy.VerifyType_AUTHORIZE, auth.ZkPath, mixTy.AuthPk, input)
if err != nil {
return nil, errors.Wrapf(err, "getZkProofKeys note=%s", auth.NoteHash)
}
......
......@@ -126,7 +126,7 @@ func (p *mixPolicy) depositParams(exec, symbol, receiver, returner, auth, amount
}
func (p *mixPolicy) getDepositProof(exec, symbol, receiver, returner, auth, amount, zkPath string, verifyOnChain bool, proof string) (*mixTy.ZkProofInfo, error) {
func (p *mixPolicy) getDepositProof(exec, symbol, receiver, returner, auth, amount, zkPath string, verifyOnChain bool) (*mixTy.ZkProofInfo, error) {
resp, err := p.depositParams(exec, symbol, receiver, returner, auth, amount)
if err != nil {
......@@ -141,7 +141,7 @@ func (p *mixPolicy) getDepositProof(exec, symbol, receiver, returner, auth, amou
input.ReturnPubKey.Assign(resp.Proof.ReturnKey)
input.NoteRandom.Assign(resp.Proof.NoteRandom)
proofInfo, err := getZkProofKeys(mixTy.VerifyType_DEPOSIT, zkPath, mixTy.DepositPk, &input, proof)
proofInfo, err := getZkProofKeys(mixTy.VerifyType_DEPOSIT, zkPath, mixTy.DepositPk, &input)
if err != nil {
return nil, err
}
......@@ -199,7 +199,7 @@ func (p *mixPolicy) createDepositTx(req *mixTy.CreateRawTxReq) (*types.Transacti
var proofs []*mixTy.ZkProofInfo
for i, rcv := range receivers {
p, err := p.getDepositProof(req.AssetExec, req.AssetSymbol, rcv, deposit.Deposit.ReturnAddr, deposit.Deposit.AuthorizeAddr, amounts[i], deposit.ZkPath, req.VerifyOnChain, req.ZkProof)
p, err := p.getDepositProof(req.AssetExec, req.AssetSymbol, rcv, deposit.Deposit.ReturnAddr, deposit.Deposit.AuthorizeAddr, amounts[i], deposit.ZkPath, req.VerifyOnChain)
if err != nil {
return nil, errors.Wrapf(err, "get Deposit proof for=%s", rcv)
}
......
......@@ -5,7 +5,6 @@
package wallet
import (
"fmt"
"github.com/consensys/gnark/frontend"
"path/filepath"
......@@ -96,7 +95,7 @@ func (p *mixPolicy) getTransferOutput(exec, symbol string, req *mixTy.DepositInf
}
//input = output+找零+交易费
func getShieldValue(cfg *types.Chain33Config, inputAmounts []uint64, outAmount, change, minTxFee uint64) (*mixTy.ShieldAmountRst, error) {
func getShieldValue(inputAmounts []uint64, outAmount, change, minTxFee uint64, pointHX, pointHY string) (*mixTy.ShieldAmountRst, error) {
var sum uint64
for _, i := range inputAmounts {
sum += i
......@@ -132,8 +131,6 @@ func getShieldValue(cfg *types.Chain33Config, inputAmounts []uint64, outAmount,
random := v.String()
rChange.SetString(random[0 : len(random)/2])
rOut.SetString(random[len(random)/2:])
fmt.Println("rOut", rOut.String())
fmt.Println("rChange", rChange.String())
var rSumIn, rSumOut fr.Element
rSumIn.SetZero()
......@@ -166,10 +163,6 @@ func getShieldValue(cfg *types.Chain33Config, inputAmounts []uint64, outAmount,
return nil, errors.Wrapf(types.ErrInvalidParam, "random sumIn=%s not equal sumOut=%s", rSumIn.String(), rSumOut.String())
}
conf := types.ConfSub(cfg, mixTy.MixX)
pointHX := conf.GStr("pointHX")
pointHY := conf.GStr("pointHY")
var inputHPoints []*twistededwards.PointAffine
for _, i := range rInputs {
inputHPoints = append(inputHPoints, mixTy.MulCurvePointH(pointHX, pointHY, i.String()))
......@@ -177,9 +170,6 @@ func getShieldValue(cfg *types.Chain33Config, inputAmounts []uint64, outAmount,
//noteH := mixTy.MulCurvePointH(rNote.String())
outH := mixTy.MulCurvePointH(pointHX, pointHY, rOut.String())
changeH := mixTy.MulCurvePointH(pointHX, pointHY, rChange.String())
//fmt.Println("change",changeRandom.String())
//fmt.Println("transfer",transRandom.String())
//fmt.Println("note",noteRandom.String())
sumPointH := mixTy.GetCurveSum(inputHPoints...)
if !mixTy.CheckSumEqual(sumPointH, outH, changeH) {
return nil, errors.Wrapf(types.ErrInvalidParam, "random sum error")
......@@ -203,7 +193,6 @@ func getShieldValue(cfg *types.Chain33Config, inputAmounts []uint64, outAmount,
}
for _, r := range rInputs {
rst.InputRandoms = append(rst.InputRandoms, r.String())
fmt.Println("inputRandom", r.String())
}
for _, p := range inputGPoints {
rst.Inputs = append(rst.Inputs, &mixTy.ShieldAmount{X: p.X.String(), Y: p.Y.String()})
......@@ -295,8 +284,12 @@ func (p *mixPolicy) createTransferTx(req *mixTy.CreateRawTxReq) (*types.Transact
}
bizlog.Info("transferProof deposit to change succ")
conf := types.ConfSub(p.walletOperate.GetAPI().GetConfig(), mixTy.MixX)
pointHX := conf.GStr("pointHX")
pointHY := conf.GStr("pointHY")
//获取shieldValue 输入输出对amount隐藏
shieldValue, err := getShieldValue(p.walletOperate.GetAPI().GetConfig(), inputAmounts, outAmount, changeAmount, uint64(txFee))
shieldValue, err := getShieldValue(inputAmounts, outAmount, changeAmount, uint64(txFee), pointHX, pointHY)
if err != nil {
return nil, err
}
......@@ -307,30 +300,27 @@ func (p *mixPolicy) createTransferTx(req *mixTy.CreateRawTxReq) (*types.Transact
input.ShieldAmountX.Assign(shieldValue.Inputs[i].X)
input.ShieldAmountY.Assign(shieldValue.Inputs[i].Y)
input.AmountRandom.Assign(shieldValue.InputRandoms[i])
input.ShieldPointHX.Assign(pointHX)
input.ShieldPointHY.Assign(pointHY)
}
outPart.ShieldAmountX.Assign(shieldValue.Output.X)
outPart.ShieldAmountY.Assign(shieldValue.Output.Y)
outPart.AmountRandom.Assign(shieldValue.OutputRandom)
outPart.ShieldPointHX.Assign(pointHX)
outPart.ShieldPointHY.Assign(pointHY)
changePart.ShieldAmountX.Assign(shieldValue.Change.X)
changePart.ShieldAmountY.Assign(shieldValue.Change.Y)
changePart.AmountRandom.Assign(shieldValue.ChangeRandom)
//输入的proof,CI测试目的,正常情况下为空,需输入pk路径
proofs := make([]string, len(inputParts)+2)
if len(req.ZkProof) > 0 {
proofs = strings.Split(req.ZkProof, "-")
if len(proofs) != len(inputParts)+2 {
return nil, errors.Wrapf(types.ErrInvalidParam, "wrong proof num=%d, inputs=%d", len(proofs), len(inputParts)+2)
}
}
changePart.ShieldPointHX.Assign(pointHX)
changePart.ShieldPointHY.Assign(pointHY)
//verify input
var inputProofs []*mixTy.ZkProofInfo
vkFile := filepath.Join(transfer.ZkPath, mixTy.TransInputVk)
for i, input := range inputParts {
inputProof, err := getZkProofKeys(mixTy.VerifyType_TRANSFERINPUT, transfer.ZkPath, mixTy.TransInputPk, input, proofs[i])
inputProof, err := getZkProofKeys(mixTy.VerifyType_TRANSFERINPUT, transfer.ZkPath, mixTy.TransInputPk, input)
if err != nil {
return nil, errors.Wrapf(err, "verify.input getZkProofKeys,the i=%d", i)
}
......@@ -342,7 +332,7 @@ func (p *mixPolicy) createTransferTx(req *mixTy.CreateRawTxReq) (*types.Transact
//verify output
vkOutFile := filepath.Join(transfer.ZkPath, mixTy.TransOutputVk)
outputProof, err := getZkProofKeys(mixTy.VerifyType_TRANSFEROUTPUT, transfer.ZkPath, mixTy.TransOutputPk, outPart, proofs[len(inputParts)])
outputProof, err := getZkProofKeys(mixTy.VerifyType_TRANSFEROUTPUT, transfer.ZkPath, mixTy.TransOutputPk, outPart)
if err != nil {
return nil, errors.Wrapf(err, "output getZkProofKeys")
}
......@@ -352,7 +342,7 @@ func (p *mixPolicy) createTransferTx(req *mixTy.CreateRawTxReq) (*types.Transact
outputProof.Secrets = outDHSecret
//verify change
changeProof, err := getZkProofKeys(mixTy.VerifyType_TRANSFEROUTPUT, transfer.ZkPath, mixTy.TransOutputPk, changePart, proofs[len(inputParts)+1])
changeProof, err := getZkProofKeys(mixTy.VerifyType_TRANSFEROUTPUT, transfer.ZkPath, mixTy.TransOutputPk, changePart)
if err != nil {
return nil, errors.Wrapf(err, "change getZkProofKeys")
}
......
......@@ -98,7 +98,7 @@ func (p *mixPolicy) createWithdrawTx(req *mixTy.CreateRawTxReq) (*types.Transact
if err != nil {
return nil, errors.Wrapf(err, "getWithdrawParams note=%s", note)
}
proofInfo, err := getZkProofKeys(mixTy.VerifyType_WITHDRAW, withdraw.ZkPath, mixTy.WithdrawPk, input, req.ZkProof)
proofInfo, err := getZkProofKeys(mixTy.VerifyType_WITHDRAW, withdraw.ZkPath, mixTy.WithdrawPk, input)
if err != nil {
return nil, errors.Wrapf(err, "getZkProofKeys note=%s", note)
}
......
......@@ -212,24 +212,9 @@ func updateTreePath(obj interface{}, treeProof *mixTy.TreePathProof) {
tv.FieldByName("Valid" + strconv.Itoa(i)).Addr().Interface().(*frontend.Variable).Assign("0")
}
}
func getZkProofKeys(circuitTy mixTy.VerifyType, path, file string, inputs frontend.Circuit, proof string) (*mixTy.ZkProofInfo, error) {
var proofKey bytes.Buffer
//是Pk file, 需要生成proof
if len(proof) > 0 {
//直接读proof
pkBuf, err := mixTy.GetByteBuff(proof)
if err != nil {
return nil, err
}
proofKey.Write(pkBuf.Bytes())
} else {
func getZkProofKeys(circuitTy mixTy.VerifyType, path, file string, inputs frontend.Circuit) (*mixTy.ZkProofInfo, error) {
//从电路文件获取电路约束
circuit, err := getCircuit(circuitTy)
if err != nil {
......@@ -250,21 +235,21 @@ func getZkProofKeys(circuitTy mixTy.VerifyType, path, file string, inputs fronte
if _, err := pk.ReadFrom(pkBuf); err != nil {
return nil, errors.Wrapf(err, "read pk")
}
//产生zk 证明
proof, err := createProof(circuit, pk, inputs)
if err != nil {
return nil, errors.Wrapf(err, "create proof to %s", pkFile)
}
var proofKey bytes.Buffer
if _, err := proof.WriteRawTo(&proofKey); err != nil {
return nil, errors.Wrapf(err, "write proof")
}
}
//序列号成字符串
//公开输入序列化
var pubBuf bytes.Buffer
_, err := witness.WritePublicTo(&pubBuf, ecc.BN254, inputs)
_, err = witness.WritePublicTo(&pubBuf, ecc.BN254, inputs)
if err != nil {
return nil, errors.Wrapf(err, "write public input")
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment