Skip to content

Commit

Permalink
Changes to TXID generation to account for ZSA additions (#22)
Browse files Browse the repository at this point in the history
* updating zip_0244 functions to support generating both V5 and V6 digests, and adding NU6 constants to transaction.py

* adding V6 transaction class to transaction.py -- code reuse needs to be improved

* changes to transaction.py and zip_0244.py

* minor update

* initial attempt at inheritance, to be improved

* changing inheritance structure of TransactionV5 and TransactionV6, and moving TransactionV6 to transaction_zsa.py

* reverting zip_0244.py to only include V5 details

* separate txid vectors for zsa into separate files

* adding ZSA version of zip 244 vectors

* renaming to NU7 and so on

* still WIP, updating to work with librustzcash code

* updating get_random_unicode_bytes to give a slightly wider range of values

* changes to the transaction format serialization and the txid generation to make it spec compliant

* updating the generated test vectors

* some cleanup changes

* removing unichr option from get_random_unicode_bytes

* cleaner import

* simple changes based on review comments

* moving common transaction fields in a way that reduces code duplication

* reducing code duplication by creating an OrchardActionBase class which is inherited by OrchardActionDEscription and OrchardZSAActionDescription

* reducing code duplication in transaction, transaction_zsa, zip_0244 and orchard_zsa/digests files

* reducing code duplication inside the main function of zip_0244 and orchard_zsa/digests

* changing txn version back to V6

* renaming rho to nf_old in note_encryption files
  • Loading branch information
vivek-arte committed Sep 19, 2024
1 parent 2b26fd8 commit a482147
Show file tree
Hide file tree
Showing 24 changed files with 1,107 additions and 356 deletions.
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -71,3 +71,4 @@ orchard_zsa_asset_base="zcash_test_vectors.orchard_zsa.asset_base:main"
orchard_zsa_issuance_auth_sig="zcash_test_vectors.orchard_zsa.issuance_auth_sig:main"
orchard_zsa_key_components = "zcash_test_vectors.orchard_zsa.key_components:main"
orchard_zsa_note_encryption = "zcash_test_vectors.orchard_zsa.note_encryption:main"
orchard_zsa_digests = "zcash_test_vectors.transaction_zsa:main"
1 change: 1 addition & 0 deletions regenerate.sh
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ tv_scripts=(
zip_0143
zip_0243
zip_0244
orchard_zsa_digests
zip_0316
zip_0320)

Expand Down
2 changes: 1 addition & 1 deletion test-vectors/json/orchard_note_encryption.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[
["From https://github.com/zcash-hackworks/zcash-test-vectors/blob/master/orchard_note_encryption.py"],
["incoming_viewing_key, ovk, default_d, default_pk_d, v, rseed, memo, cv_net, rho, cmx, esk, ephemeral_key, shared_secret, k_enc, p_enc, c_enc, ock, op, c_out"],
["incoming_viewing_key, ovk, default_d, default_pk_d, v, rseed, memo, cv_net, nf_old, cmx, esk, ephemeral_key, shared_secret, k_enc, p_enc, c_enc, ock, op, c_out"],
["1039d8e64a80902e105947817df3bdfb7df7030e68739f9c533a36bf5a6a807243106de9a7ec54dd36dfa70bdbd9072dbddab5e066aaeffcf9bba320d4fff712", "5d7a8f739a2d9e945b0ce152a8049e294c4d6e66b164939daffa2ef6ee692148", "56e84b1adc9423c3676c04", "63f7125df4836fd2816b024ee70efe09fb9a7b3863c6eacdf95e03894950692c", 8567075990963576717, "bf69b8250c18ef41294ca97993db546c1fe01f7e9c8e36d6a5e29d4e30a73594", "ffbf5098421c69378af1e40f64e125946f62c2fa7b2fecbcb64b6968912a6381ce3dc166d56a1d62f5a8d7551db5fd9313e8c7203d996af7d477083756d59af80d06a745f44ab023752cb5b406ed8985e18130ab33362697b0e4e4c763ccb8f676495c222f7fba1e31defa3d5a57efc2e1e9b01a035587d5fb1a38e01d94903d3c3e0ad3360c1d3710acd20b183e31d49f25c9a138f49b1a537edcf04be34a9851a7af9db6990ed83dd64af3597c04323ea51b0052ad8084a8b9da948d320dadd64f5431e61ddf658d24ae67c22c8d1309131fc00fe7f235734276d38d47f1e191e00c7a1d48af046827591e9733a97fa6b679f3dc601d008285edcbdae69ce8fc1be4aac00ff2711ebd931de518856878f73476f21a482ec9378365c8f7393c94e2885315eb4671098b79535e790fe53e29fef2b3766697ac32b4f473f468a008e72389fc03880d780cb07fcfaabe3f1a84b27db59a4a153d882d2b2103596555ed9494c6ac893c49723833ec8926c1039586a7afcf4a0d9c731e985d99589c8bb838e8aaf745533ed9e8ae3a1cd074a51a20da8aba18d1dbebbc862ded42435e92476930d069896cff30eb414f727b89e001afa2fb8dc3436d75a4a6f26572504b192232ecb9f0c02411e52596bc5e90457e745939ffedbd12863ce71a02af117d417adb3d15cc54dcb1fce467500c6b8fb86b12b56da9c382857deecc40a9", "ddba24f39f708ed7a7485713711142c238513815302df0f4830421a6c13e7101", "ca1feb30ca111776c0417466bd69b3d213882eef55e60b6d9e2a98e705eef327", "23757c515821cbc1843c9a457b7e6ae601add2ea10b9c86d6b317ce2f17bd921", "5bfe469c33e447ba456b8bfe9b385b3931b4baeb8f7023fe8e33354ffff1bd1a", "8a5e132c3a0704f2456fbd777a13d6ec57655671db072a7d276ad969f5ec4517", "36d54cabc67f6cc726a730f3a0ceed5853f08cd38146c8342598987c215048a5", "82c43265337f1ab37b18df277548618263b8024d9b145a05ade2eb5479180320", "0256e84b1adc9423c3676c048d5f2935395ee476bf69b8250c18ef41294ca97993db546c1fe01f7e9c8e36d6a5e29d4e30a73594ffbf5098421c69378af1e40f64e125946f62c2fa7b2fecbcb64b6968912a6381ce3dc166d56a1d62f5a8d7551db5fd9313e8c7203d996af7d477083756d59af80d06a745f44ab023752cb5b406ed8985e18130ab33362697b0e4e4c763ccb8f676495c222f7fba1e31defa3d5a57efc2e1e9b01a035587d5fb1a38e01d94903d3c3e0ad3360c1d3710acd20b183e31d49f25c9a138f49b1a537edcf04be34a9851a7af9db6990ed83dd64af3597c04323ea51b0052ad8084a8b9da948d320dadd64f5431e61ddf658d24ae67c22c8d1309131fc00fe7f235734276d38d47f1e191e00c7a1d48af046827591e9733a97fa6b679f3dc601d008285edcbdae69ce8fc1be4aac00ff2711ebd931de518856878f73476f21a482ec9378365c8f7393c94e2885315eb4671098b79535e790fe53e29fef2b3766697ac32b4f473f468a008e72389fc03880d780cb07fcfaabe3f1a84b27db59a4a153d882d2b2103596555ed9494c6ac893c49723833ec8926c1039586a7afcf4a0d9c731e985d99589c8bb838e8aaf745533ed9e8ae3a1cd074a51a20da8aba18d1dbebbc862ded42435e92476930d069896cff30eb414f727b89e001afa2fb8dc3436d75a4a6f26572504b192232ecb9f0c02411e52596bc5e90457e745939ffedbd12863ce71a02af117d417adb3d15cc54dcb1fce467500c6b8fb86b12b56da9c382857deecc40a9", "93e04874b5837c261daf1a27b783ec4865d3bb728eb161daedb8446ab38f078ea8662e4d2e9d00a39527dcde517ac3dbf9d27e3c79fa881abb48b70dbc28ddf4af81aeed2a298600510848edbdc42e88954870d5d601cdf290181b539105b9f61386cb07846bc8e319dfab8e109766a28c1e0bbf913202cecd1b4817a2282fc29ed44d9b04049de55acf5499e5f565d48b8f1972c043847796230dc68f3257c08529148c8e0c327b25b459877cded98ff78e81fa692e14f8fda1fe524ff150181f736ed3a88ec789dc15954a02639a8a20ca38d899bfd1c573b041ee7bf22b9675bda8c4b058a05a493303b11f3581c19d2da9966a71066ec17dccd348207eb314f6cfc9d06a6214c6721097a52e2776667c6be9c8862b173db0e804b12caae9d9fa09f3f48caf4bf756a278950a254ec4147677aaca214296081a2f624a9278946e689dd914029092e7fa8fbc8a04467d60edff5d97cb6509a0c72ced77aca871308e7de2beb1520a3417d7213a9abd47358c4f329f0f64419210a99db2de6e6d8921b0f4f99fd645fae0d629ce2211905f25f40d120b63279375b543c31e3b557e57a7a87c6179ebd34f6dbb920ec5e05d6a77ecdf36b457bab4566c408fb57dfcdddaa42c5134af3e978dbfd0dfb0ca4ffaf1650abee1625f7f4bf825060100645b54c0041fbfbdeff7b93804e9cc0ccd6f27be40016c32d42fe366faaa8687c2d192619f565b0c70ea6a3f79d53a5241e69c3ca687a112fb16c25cc08317dba423970c32dfb4bd6922e336abf2fde2c3aa5db293ef2747876c8bd86ea187cb601af7", "b325ebe57a2c40a8b211cfdf72a1a244f15342859888a364523efd2ac66a1ad6", "63f7125df4836fd2816b024ee70efe09fb9a7b3863c6eacdf95e03894950692c5bfe469c33e447ba456b8bfe9b385b3931b4baeb8f7023fe8e33354ffff1bd1a", "55b8907c6d454b83634f1b9a1aa3c3c98adc77d96c2f6249ec66dbae4d0cc940d726bcd1ec91189fd3049a33f2ea7d8b74aac17cda3883802db5969d8d2f3225919ce38826415cc6b338944b4899548b"],
["fd9e9a1f381cbe75cd8d6ae12fca872e9400f00272b029652e656c8f3c4bf037eeef96421b2fab2fb3ad1e0ad8502d74e6f08f0dd518f8fa822a65be2740c021", "e73081ef8d62cb780ab6883a50a0d470190dfba10a857f82842d3825b3d6da05", "556e5e1bf51bc6a61158f7", "b4cac56f062bfb2e2715eaf9c8fcdbc20c86793f2357ddd04aad39f94ad7c784", 9072946746592546880, "aeab016b6bc1ec144b4e553acfd670f77e755fc88e0677e31ba459b44e307768", "ff958fe3789d41c2b1ff434cb30e15914f01bc6bc2307b488d2556d7b7380ea4ffd712f6b02fe806b94569cd4059f396bf29b99d0a40e5e1711ca944f72d436a102fca4b97693da0b086fe9d2e7162470d02e0f05d4bec9512bfb3f38327296efaa74328b118c27402c70c3a90b49ad4bbc68e37c0aa7d9b3fe17799d73b841e751713a02943905aae0803fd69442eb7681ec2a05600054e92eed555028f21b6a155268a2dd6640a69301a52a38d4d9f9f957ae35af7167118141ce4c9be0a6a492fe79f1581a155fa3a2b9dafd82e650b386ad3a08cb6b83131ac300b0846354a7eef9c410e4b62c47c5426907dfc6685c5c99b7141ac626ab4761fd3f41e728e1a28f89db89ffdeca364dd2f0f0739f0534556483199c71f189341ac9b78a269164206a0ea1ce73bfb2a942e7370b247c046f8e75ef8e3f8bd821cf577491864e20e6d08fd2e32b555c92c661f19588b72a89599710a88061253ca285b6304b37da2b5294f5cb354a894322848ccbdc7c2545b7da568afac87ffa005c312241c2d57f4b45d6419f0d2e2c5af33ae243785b325cdab95404fc7aed70525cddb41872cfcc214b13232edc78609753dbff930eb0dc156612b9cb434bc4b693392deb87c530435312edcedc6a961133338d786c4a3e103f60110a16b1337129704bf4754ff6ba9fbe65951e610620f71cda8fc877625f2c5bb04cbe1228b1e886f", "1549707e1ed2b2eb6615650bec45a21764104a23eaf6ba496cb9b8e8257ad8b3", "c1e1595b8de7559766e5a6725f5be5742f43bf40623b7149cae2675c4db2c731", "59b6f3d403223d6ce43dedaee235fca95cc8b249941ccdb66f3f611cc5e9f90f", "10874a74227ac7995edddd734d0e00dcc9f48a01dd5c4cb122c061e0bdc9ce14", "d29e0d001ee71e0599086504d862c7f52b0860770d8a4b42a86811ac3169858c", "11a0ac799a29b0ed195ed87b138322263bbb9c31008c2959af2fc636687ed9b0", "4bbf80e7a1703ac14ad7b5448a2e8e79493049d19a6a513167d55bdd586ac0d9", "02556e5e1bf51bc6a61158f74050afd8fe94e97daeab016b6bc1ec144b4e553acfd670f77e755fc88e0677e31ba459b44e307768ff958fe3789d41c2b1ff434cb30e15914f01bc6bc2307b488d2556d7b7380ea4ffd712f6b02fe806b94569cd4059f396bf29b99d0a40e5e1711ca944f72d436a102fca4b97693da0b086fe9d2e7162470d02e0f05d4bec9512bfb3f38327296efaa74328b118c27402c70c3a90b49ad4bbc68e37c0aa7d9b3fe17799d73b841e751713a02943905aae0803fd69442eb7681ec2a05600054e92eed555028f21b6a155268a2dd6640a69301a52a38d4d9f9f957ae35af7167118141ce4c9be0a6a492fe79f1581a155fa3a2b9dafd82e650b386ad3a08cb6b83131ac300b0846354a7eef9c410e4b62c47c5426907dfc6685c5c99b7141ac626ab4761fd3f41e728e1a28f89db89ffdeca364dd2f0f0739f0534556483199c71f189341ac9b78a269164206a0ea1ce73bfb2a942e7370b247c046f8e75ef8e3f8bd821cf577491864e20e6d08fd2e32b555c92c661f19588b72a89599710a88061253ca285b6304b37da2b5294f5cb354a894322848ccbdc7c2545b7da568afac87ffa005c312241c2d57f4b45d6419f0d2e2c5af33ae243785b325cdab95404fc7aed70525cddb41872cfcc214b13232edc78609753dbff930eb0dc156612b9cb434bc4b693392deb87c530435312edcedc6a961133338d786c4a3e103f60110a16b1337129704bf4754ff6ba9fbe65951e610620f71cda8fc877625f2c5bb04cbe1228b1e886f", "1b423480bf3767f5ebfc40b8c89cc534f165c35d19c8da6c3210e952cad823a7846021c3de4a8693b71e287f4686ac0addced94eba810a998b823a4ad241aa9f4a3ae4825de995dd5873566244bbd875d01bf328e822cafdb83ed7753a8885d7aef2455a152e23dfa2d699b35c33d361072ae5c512434d346f6c56fb5f11b0b647cbcafe02d88455a630a350862b3cd1513b6d6e4117c75ec4b12fd75a90f82dcea1c771fdda24ecf0a3e5b2e8a224236ef09a93ab59e59bdfb872860cc2d91134caf2139848e39aa64ba2e6d7252054f37ad55c2ce5f81b33ccb68a947371243a77e84367d9d35b11681410ea798b0387b8f10b1f89c68ad1cca9a3e032f3499879c89ae6382f389722011f4925143ea85073e4ff0ccf6d779bc3bf4c1b95fc7cf7f991a2162ab94541f3998ef6bc3fe80254aba41f15231503451b15e10852f85bd2d115935314cd80c123be0b530faad6b5074968221da04b546d962163299d52cef41e296da59cb076dbe899704b61730c19bd221ad2bd2981ea951be02c9f5bdf92d9870746b2a58c3d18a7d3e5e2c63ac2615837be1c6fe003656c1b3d71505f5e2188104e98911b6a5e3f5282fac0c8fa1ba36ffc07dc7a409df2eba8c75f70bd59a6f0651dc1b1b596de6acec778e2e32f1ed46df7a9aef51dfe5aa52436ea07f505d339f203458661c83a9a5a27aa48b5ec47f8d60d2a41001fce30ff753a8a8ce492efcd1f753b7f4ad736626447d1b6f07a617d4bfcdb48afef082dae1d76544e8b63adcbb60e1496693260c720e6721e0020efa3f8d88d15b5aa48a1b22c", "abd0c24697e45b8bc4830fb146532ea0ac845581ca3539d34124735409d015ac", "b4cac56f062bfb2e2715eaf9c8fcdbc20c86793f2357ddd04aad39f94ad7c78410874a74227ac7995edddd734d0e00dcc9f48a01dd5c4cb122c061e0bdc9ce14", "eadf7eeb102db1885854c29eb7b05c7c96bbb890002c4ed114ed62f5f9ccb4416b5eddd9adb55ce9c7a0d8442bbc8afa5c77b990ad6d46124dde70494872b2208a7c5802dfe9bd1ca19bef4b37c613b2"],
["91ee205448c98b69a33ebf2935095d79c253029e5e5dc02df58a1003d1d85c27f2def5b110fd43d715e8d59ec4ad0f41020ec660cd9733e779b51a7ac2d5a631", "182f207b3175961f6411a493bffd048e7d0d87d82fe6f990a2b0a25f5aa0111a", "08ab2ee99d4d9b983ddd22", "82fef643dbf42dca5156fb51d4c4ee008a72f0dbc3f31efab075f2751537140d", 14400879385556610631, "d507cdfe6fbdaa86163e9cf5de3100fbca7e8da047b090db9f37952fbfee76af", "ff61668190bd52ed490e677b515d014384af07219c7c0ee7fc7bfc79f325644e4df4c0d7db08e9f0bd024943c705abff8994bfa605cfbc7ed746a7d3f7c37d9e8bdc433b7d79e08a12f738a8f0dbddfef2f2657ef3e47d1b0fd11e6a13311fb799c79c641d9da43b33e7ad012e28255398789262275f1175be8462c01491c4d842406d0ec4282c9526174a09878fe8fdde33a29604e5e5e7b2a025d6650b97dbb52befb59b1d30a57433b0a351474444099daa371046613260cf3354cfcdada663ece824ffd7e44393886a86165ddddf2b4c41773554c86995269408b11e6737a4c447586f69173446d8e48bf84cbc000a807899973eb93c5e819aad669413f8387933ad1584aa35e43f4ecd1e2d0407c0b1b89920ffdfdb9bea51ac95b557af71b89f903f5d9848f14fcbeb1837570f544d6359eb23faf38a0822da36ce426c4a2fbeffeb0a8a2e297a9d19ba15024590e3329d9fa9261f9938a4032dd34606c9cf9f3dd33e576f05cd1dd6811c6298757d77d9e810abdb226afcaa4346a6560f8932b3181fd355d5d391976183f8d99388839632d6354f666d09d3e5629ea19737388613d38a34fd0f6e50ee5a0cc9677177f50028c141378187bd2819403fc534f80076e9380cb4964d3b6b45819d3b8e9caf54f051852d671bf8c1ffde2d1510756418cb4810936aa57e6965d6fb656a760b7f19adf96c173488552193b1", "c394685d9295597e21557f219f3c9d5e640719bca5c8ed49999734e6c5b3733e", "c88d008484c5d79820ab68c67d083672b07f727d44d0cd14738800f825b9ff16", "0b7459616fc69395e64436cf4ae9441d374b29049e4c86223a0383f4e0246905", "c49242cee7e0868f2a75a1c412bc44d54c9709f659ded3269572929359e04c3a", "0e04d8525dd68f7ae868ca811e8833a7f47d7aadd37603ace607ee6c866bce23", "4a7a54ac00419598b0760153e26accd215052416651713eea18919f3e262d3b6", "30626d92eb620fd4a928b43fd550697471767de4496cfdadb1da18fc0cdd5aa6", "0208ab2ee99d4d9b983ddd2247ee58858033dac7d507cdfe6fbdaa86163e9cf5de3100fbca7e8da047b090db9f37952fbfee76afff61668190bd52ed490e677b515d014384af07219c7c0ee7fc7bfc79f325644e4df4c0d7db08e9f0bd024943c705abff8994bfa605cfbc7ed746a7d3f7c37d9e8bdc433b7d79e08a12f738a8f0dbddfef2f2657ef3e47d1b0fd11e6a13311fb799c79c641d9da43b33e7ad012e28255398789262275f1175be8462c01491c4d842406d0ec4282c9526174a09878fe8fdde33a29604e5e5e7b2a025d6650b97dbb52befb59b1d30a57433b0a351474444099daa371046613260cf3354cfcdada663ece824ffd7e44393886a86165ddddf2b4c41773554c86995269408b11e6737a4c447586f69173446d8e48bf84cbc000a807899973eb93c5e819aad669413f8387933ad1584aa35e43f4ecd1e2d0407c0b1b89920ffdfdb9bea51ac95b557af71b89f903f5d9848f14fcbeb1837570f544d6359eb23faf38a0822da36ce426c4a2fbeffeb0a8a2e297a9d19ba15024590e3329d9fa9261f9938a4032dd34606c9cf9f3dd33e576f05cd1dd6811c6298757d77d9e810abdb226afcaa4346a6560f8932b3181fd355d5d391976183f8d99388839632d6354f666d09d3e5629ea19737388613d38a34fd0f6e50ee5a0cc9677177f50028c141378187bd2819403fc534f80076e9380cb4964d3b6b45819d3b8e9caf54f051852d671bf8c1ffde2d1510756418cb4810936aa57e6965d6fb656a760b7f19adf96c173488552193b1", "81562dbef7bb353a62e7c81ebe68156cb75c5c7e3d96bbcd7daff50cb0957d33dd99779f7d3d72b18deb7a697510e0135b8df483a4d71d1ab108096e760891d53107f03dea4ae8e4d3febd9877f8570aa309d097d423bb763fb3e7e9be3c8fa034c01d664f47a0e7133ca11a48cd0eea4635fa77250a17bdf7b732c8984651574fd4f99f7aa0db28c2973152bf426ee9a4d841a91d5d335718eecbc9c8b2a2001570fe8b779143df229598a5be2548cf35842518cc1dbc78cc2f0fc8ea357ce6c17eb97c6138d53e6c8e00f07f800125182b25a5e875c5377209527222371f72bfbd462844ab06f3b3a1eba34423b69abf5de664ba83cd43b6a8e9d5b7c52adb8615041b90d908831a6ff92db48a14ac4dfa67d02c72e0c863157d98f8f54537929743c969bc91c2c1375204983c9999975ffa5ee5fe1f697199405f0966e31f34e1523844381844982b2c3b49a209ffa3cee979a85b19b850f41dccc463e22e24a3049d37b1fb370debddf4de0546245e4f02a98498af532e27acae5c7ed143e6e9ccfa743516021657acb25e4447845c5f9c5964607c4a78721d981a7ff2fdf6c033628bffd6f0b8de0cd635ec22f8b50ed637fe4e00f9d3c3d4f1810b09b75c96e2fcf11185317edfa39d1925ded814dde0ef00a3fb47af5d812094af13d01c98569ff7735787fa9bd01fa06928275fdd1038965fb06fb35edb7380dd3c42419e0c0ede4c486a9db4953886aec6ad307028eb26a37ef471567ad4bd4eaab7a82cb0d6b5f05e894e5325821d92bed2b86fb24337d579288f6df734771d9ef8358ba91a", "b636c39a6bad2263b2441ed5bbdb013588fb462701e6f876646c8c17fa2efde8", "82fef643dbf42dca5156fb51d4c4ee008a72f0dbc3f31efab075f2751537140dc49242cee7e0868f2a75a1c412bc44d54c9709f659ded3269572929359e04c3a", "46ba14f83ff5ab760f1420ebded986fd937827bc05692ecadb652ebbc8f6d9b52ec39787d8ebdd506ca1a85dc3d5ba4c5b415261b0753ac10e01864532a3572c68afe40ac3c0957b7afc23fd5e0517aa"],
Expand Down
Loading

0 comments on commit a482147

Please sign in to comment.