Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Circuit: Use nf_old_pub to evaluate new note commitment (with rho_new = nf_old_pub) #62

Merged
merged 1 commit into from
May 25, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 18 additions & 10 deletions src/circuit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -459,7 +459,7 @@ impl plonk::Circuit<pallas::Base> for Circuit {
let ecc_chip = config.ecc_chip();

// Witness private inputs that are used across multiple checks.
let (psi_old, rho_old, cm_old, g_d_old, ak_P, nk, v_old, v_new, asset) = {
let (psi_old, rho_old, cm_old, g_d_old, ak_P, nk, v_old, v_new, asset, nf_old_pub) = {
// Witness psi_old
let psi_old = assign_free_advice(
layouter.namespace(|| "witness psi_old"),
Expand Down Expand Up @@ -524,8 +524,22 @@ impl plonk::Circuit<pallas::Base> for Circuit {
self.asset.map(|asset| asset.cv_base().to_affine()),
)?;

// Witness nf_old_pub
let nf_old_pub = layouter.assign_region(
|| "load nf_old pub",
|mut region| {
region.assign_advice_from_instance(
|| "load nf_old pub",
config.primary,
NF_OLD,
config.advices[0],
1,
)
},
)?;

(
psi_old, rho_old, cm_old, g_d_old, ak_P, nk, v_old, v_new, asset,
psi_old, rho_old, cm_old, g_d_old, ak_P, nk, v_old, v_new, asset, nf_old_pub,
)
};

Expand Down Expand Up @@ -754,7 +768,7 @@ impl plonk::Circuit<pallas::Base> for Circuit {
};

// ρ^new = nf^old
let rho_new = nf_old.inner().clone();
let rho_new = nf_old_pub.clone();

// Witness psi_new
let psi_new = assign_free_advice(
Expand Down Expand Up @@ -851,13 +865,7 @@ impl plonk::Circuit<pallas::Base> for Circuit {
nf_old
.inner()
.copy_advice(|| "nf_old", &mut region, config.advices[9], 0)?;
region.assign_advice_from_instance(
|| "nf_old pub",
config.primary,
NF_OLD,
config.advices[0],
1,
)?;
nf_old_pub.copy_advice(|| "nf_old", &mut region, config.advices[0], 1)?;

is_native_asset.copy_advice(
|| "is_native_asset",
Expand Down
58 changes: 29 additions & 29 deletions src/circuit_description
Original file line number Diff line number Diff line change
Expand Up @@ -28887,48 +28887,48 @@ PinnedVerificationKey {
(0x3a83a8e762ebade712aa5cf3c41c730a79369475085bf1155579f7f7682408e2, 0x25b00d3ee1da9a6bbd36b35ba461da45abd931c767b863ec4a604f8ce094e4eb),
(0x1caeb4d7ebb44a717f83ee5afd35446a5e2124f6a4075342ba4eff589523fb57, 0x3a8c431a13632a5b5f035eb4b804d37f2591e84d05d765ba3f70a3d61b907ebb),
(0x107d95a6361fc98df9042f32451faa4fd48c1381653be7847d97cf997a55a4ad, 0x31ebf6a2e352108bb180c3278e72d88bb5bab723d3b38aa47c144fc37fb8a962),
(0x090c0e45d81111bd494b9ce7c16fb0e0bbc953911c1701e42a5de5f36389afbc, 0x23ab5bd08aed9eee6c7e78f15652ef51633694b92b1632f9e51ccd31b286066b),
(0x10b2c2af49d17b962211ad5bbb682532940839026d0d242b254b907a50d136ba, 0x1a59a77fd094078d6075a3bdb691bb0b8808a97d2e06092cb6afa767fcdf4cbb),
(0x2b98cb6188d5afb90a5bc94d9f6c23086164284107dfb04a4504b61833a5f9dc, 0x205725733d9c55704a574a244fd4c0038e001261c9f978a2ddbe2ffd33bc026c),
(0x31711515cf172b14651f22ff63fa42011b6de4daa3b71e28a0ce57ae65be3e18, 0x1da5bab80180265242efdfe09c64caf1e987a16384d9eb3bf80343cdd0154dd4),
(0x33548b13c1aeadbbebeced0618b28498d0f95cc26a0413dc6c6b12d305bc9de7, 0x04769755bd24a459f3b86018e78e1f4d14796ba33aa7a08684529e47860f215c),
(0x03e2f4d89dd13482c272721bcffc31fad53b5deb7f402cc2522d2c10cda6bbbd, 0x3b5af207073d98eb42123895069f5a1b726a476ad1ec2945ea63395c284447ec),
(0x3518a704cfc4622b72b4ff3cbc7382fe91fcd77d861e4ef7f2a9830150066746, 0x12639d3e4aa8d1d82cd591fa2e58b1679b677e5e99711a733746dcd47b36a987),
(0x035cc4fa63ce607b7dfdfc08beb5380e3f837090ec4b812b1772ad03ca97156c, 0x14e9d0f3ffedac7d9857fc47f68ccb943f602577a0037e0e3c972b9996f96d71),
(0x00f8d7b4c395ef38584c0182319952b12a25f9d51b75293d4c62f7a5f4405a72, 0x37fa03464d244314d298ecfe5ab9fd9d99d63f38e6c6d54b97efa04b3acc6fb4),
(0x340633bc671d4839c9245701bd7877dffa14caa8516fc2b2d97ab743abff31b2, 0x2d44e13f4cbd8767746e33ca3780ca730de2e81c68fd2eac2856405c810ea835),
(0x0686df606b54c901940689a81e292bbf35653bed36d07d565e6c1bb2f04f7f16, 0x109273b534b0bcdf7d3b651b87631202e692e9799f300b93bdde0c1084644f98),
(0x3b5c55541e5ecbed649a67e81c69ecf846b0d8bb5b3fb0dca7cc855508a60291, 0x2c2d977d9db18dac2bfeb6863e04603fbe577260b77d83de7a40440d0d7e96e0),
(0x377b4690b84709cca9b5f7557a4946907582090395704a279bc3d0474649649c, 0x19d8a463645acaf5e80a0eae028da3175fe3fd07a8afa7b357266951fabf15a2),
(0x01b35d8bd7fff98c6eca9e68b04159d9e04c8c97ee823cbfb25c72759a0f1bff, 0x2f690ea00d11748a56994db1d5086cc14feb4e182950aa3bd78a5e7c39f1c438),
(0x14322512145256db0a887e0d44cb0ca576d199cd60dd6c0fc592974f5bfc982c, 0x14f0d717d83c30687335f599f0e0b313e1f908d8cb539273271d61b6c0c7a977),
(0x2cfd5a6eebaf22de42df01c35ea51d5149528799a4dae214ff5ea4964384549a, 0x0241a066241ababd11a9d336f30a68d2eb40b15a1a74ce7ebb8284818341195f),
(0x1a104a92aae262af0c12ae8e460b8a050d0609236881b44523a51ade8d58fb59, 0x1b4826150f81242668cdf5ac67894f1aaa4f958b4e26af911fcca643c4cd5265),
(0x1973139bb6cfd1f498c01fda7934f1b9954a52bb7e3778814745f73a03f1ec21, 0x0984409ed6f0dfbf0b25a658c4838327096519bd700e0b7ccd69528d971da6d4),
(0x3c0f3f0d7b2306490dac7d578d4846c63adcc76988ce322d8691c3b8b5b0f623, 0x12d81ca672a1c18f6e0d9b7eb8fbabdbe450fae6667cf349c1a0e63ca9a0824e),
(0x27d13b33003ffddcd36efb731fe94db93d181bd994e0c057e945402bc8501789, 0x0e1dde94ea3b35e0d0a66350163ba2ff9dd5070500912b7d076747816965ffd2),
(0x3049e9c8a3e6c7fe628660121f04915e03546b7a2dcb8a3e59fa99546e4f7f86, 0x2dcebc740917584f788b776f4cf1e3cd96b4a29e9df7224fd8e5f428d4112546),
(0x245ebb4ccefa7c4e2d5a9d7b1746b8277abc25f74cd11b2dbb752d49612f248e, 0x145f605111205a7c3e4620ac035b3cccb6375f8d3c3469b7900e427607c401c9),
(0x1751912a19fa0009ece61b686342d6b4385415e942159e8db3f174ad24d612b9, 0x0f31114ef566211d46914d0bc2d1a27a0e34eeda04dab53a0af7a37024f057a1),
(0x091c6c4854fa5d9ed8a966f2a1c4946b41f6872de6c19fa8b521a0a8eb2bd899, 0x29100b4e15344d750fae4a81c82faca1e8e0573336b1f54b394946e95e7baad0),
(0x210297af23386f0691220f2a0e3504336a815cdba5167277a13f0a7b992b8e43, 0x2a184bc5b1981e303cbc0a18f4a01b4dc49695b9a319bd7e713d55e46d1235ae),
(0x05cd80ee69394fb4efe616ef91593c3b8e6e142f2269524f01476ab78a67c9f6, 0x23a7840c00619fe55078a6bffb8a061913f929a7669861ebe99859a48136f12d),
(0x1a5bb6ffd1af2165203df63414021a531f0f2bfcec85443a180993cc222b40af, 0x0d6b8b0d2363607d15746434b670008845ed0524406c1d8a221cb6f58ee2d4ed),
(0x3b31f6e48472e06a9f21145e3a37744fa0ceb6188485ce44b1a131ae47661e17, 0x382d47f03a6703a3018d8582a6123e0e61c549d695f1e2a40bb578bc2ca0e6f2),
(0x34c8b83a2cc924f1b0237978c8f911e6a54375c509ba46456a011fbb74c8698c, 0x260cc681c222535c0030f702172ee8855b681c16d706b1b9a786165e06705de6),
(0x3dcb136a22551e524212c0325331a9dae5ad6ff356175e6b82a54039475be1ef, 0x3bbbd0d20ea0ebb0f36d740910947d1934bcb93ba16325ea42f124ec0cde7a81),
(0x1b7a61e8a9b32fe558433feec9aaf51204e5486aa468d7215087ed35fd6ecbe5, 0x1f36dc6852f92c141ba800f721d079ffc553c7449b85d16e7487e0c3009c7835),
(0x3bb657ca32617e6242b6c6a0b166a1db205024d0441d091b8d45fb478cd4782c, 0x3189ce1b97103345fc0eafd287eed80ab186151171f22af2c9befc71a0957529),
(0x25578b0a6d546cf38dc84329fad41e59690a2bd94a0db5fddb42e0db8c267827, 0x03448e4552625dda62a96318bcafcc305deafd6a028f8379d8c8d9ffa0f86e64),
(0x30d1828d7463255ad75b39ee4c718de05a762c45c5d717d059496fe05d1575b4, 0x0a8eb70a9b252ee9ee57b29e4dab191cbb29665821830b2ab60fdd5d3414de45),
(0x2b18121165b0ebf2ab46c207d973f44f135c24efecc1cc48d47d38769969aa2e, 0x1a829739cf7eb6422f581f64632c65073aa49819e62e80489b6aae61e6edd6a0),
(0x23ae57d2095a4324262aa76f345fe7bc21d8ad7b3203a8167bf8315e64a11d25, 0x1a871041d826e0e3bd7520e03dca1f56211065b049b2bebc59d8e01b4addb1d3),
(0x029871a070ccef21bb6d1d5d7e51597b0dd8f38208f1b304bd372b48aaea0a3f, 0x3205e4b0ab706647e6f45cf2b2091afd69636a8f61426504983bf44d47d676ec),
(0x0bd7a66e0b566e724536f77fe659014db82286485859c1ae9d95f42cb898f763, 0x358962c131dc5dd41db0fe6a8fe5315b75dd9204682d1de05470184c8a331a8a),
(0x336245b9b67f39852776a1f6ba5072ad3776f38d9b0659568d3afb2e6d3750d3, 0x1ae68f5f91a6d28b62a9fb9240ee53f86e0ac434286429024c253bf85325033e),
(0x21c6cc32a998a56e0184238756f9bc06c034326644fa797d58d37a4ce04862ad, 0x0a3215ded9e38470be699055ba4776fda0751bc3d0b893e49c71f2817e12c354),
(0x2b8641a13009b6e2c57fb902961c97d5a37fe9e7012c48a27e644ab86c6e798c, 0x31dc90911a15d74e74ad51ac80cbfca12b1eb06038bb3d5aecc0498c5bd5ff68),
(0x10b4ec889583134fa09dc3e6f0fac585f2dbf6dddcc1eea2c95bab4b8de05be5, 0x0eb4092d1a27658602828702d73145b842f9dbe4b113b61b10049ebe406d625c),
(0x0b9493ff319556d1792c2b1ccef1c52d6097620601b22c8a6cc9f3da9608a3df, 0x098fabd4f3443138f8c72fa5991a7012266cd3d574a65083a611688aec7c631d),
(0x2574aa02cd03503fc37ade3434a4d426f97f94e5f98ae5ea8f3d1324589670a5, 0x22b31bec6726ce49ea837dc05d3576d2e71536ada0d7db4efcd06c34b2129e2c),
],
permutation: VerifyingKey {
commitments: [
(0x1dcbd758066eec5488296ece96ea7fd0eb814479bf5cf04418c109e0c6e3b65f, 0x16f9507e843611c3891c03a5acbb47cb2d8c591575911c12815cb1e031cab8af),
(0x2388cbed968c22e32b6bd4a1b2395ec1d940135e0136e1df5600f2d759748a64, 0x251608eff7019c64b80df6b45d2a561208e59247da23c0c41f29268ebebcc989),
(0x25d09b3bd46f027633197dae5164cb90c8cf4358598bcd747791b9d95370b1e3, 0x0e94d8861f8b7a6c4f7edf780b131fe2b89757c46cf0b2da24a3592c8824c692),
(0x019398cb329abefa110b3c4d12af9685272f7a611599f5e9c54cd644f0882a51, 0x2a5d9081f77f6e389a355fcc45425a3d4d6de28cb34b26bf54ba66fbd34b8f86),
(0x04596f22bde8d6e02fa2426ea314dd115fd757bc58a60e7349669dd090e5d756, 0x09ead6fcd376d620681f3b14c89337d25ec795cde09fab7da0376bf07bbd402b),
(0x0f7bd41cab58414151f520efc629836da3052d911e95ec09301e25a36e10e9fb, 0x008998b3c16c01c66bd471eca4c16d87adfa0856886b11bff2d04e281e45f234),
(0x122e03591cfc43c812fbfcd45a3062d845b6beecd5e9591fc78cd07734fd5eab, 0x3bb6a66ca91558265efcd59482b2f016ccd34e6b916410e5a198e142ff9257c1),
(0x1656a1c579376b8b92f00c907dc544843231a13b0e0b58be652c9ef44e0d8957, 0x0608dca2d8f9ad5ce0d7b0545a3d148371e4e3993249db87ae4e8a95034e330a),
(0x1d8dd2ef5d363793653c385ef62f382f48d21234caf6dce0806f9295d0f63f47, 0x3aa78867d1d8cc02a50e0ed804a07b0572ae191f0b1c495072fd11f6d2aea2ef),
(0x2cb9fe3cfca45f22aab479b9c54d7731bd165a236bc2d0bfea9af9bdaf8969eb, 0x2acc3469ecb12ba57992881873adeda3f8380262977b53175a99f4009d082405),
(0x1f56f0d66eb5c9f86a680efda44e992322f4934c10b83895ffe60aca9305c5f3, 0x20cb980461e94d5e6a5b5beaf4361b77680f5cdd4f3c4398473aeaca212ada1f),
(0x3f821ad8e7fe3fb349c6e9b316bba2505648a219f337f9e5f1265572b606fb4f, 0x3f4472a3137db52586f3adad1584ee57dc0946595c62f6a39420183814cb3a42),
(0x09d1106babba44f67eace95337e3b9916cf02d0b143d5993cf212ba4fa6e2d81, 0x2046a60feac842a629a24189de9d914da26b2254440c142cf851f6d4d5c586a4),
(0x26086868fee3f97d3171042e8ad377782aa845dd3e5c6c86f5d1251b41b8ff03, 0x2f60015e46a7e2bc0e30413be4782c648ec5e9dedc92ce9052fd2857a779a4cd),
(0x00d54c6162e5654355cbaa6951f86836cea891242793df30e4ae74d522747d01, 0x0f9d6c7108000d07ff766c16757c7a02cc8bcaa1ce3001c476bda543db4b52fb),
(0x131a626c24a64b23cb9a554921462f8b3848294a5a12110528b11362fe80f59c, 0x3e8076404262e3d7b5a6d2a3dbdf0fb151e2f3fe4a9239365dfd63853bfd8b8d),
(0x00aae2c83a8cb88fd04c9c631ea69362f38d41688624f519c6aab8fb15110931, 0x0294f0e5b376a7bc9fd190f34c00201c0ffa2a019148d27e1a578effba915450),
(0x2022cd25023adefba897a064d43365c59df92f547eea992189040ecf23eb1b89, 0x2d5ada0189acf8d400ed967e8537e7de7979d2bd6ad5430aa009e200edcad889),
(0x30e4290b63621db78bfadf242ac8a940179ddd601127f4fe05df818dda0de8b5, 0x13ab4dd58054df7dc7c4e59fcf5745373889113fccc60d8a79957dcbc4a1a79e),
(0x17ee4b08749d802b2cb5a8d72df1d27c4a521293347698bac389f473f573888f, 0x19efafbfa1bc8c4e62cb0d8893905ac7a30da08a9ffc18ac26f741c6419f2fe1),
(0x1a5804444e8f54cdff0f38ee9fc051672b5fcb0cf39cc608e20db884c18c2ae0, 0x11b297659614cacbc3fe5b6b8506d7b31d04ec061329c791714478f480215263),
(0x22bbc74dac7b42add29982d2d276b548b38b2fdc8628d4fd331f5d09cae93881, 0x0808f95123e9339e6643594561b28d0a4b6d7d52bdf0b60e3ab698336cfefe06),
(0x07201f37d78f79f85a69d9333e60682fd709fcb7b9fbc843d0baef7885a79246, 0x3b01c7b445dd60b44309c172d55cd2bfed068fa420f8c2cbf316eac3bda6985b),
(0x3998aad0ccd62e9339c4ca91363bec2524ec945bb780efd9984fec68b4f51efb, 0x32cdaa4c65f29fa0675df2196f3190b849dd1dc4a48d615602e57b282cb34673),
(0x21d210b41675a1eae44cbd0f3fd27d69e30716c71873f6089cee61acacd403ab, 0x2275e97c7e84f68bfaa528a9d8be4e059f7abefd80d03fbfca774e8414a9b7c1),
(0x0f9e7de28e0f650d99d99d95c0fcd39c9dac9db5aa1973319f66922d6eb9f7d5, 0x1ba644ecc18ad711ddd33af7f695f6834e9f35c93d47a6a5273dabbe800fc7e6),
(0x0aab3ab73afac76277cd94a891de15e42ceb09f3a9865dab5c814bebfbb4453f, 0x27119fec3736d99abeeef1ad7b857db7e754e0c158780ed3dd0cdd4dc2453e10),
Expand Down
Binary file modified src/circuit_proof_test_case.bin
Binary file not shown.