Protocol test vectors
Source mirror
Mirrored from vendor/longfellow-zk/docs/specs/testvectors.md. These vectors are reviewed compatibility inputs; implementations must not regenerate them merely to accommodate changed behavior.
This section contains test vectors. Each test vector in specifies the configuration information and inputs. All values are encoded in hexadecimal strings.
Test Vectors for Merkle Tree
Vector 1
- Leaves: 4bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459a dbc1b4c900ffe48d575b5da5c638040125f65db0fe3e24494b76ea986457d986 084fed08b978af4d7d196a7446a86b58009e636b611db16211b65a9aadff29c5 e52d9c508c502347344d8c07ad91cbd6068afc75ff6292f062a09ca381c89e71 e77b9a9ae9e30b0dbdb6f510a264ef9de781501d7b6b92ae89eb059c5ab743db
- Root: f22f4501ffd3bdffcecc9e4cd6828a4479aeedd6aa484eb7c1f808ccf71c6e76
- Proof for leaves (0,1): 084fed08b978af4d7d196a7446a86b58009e636b611db16211b65a9aadff29c5 f03808f5b8088c61286d505e8e93aa378991d9889ae2d874433ca06acabcd493
- Proof for leaves (1,3): e77b9a9ae9e30b0dbdb6f510a264ef9de781501d7b6b92ae89eb059c5ab743db 084fed08b978af4d7d196a7446a86b58009e636b611db16211b65a9aadff29c5 4bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459a
Test Vectors for Fiat-Shamir
Let p=115792089237316195423570985008687907853269984665640564039457584007908834671663 and Fp be the 4-word field defined by p.
Vector 1: WriteBytes
- Description: Using
Fp, the test steps are to (a) initialize the transcript object with the 4-byte stringtest; (b) write an array of bytes of size 100 that contains the integers 0, 1, 2, ..., 99; (c) generate 16 field elements:- 0x8b297f0bffd583c6c6b6796385d5fd20a08665733b833970ebdd1054bbbc1b14
- 0x0667c08ad7f38efec5f30dc8aa4f20d749cdcf96d63a770f9810ac5c0ca8dcb1
- 0xc8037fc12d4da00b5dc7597e3042f33f72a06f970cb71fb6b103ebb5419d8a6b
- 0xfbbcfa1eac48728fbfdacc1c21e2f78119457e0846337e46140e38e62856c4c5
- 0x5358ae603691cc759faeb572fb6642654ea1c3dbc8f81d00276dd8c4df95aa58
- 0x5266158c3c895dede5a23b6ce85a9f564b8059ebfcd1741f54497ec58189873e
- 0x3ecea4b2343c007fc32f2aff40dc7320945f101ecae5d52494db21ad326e9739
- 0x6462dd575e6b874118607212feec7ce5417ae3bf0f2e86604596f35d48bbaea2
- 0x6d56c703c369edea3595db6b958241580ae9b4a76fead961413ed9e9e5852dcd
- 0x6d31073cee650212a71b7b13e9f951e00ef3b14a008a79dd95047b26a4a83d06
- 0x1b9e2a6666da63c43e52227d91a8a7f0bd5311f63c2e3a18839133375639e6cb
- 0x332ea49dd23dd4745631ecbb15696192b1fa127256baf7a0483fd27db6f09a48
- 0x43e735927ccbdc4d5ce912675d638d6d3dc8eef3def34504304e938846f157d6
- 0xdc4a8868ae75e733a7257a8589230392a98d78594836dfccd01304742b5b3ad5
- 0x976353931711c634f2691e507b119fd7f6e653d419a2620676122db08db18765
- 0x332729ab436dca654866a9382deaee0add6fb7e90a80261f1488e56598e8bc99
Vector 2: WriteFieldElement
Starting from the state at the end of Vector 1, (a) write the field element '7' in Fp; (b) generate 16 field elements
0x609db3e9a8f548df038519fa46cef23eb8c6553d3c1f698604e60a51613a738e
0x1cb69cb31999eb88e83c7586aac53f5e3286b084b0cf9e43619b48df01e0a310
0x3bf36e3ddc690a1b12b417628c115959b373d056c90c42dc2417baf46f538868
0xe336594f29dcda52e48896517b5cdb2d062ffd861ab02db5f8ca197aacc635f6
0xc1f396a8bad16bb0f57da6d380402a25b571bd4691226d11449a741440e325c8
0x5195336ec73751de066e3a8939b40c3c5555f1a513486dfc50dcf4c2d47e6ff2
0x8dcf872f3ded2b7ed1d1ee9a2b125bedc6eacd3c09b3a4a5286d8fc2fc3a6634
0x950dd2ef7be25eab686a6688497962ee4ad521da12b9ff3d8e56ad9435885b12
0xe14389d1d8448678cac33fdbc9aab20dba019e75149d170dd2f353891cd4b84f
0xe84906c09cd6423865baf64e48027cc598d52bdb90b17524c87ea892e53b5200
0x493cea587f1ec5622c04221cd6e5a41c26c1c1c24c0375f7aaa367d9678d83bc
0x5aca0010aced30bcb3b84a7f10ea39c4269ab7c92fcb6cff52958d8921ef2cc5
0x4498fa8340f41467c0fa813bd0ca83ef6e1c4b85c7b1168a94339fd9e8296139
0xf9a95b738a8e775421b1baa503abbeed2d283b236ebba25e1954b3c993d30a3d
0x98178711d03a0b1204ebb56b37bd3a2724dfb08e4dc925609391768b126d21f2
0x79251f49534f5c4b10b798b2dbf6e80a3b07593f616ce6a9617ccc61040aac78
Vector 3: WriteFieldElementArray
Starting from the state at the end of Vector 2, (a) write the 2-long array of field elements
[8, 9]; (b) generate 16 field elements:- 0xae1a921288590205fc24543303ff527476359b8db4a983b2886a133b02f3217e
- 0x8c5d52a04b295f9fdb45ab66100fa00ca32c9634aa87cbbdb2bc3e1912459feb
- 0x12f82963b5b242156f6e9eb756eddee7652b60c7d6394403f7bd995e0b9bcd9c
- 0x880aa50b049b3939055deb7933749d338bb3fb5f64a9adf95019e6cfc232995c
- 0xf8558f693f0fa6df20a37147a898fb4c678831f566d80113bbe2cdcd18285da2
- 0xbbcc8d9b46f88bc8c6cec0ad2d5e49508b7db91d548548eddc61800de1329e1c
- 0x479a17244398caae8155a73438a22583df7de10a8a2e12ad53ddd3bc7305fac9
- 0x9ba1917f1227932250288a843f64b4e7b7f47a5fbc16c111f6e1f76235ccf38c
- 0xd1582138045d1636fb7f677c9e8a4a4143ce2b2bb54fb4f49fb0ad1fee5df6b4
- 0x5331e5b8508f79c017a8dfbbb805f3f8c5e3e4bc417e44849b9212439646331
- 0xb6b95862194ca52dcaa9ee651b7fc5b708f43feae108bb9a7f95213f4d069048
- 0xe86b1602f0a54c4e237867ebaf05e7581464fd238e50f6ed9c3cea63909c8e60
- 0xb7280439f3b21b113ff29cefe39292d5e2d137709c3d3cec36473a0f97a24e62
- 0xbeaa5e08257d232506fb3e46c6daa29e0859c34c7d0cd673bc6706ee261ae059
- 0x691ead55728cd087a1952b22b6628ba4e26fbefc8debeec5e6fbc3a16f637be
- 0x47dc31f6d8bc9c44290781176df3e4b95ac8793a4a42fa5859c564d92d6d5af5
Vector 4: Nat
- Starting from the state at the end of Vector 3, (a) write the 4-byte string "nats"; (b) call
generate_natwith the following list of parameters:[1, 1, 1, 2, 2, 2, 7, 7,7, 7, 32, 32, 32, 32, 256, 256, 256, 256, 1000, 10000, 60000, 65535, 100000, 100000]. The result of each call should correspond to the list of results:[0, 0, 0, 0, 0, 0, 3, 0, 4, 5, 10, 30, 27, 22, 100, 189, 3, 92, 999, 3105, 40886, 51590, 56367, 10678]
Vector 5: Choice
- Starting from the state at the end of Vector 4, (a) write the 6-byte string "choice"; (b) perform the following calls to
generate_natgenerate_nats_wo_replacementm=31, k=20:[10, 29, 30, 11, 4, 15, 16, 28, 19, 21, 25, 18, 17, 3, 5, 23, 24, 22, 6, 1]m=32, k=20:[3, 17, 18, 8, 30, 7, 14, 19, 25, 23, 12, 4, 31, 16, 0, 6, 20, 27, 11, 10]m=63, k=20:[9, 56, 61, 45, 35, 53, 51, 3, 39, 32, 31, 6, 59, 58, 54, 22, 27, 62, 55, 19]m=64, k=20:[12, 52, 39, 17, 51, 38, 58, 2, 28, 27, 46, 63, 61, 50, 40, 55, 47, 13, 56, 32]m=1000, k=20:[157, 668, 572, 138, 913, 994, 797, 249, 440, 723, 489, 241, 383, 108, 710, 341, 406, 585, 42, 692]m=65535, k=20:[40745, 48408, 17108, 44500, 53993, 10008, 24910, 52200, 61265, 54989, 41237, 25958, 28697, 61187, 34729, 3525, 9005, 38627, 9724, 12169]
Test Vectors for Circuit
Vector 1
- Description: Circuit C(n, m, s) = 0 if and only if n is the m-th s-gonal number in F_p128. This circuit verifies that 2n = (s-2)m^2 - (s - 4)*m.
- Field: 2^128^ - 2^108^ + 1 (Field ID 6)
- Depth: 3 Quads: 11 Terms: 11
- Serialization: 01060000010000010000020000040000020000040000ffffffffffffffffffffffffffefffff00000000000000000000000000f0ffff01000000000000000000000000000000fdffffffffffffffffffffffffefffff030000060000030000000000020000000000000000000000080000040000010000000000030000020000020000020000040000080000000000000000000000020000060000000000000000000000040000000000000000030000090000020000000000020000020000020000000000020000020000020000000000020000040000000000000000020000030000030000040000020000
Test Vectors for Sumcheck
Vector 1
- Description: Circuit C(n, m, s) = 0 if and only if n is the m-th s-gonal number in F_p128. This circuit verifies that 2n = (s-2)m^2 - (s - 4)*m.
- Field: 2^128^ - 2^108^ + 1 (Field id 6)
- Fiat-Shamir initialized with
- Serialization: 90e734c42b5f14ee432a0ed95ba2ada05c3f9ecc9b026ded61f00bf57434f93c6f70e9c8b6e3de005ba8b4da93b5fa35fc3efae1e6068399c7f7d009ab5a2711084c97cd5a6e28dd30c598907b328d81915e487c34dbf80aa5da14f0621011a33d838a7b0d9a03533c63c6606f5360f88cf97c728630afdcb9755894a6f5c9068e1fc29f97efc125ba580de64089c6e72433de2a3267b90daeaf418ac8a3df3bbddc6cb141c764c8262346baac2e28033778b1a71f153ba571e80ab29951f9440ba93fede225a35accf6e0114d5240ae92df02d2870e5258ebba416f3d815e1554b05627998fc9d3bf354b89394b27b39f69c6538dbc968a779369e47f214252e0955624e9f4d6dc2a95cf41c57703b8749b959315458d4076f0daf5fdbde23e16c10394ac884ab9cad0782e8f472cb4edb69682d17465363691aafc31b83cd764fb909b50e2fe907fd2137566ddb8c47cc13974957e7f76180860571035f7a4d2658a82e1be8fe155353bc10feae9541365926f0646b4a5351907cbd5d9dbb4
Test Vectors for Ligero
Vector 1
- Description: Circuit C(n, m, s) = 0 if and only if n is the m-th s-gonal number in F_p128. This circuit verifies that 2n = (s-2)m^2 - (s - 4)*m.
- Field: 2^128^ - 2^108^ + 1 (Field id 6)
- Witness vector: [1, 45, 5, 6]
- Pad elements: [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4]
- Parameters:
- NREQ: 6
- RATE: 4
- WR: 20
- QR: 2
- NROW: 7
- NQ: 1
- BLOCK: 51
- Commitment: 738d2ffb3a8bf24e7aedb94be59041fb2dc13da30fe6b05ebe5126ef8fc36ec2
- Proof size: 3180 bytes
- Proof: fa8d88a73b3a0f9c067658c45bb394a602000000000000000000000000000000fa8d8...2cd5f61cd2b2eb84c79e1707cbad0048fcd820c716584f31991cf1628fb041