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

Currently, every new note commitment is calculated using
rho_new = nf_old = DeriveNullifier_nk(rho_old, psi_old, cm_old).
For split notes, we would like to evaluate the new note commitment with
rho_new = nf_old_pub (a random nullifier which is stored in the instance nf_old_pub).
For all remaining notes, nf_old = nf_old_pub.
As such, implementing rho_new = nf_old_pub for all notes will not affect
those remaining notes (and only affect split notes).
This commit is contained in:
Constance Beguier 2023-05-25 16:01:50 +02:00 committed by GitHub
parent aeb993403b
commit b4f628133e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 47 additions and 39 deletions

View File

@ -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"),
@ -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,
)
};
@ -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(
@ -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",

View File

@ -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),

Binary file not shown.