diff --git a/zebra-chain/proptest-regressions/transaction/tests.txt b/zebra-chain/proptest-regressions/transaction/tests.txt index 8071a9658..efcbead06 100644 --- a/zebra-chain/proptest-regressions/transaction/tests.txt +++ b/zebra-chain/proptest-regressions/transaction/tests.txt @@ -5,3 +5,4 @@ # It is recommended to check this file in to source control so that # everyone who runs the test benefits from these saved cases. cc beda5b83a398a81e043cd77b09c68f22809cc17e724912f4109220be19b932c0 # shrinks to data = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, 151, 3, 140, 0, 191, 7, 209, 203, 112, 214, 40, 234, 110, 241, 117, 225, 170, 207, 231, 125, 144, 48, 235, 104, 209, 250, 102, 235, 6, 78, 48, 77, 27, 124, 51, 130, 214, 205, 0, 2, 111, 238, 242, 162, 231, 240, 100, 64, 34, 222, 0, 93, 95, 38, 48, 16, 48, 108, 115, 234, 104, 113, 234, 87, 15, 70, 248, 248, 252, 227, 78, 49, 25, 92, 101, 10, 230, 151, 114, 114, 239, 109, 146, 110, 178, 25, 226, 167, 101, 92, 176, 2, 240, 176, 36, 209, 207, 183, 20, 2, 99, 241, 169, 80, 120, 246, 174, 204, 223, 199, 245, 14, 23, 231, 247, 26, 115, 136, 221, 245, 144, 49, 96, 64, 72, 243, 129, 160, 85, 37, 70, 208, 191, 89, 30, 172, 50, 207, 40, 43, 100, 19, 97, 115, 224, 39, 212, 76, 223, 140, 245, 190, 63, 216, 6, 157, 140, 31, 89, 157, 220, 168, 167, 219, 57, 234, 24, 236, 99, 205, 151, 140, 51, 118, 172, 10, 101, 204, 98, 137, 136, 168, 220, 106, 42, 29, 173, 155, 86, 89, 5, 5, 64, 24, 167, 138, 92, 191, 90, 89, 244, 158, 11, 186, 32, 66, 216, 217, 96, 66, 68, 24, 69, 9, 20, 93, 179, 124, 143, 88, 254, 159, 254, 1, 93, 161, 128, 97, 125, 251, 68, 120, 186, 175, 29, 52, 38, 80, 60, 239, 19, 53, 120, 110, 252, 239, 163, 77, 210, 84, 212, 22, 36, 239, 78, 30, 171, 122, 174, 212, 80, 178, 106, 40, 96, 252, 65, 84, 158, 221, 190, 53, 169, 104, 161, 78, 121, 27, 1, 151, 98, 203, 95, 67, 189, 43, 139, 177, 23, 64, 18, 164, 116, 69, 9, 95, 48, 162, 224, 244, 223, 113, 198, 195, 10, 70, 100, 226, 130, 81, 169, 192, 182, 58, 24, 41, 97, 106, 26, 190, 203, 76, 77, 191, 110, 255, 161, 179, 199, 57, 220, 6, 225, 135, 200, 242, 109, 150, 160, 137, 56, 135, 172, 190, 14, 254, 37, 219, 132, 44, 40, 117, 73, 167, 163, 119, 133, 243, 67, 72, 249, 20, 76, 201, 72, 254, 222, 174, 137, 179, 68, 75, 62, 54, 191, 110, 114, 241, 161, 120, 64, 53, 189, 197, 222, 113, 169, 27, 237, 237, 159, 185, 179, 42, 33, 39, 168, 253, 100, 155, 196, 58, 67, 143, 49, 211, 202, 168, 232, 189, 159, 12, 8, 160, 29, 243, 24, 32, 211, 243, 94, 94, 31, 218, 6, 0, 46, 189, 219, 41, 215, 3, 121, 47, 65, 222, 113, 227, 93, 152, 210, 196, 213, 184, 211, 222, 167, 251, 49, 21, 15, 92, 75, 33, 146, 210, 29, 238, 133, 28, 116, 250, 108, 197, 18, 145, 100, 255, 117, 229, 131, 137, 237, 193, 230, 170, 2, 222, 35, 23, 151, 105, 208, 9, 146, 76, 231, 139, 71, 38, 25, 198, 137, 165, 87, 86, 14, 234, 219, 76, 71, 163, 155, 155, 220, 196, 210, 243, 86, 233, 251, 22, 254, 116, 143, 221, 214, 183, 95, 48, 41, 128, 137, 24, 168, 245, 156, 50, 10, 220, 159, 45, 133, 58, 172, 78, 146, 5, 158, 12, 248, 86, 64, 247, 133, 107, 202, 67, 191, 35, 177, 183, 252, 4, 83, 47, 137, 22, 163, 177, 41, 222, 188, 249, 88, 110, 87, 244, 158, 94, 94, 176, 45, 55, 182, 240, 193, 69, 43, 162, 160, 25, 178, 179, 251, 137, 108, 247, 253, 126, 244, 213, 47, 15, 67, 142, 111, 56, 119, 49, 145, 160, 89, 238, 118, 251, 80, 140, 126, 77, 59, 74, 245, 49, 239, 187, 218, 241, 59, 192, 49, 27, 176, 91, 146, 127, 135, 133, 146, 13, 31, 56, 127, 130, 201, 106, 28, 158, 205, 71, 11, 33, 84, 5, 153, 11, 34, 85, 54, 100, 105, 60, 1, 230, 85, 234, 10, 123, 227, 208, 208, 230, 9, 38, 79, 98, 83, 40, 48, 106, 29, 17, 74, 203, 130, 67, 103, 36, 197, 201, 97, 195, 177, 57, 11, 196, 242, 4, 214, 221, 46, 56, 208, 49, 255, 163, 179, 151, 104, 184, 177, 45, 207, 85, 9, 188, 106, 15, 90, 156, 201, 205, 49, 253, 199, 128, 103, 106, 152, 2, 120, 217, 56, 5, 31, 199, 124, 221, 51, 140, 183, 230, 240, 59, 75, 212, 243, 13, 46, 145, 144, 189, 227, 102, 135, 187, 150, 15, 9, 223, 224, 84, 220, 123, 94, 74, 45, 175, 254, 134, 251, 49, 241, 210, 42, 167, 11, 69, 1, 224, 112, 229, 3, 205, 76, 42, 178, 162, 208, 164, 144, 20, 32, 101, 118, 73, 106, 80, 12, 35, 135, 100, 223, 104, 161, 190, 75, 135, 224, 128, 105, 236, 192, 33, 74, 3, 74, 227, 65, 58, 89, 16, 136, 99, 154, 56, 42, 148, 14, 118, 181, 93, 19, 18, 86, 97, 196, 168, 4, 81, 15, 11, 136, 14, 161, 43, 154, 188, 218, 85, 0, 29, 139, 14, 234, 209, 164, 77, 134, 105, 15, 6, 176, 179, 74, 130, 169, 69, 250, 189, 144, 150, 54, 138, 202, 236, 29, 101, 50, 255, 30, 36, 23, 42, 114, 229, 39, 107, 203, 123, 251, 68, 144, 57, 211, 202, 0, 67, 87, 130, 139, 36, 18, 101, 22, 60, 183, 10, 91, 153, 153, 72, 169, 219, 35, 155, 134, 210, 241, 87, 218, 83, 190, 129, 238, 136, 80, 193, 221, 60, 161, 36, 4, 212, 124, 31, 250, 248, 153, 220, 16, 13, 236, 113, 146, 32, 114, 5, 22, 118, 168, 116, 171, 224, 76, 9, 241, 134, 51, 224, 213, 244, 74, 27, 130, 28, 201, 74, 225, 33, 174, 168, 220, 117, 239, 67, 37, 102, 87, 245, 94, 219, 164, 121, 160, 51, 148, 180, 108, 244, 28, 133, 70, 120, 97, 87, 0, 197, 92, 29, 186, 106, 251, 161, 3, 55, 17, 173, 117, 38, 122, 8, 44, 161, 3, 33, 143, 56, 27, 7, 51, 157, 57, 3, 233, 86, 173, 66, 116, 77, 248, 211, 248, 53, 113, 22, 7, 129, 242, 132, 93, 54, 22, 85, 39, 228, 145, 251, 252, 194, 121, 224, 235, 177, 211, 249, 198, 34, 164, 221, 247, 133, 52, 88, 48, 153, 169, 198, 165, 72, 31, 15, 19, 2, 254, 24, 252, 184, 245, 213, 47, 235, 68, 82, 174, 131, 37, 217, 108, 130, 234, 22, 175, 8, 249, 208, 9, 190, 241, 200, 238, 234, 120, 36, 10, 28, 22, 35, 236, 221, 82, 234, 155, 64, 229, 255, 133, 20, 56, 34, 196, 207, 128, 4, 149, 131, 38, 218, 167, 18, 169, 138, 76, 131, 56, 183, 180, 103, 1, 174, 238, 92, 220, 76, 172, 29, 179, 98, 103, 246, 122, 107, 73, 32, 139, 209, 165, 244, 175, 55, 45, 86, 92, 67, 151, 27, 73, 5, 217, 19, 94, 230, 241, 73, 102, 95, 128, 103, 72, 101, 135, 132, 52, 66, 58, 38, 18, 214, 66, 38, 191, 123, 28, 147, 193, 120, 37, 70, 221, 36, 76, 142, 20, 73, 90, 236, 150, 109, 100, 27, 48, 18, 3, 4, 75, 133, 108, 154, 241, 194, 212, 74, 169, 28, 137, 253, 15, 44, 126, 165, 245, 41, 111, 230, 248, 177, 35, 112, 245, 218, 155, 150, 250, 49, 174, 132, 27, 186, 165, 75, 147, 245, 131, 194, 199, 114, 78, 149, 246, 253, 42, 61, 135, 173, 222, 25, 71, 195, 62, 140, 61, 136, 131, 237, 16, 68, 0, 13, 62, 49, 45, 255, 213, 188, 62, 99, 2, 64, 163, 208, 142, 33, 111, 129, 105, 131, 84, 68, 146, 125, 60, 246, 150, 39, 98, 210, 138, 255, 232, 79, 90, 28, 21, 164, 32, 184, 13, 18, 43, 95, 147, 162, 121, 150, 89, 193, 100, 31, 166, 249, 98, 47, 137, 91, 234, 175, 142, 254, 152, 225, 173, 243, 88, 136, 191, 217, 151, 0, 177, 255, 252, 242, 48, 216, 175, 117, 177, 82, 93, 173, 185, 164, 153, 145, 144, 78, 39, 127, 137, 81, 193, 108, 238, 57, 27, 70, 53, 10, 185, 29, 103, 80, 0, 223, 111, 242, 240, 19, 176, 116, 239, 178, 244, 49, 160, 92, 49, 46, 195, 199, 232, 238, 192, 134, 62, 70, 88, 67, 219, 234, 232, 117, 186, 0, 6, 113, 76, 238, 232, 6, 212, 236, 103, 63, 55, 127, 128, 245, 81, 78, 106, 109, 225, 211, 209, 150, 161, 242, 216, 131, 14, 76, 194, 113, 104, 205, 164, 40, 85, 80, 111, 95, 121, 135, 0, 60, 246, 88, 104, 90, 122, 250, 6, 212, 47, 150, 9, 251, 148, 17, 51, 209, 167, 127, 253, 82, 91, 97, 145, 37, 198, 210, 199, 152, 188, 234, 200, 118, 81, 230, 86, 186, 186, 220, 142, 137, 194, 94, 243, 207, 50, 253, 180, 10, 112, 159, 194, 120, 52, 206, 104, 77, 173, 132, 172, 98, 45, 81, 195, 65, 2, 241, 154, 204, 227, 147, 195, 148, 245, 206, 75, 114, 155, 248, 179, 47, 50, 70, 214, 129, 54, 181, 40, 140, 21, 220, 142, 248, 224, 128, 26, 248, 242, 192, 101, 137, 252, 116, 216, 29, 54, 108, 75, 247, 192, 247, 112, 72, 233, 106, 213, 223, 110, 171, 33, 86, 113, 232, 65, 174, 208, 195, 48, 56, 243, 48, 240, 126, 42, 231, 49, 35, 235, 202, 5, 197, 117, 71, 99, 156, 201, 227, 73, 19, 189, 157, 175, 17, 86, 251, 203, 236, 244, 99, 157, 145, 207, 89, 190, 136, 164, 60, 224, 223, 176, 181, 100, 177, 224, 24, 128, 138, 29, 171, 133, 166, 59, 153, 127, 49, 145, 167, 79, 230, 172, 173, 229, 75, 37, 165, 170, 39, 190, 26, 255, 77, 160, 4, 97, 55, 179, 79, 76, 68, 65, 46, 135, 89, 242, 36, 94, 242, 184, 181, 255, 133, 37, 245, 19, 109, 133, 126, 249, 255, 166, 168, 170, 80, 242, 167, 230, 211, 4, 173, 12, 103, 213, 117, 115, 215, 37, 103, 106, 187, 211, 111, 182, 20, 52, 224, 215, 203, 51, 28, 229, 47, 12, 240, 90, 135, 134, 190, 106, 186, 155, 12, 24, 165, 41, 235, 155, 108, 191, 160, 213, 190, 32, 38, 154, 146, 161, 0, 53, 60, 139, 161, 77, 240, 126, 66, 47, 31, 108, 115, 142, 49, 81, 140, 130, 93, 212, 216, 103, 119, 192, 21, 230, 114, 43, 31, 0, 250, 84, 32, 64, 174, 38, 153, 99, 38, 249, 10, 65, 158, 109, 108, 44, 155, 189, 98, 150, 152, 3, 97, 74, 177, 226, 123, 206, 246, 89, 93, 19, 49, 254, 5, 58, 204, 114, 187, 6, 37, 96, 218, 142, 106, 187, 83, 170, 4, 61, 110, 108, 232, 52, 126, 187, 92, 159, 112, 169, 217, 119, 169, 255, 199, 194, 245, 134, 130, 215, 153, 253, 49, 121] +cc 970b01026847bf606d6588be7c6df352ee8c02a077432fca9c958aa825b3d543 # shrinks to tx = V2 { inputs: [], outputs: [], lock_time: Height(BlockHeight(0)), joinsplit_data: Some(JoinSplitData { first: JoinSplit { vpub_old: 0, vpub_new: 0, anchor: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], nullifiers: [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], commitments: [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 79, 106, 101, 97, 249, 137, 44, 11], [175, 229, 144, 49, 91, 35, 169, 102, 1, 142, 194, 21, 15, 219, 38, 242, 68, 80, 218, 212, 39, 190, 219, 73, 163, 241, 235, 226, 73, 251, 124, 181]], ephemeral_key: [67, 226, 107, 92, 119, 105, 106, 159, 101, 114, 207, 224, 9, 82, 213, 178, 214, 156, 52, 213, 39, 218, 107, 96, 239, 98, 109, 227, 224, 45, 234, 203], random_seed: [54, 236, 144, 247, 83, 249, 55, 22, 16, 162, 21, 7, 211, 163, 182, 128, 182, 14, 176, 132, 138, 78, 227, 184, 212, 205, 43, 205, 195, 228, 152, 120], vmacs: [[87, 89, 104, 68, 16, 157, 75, 207, 23, 160, 37, 130, 237, 64, 248, 116, 58, 212, 173, 83, 114, 77, 2, 86, 65, 164, 89, 83, 177, 27, 253, 195], [176, 254, 5, 73, 182, 182, 51, 12, 119, 76, 115, 97, 22, 2, 3, 146, 170, 236, 136, 6, 231, 170, 157, 30, 224, 166, 19, 205, 219, 45, 37, 159]], zkproof: Bctv14Proof("cd3a96636561cab7e0d719a5cdf84dc3f2667ec7b6cccfa1e4771d466333c6fb3685f07ddc5ef635ac4bde77f9bab73d144db848cf62bd553521878fc3fb9e0034f4aa5c03c3290e70e001b9f9558c847926ae0d4801d4b7c5bb1aa138e9064fa54ab810cb24169d221018038feb6a58405992c1ca42d6cedbbb7f8ea38f4da3e8f7b51421c6e973f00121d3dd77390de13c9510a6b73fc7af93346bd2aa129a8a753c1aaf3f2ab5ee3c8b52a254f90bd3f55b7f7a0ef62d90f68652f95d8fd5b43fd0e4753834322788e17c4325dc8e74536d62c6867dda17f7eddaca71cd84f7da8f3662f2e53696d9190208bc46ca9d6f3985645cb230507a13a5439898b8bc8815b12cbda35476a06a0a4df010bd5a4e006f87ba386fa861e67717b3dcaa727f9763f16a6471"), enc_ciphertexts: [[65, 206, 10, 5, 19, 98, 30, 235, 29, 133, 136, 161, 98, 30, 5, 191, 192, 231, 190, 39, 182, 40, 51, 241, 90, 132, 31, 10, 121, 220, 144, 82, 193, 68, 199, 33, 110, 227, 122, 102, 243, 63, 226, 169, 5, 123, 0, 50, 18, 118, 124, 43, 192, 203, 80, 111, 91, 179, 174, 254, 139, 176, 138, 227, 174, 14, 41, 100, 40, 134, 189, 185, 255, 39, 174, 229, 218, 48, 119, 28, 143, 136, 236, 213, 35, 200, 223, 208, 129, 130, 186, 37, 2], [56, 118, 188, 209, 55, 212, 241, 50, 50, 189, 23, 116, 127, 242, 176, 203, 233, 23, 177, 179, 163, 222, 121, 7, 192, 26, 179, 134, 192, 170, 14, 229, 24, 20, 226, 27, 79, 157, 127, 82, 116, 140, 186, 143, 226, 49, 31, 125, 211, 178, 71]] }, rest: [JoinSplit { vpub_old: 17173579853933010390, vpub_new: 13390459429905795147, anchor: [123, 124, 219, 139, 86, 164, 72, 60, 210, 26, 253, 138, 189, 24, 35, 75, 203, 198, 238, 234, 224, 240, 119, 81, 31, 235, 54, 232, 93, 36, 193, 96], nullifiers: [[224, 87, 222, 220, 127, 7, 90, 208, 45, 239, 140, 105, 53, 139, 85, 120, 168, 211, 172, 97, 145, 139, 2, 226, 58, 105, 27, 199, 111, 66, 119, 89], [13, 65, 167, 197, 152, 14, 53, 94, 26, 34, 177, 13, 102, 156, 166, 196, 48, 195, 4, 109, 109, 195, 30, 153, 55, 248, 101, 234, 243, 185, 213, 121]], commitments: [[99, 238, 42, 132, 122, 15, 141, 195, 30, 61, 137, 43, 223, 108, 197, 42, 38, 178, 135, 16, 116, 27, 117, 144, 64, 47, 125, 190, 154, 159, 38, 207], [92, 242, 6, 34, 173, 207, 184, 241, 74, 37, 26, 107, 27, 10, 135, 144, 245, 90, 245, 152, 1, 223, 203, 80, 41, 235, 44, 180, 100, 26, 205, 45]], ephemeral_key: [253, 135, 190, 96, 49, 127, 99, 218, 170, 168, 83, 101, 2, 51, 54, 37, 236, 23, 31, 139, 53, 254, 41, 206, 251, 1, 7, 74, 70, 200, 111, 111], random_seed: [179, 182, 51, 252, 54, 57, 171, 126, 41, 239, 180, 157, 100, 137, 159, 82, 165, 140, 173, 14, 194, 110, 37, 31, 145, 212, 178, 76, 232, 240, 199, 220], vmacs: [[27, 20, 163, 14, 102, 215, 6, 61, 191, 90, 7, 166, 210, 227, 139, 158, 80, 181, 223, 58, 231, 184, 230, 57, 219, 81, 33, 59, 121, 255, 95, 128], [227, 60, 90, 70, 197, 196, 172, 95, 251, 176, 30, 249, 43, 51, 175, 193, 91, 129, 150, 100, 149, 246, 198, 103, 94, 244, 183, 255, 251, 242, 182, 221]], zkproof: Bctv14Proof("c05c42285cd5d0bce6132ccf45265678f76f6bb7911b71336e57ffb77d344d8a9c91fea1b12f373cded133ef05b5d5fbcaebe33557e236729dde386d69373360d99b3d70740d5017d389403a6bee3ae61c4545d5464f139f56a05ab56f6bba8cf7f16053486ba6f6ee8d5284fa63a3e88a89bd4f146d800902e95804921802b27a6e627d8082227fd07d65ed8a43da4aa5edb884958720f85ec74687580a7fdb5d014eb30cbcd32733722643404d1345ecd37e54240db342329acde757d8ed955a29f286d55837cf86ec4f60f12deb5060bb61cc5dc5066c7564a87f304e3905c5ca8df72078c9c77c84a67f712488de23245e8c820e45dc4eabb402d3960f8972fe2dcba22712b2be938bceefe7a8cdb4241e7244f4a18f0ce4957e4250de234826412c31b23806"), enc_ciphertexts: [[21, 83, 42, 58, 180, 76, 131, 27, 63, 103, 10, 200, 219, 159, 1, 172, 20, 77, 163, 116, 211, 72, 6, 214, 102, 133, 102, 202, 55, 105, 200, 166, 125, 180, 148, 89, 94, 6, 3, 188, 62, 180, 162, 180, 54, 207, 189, 236, 78, 110, 75, 7, 232, 189, 159], [90, 14, 73, 172, 103, 66, 31, 158, 60, 242, 14, 18, 203, 66, 84, 102, 42, 255, 22, 207, 210, 29, 1, 236, 146, 215, 144, 49, 227, 148, 143, 188, 105, 152, 63, 63, 2, 243, 127, 120, 144, 11, 142, 227, 221, 210, 187]] }], pub_key: [58, 72, 187, 224, 188, 9, 29, 99, 224, 66, 149, 165, 109, 165, 217, 16, 179, 157, 64, 252, 155, 227, 210, 43, 130, 219, 13, 230, 214, 229, 71, 11], sig: [16010176868490725509, 7887742659580712849, 8657997692506174447, 4365825095054003462, 1771367463574841238, 4777045573149003376, 4029938572438198196, 13178274858355317902] }) } diff --git a/zebra-chain/src/transaction/tests.rs b/zebra-chain/src/transaction/tests.rs index 89c198f6f..b1760ed39 100644 --- a/zebra-chain/src/transaction/tests.rs +++ b/zebra-chain/src/transaction/tests.rs @@ -5,6 +5,7 @@ use chrono::{TimeZone, Utc}; use proptest::{ arbitrary::{any, Arbitrary}, collection::vec, + option, prelude::*, }; @@ -16,10 +17,8 @@ use crate::{ use super::*; #[cfg(test)] -impl Arbitrary for Transaction { - type Parameters = (); - - fn arbitrary_with(_args: ()) -> Self::Strategy { +impl Transaction { + pub fn v1_strategy() -> impl Strategy { ( vec(any::(), 0..10), vec(any::(), 0..10), @@ -33,6 +32,33 @@ impl Arbitrary for Transaction { .boxed() } + pub fn v2_strategy() -> impl Strategy { + ( + vec(any::(), 0..10), + vec(any::(), 0..10), + any::(), + option::of(any::>()), + ) + .prop_map( + |(inputs, outputs, lock_time, joinsplit_data)| Transaction::V2 { + inputs: inputs, + outputs: outputs, + lock_time: lock_time, + joinsplit_data: joinsplit_data, + }, + ) + .boxed() + } +} + +#[cfg(test)] +impl Arbitrary for Transaction { + type Parameters = (); + + fn arbitrary_with(_args: ()) -> Self::Strategy { + prop_oneof![Self::v1_strategy(), Self::v2_strategy()].boxed() + } + type Strategy = BoxedStrategy; } @@ -195,12 +221,16 @@ proptest! { #[test] fn transaction_roundtrip(tx in any::()) { + println!("{:?}", tx); + let mut data = Vec::new(); tx.zcash_serialize(&mut data).expect("tx should serialize"); let tx2 = Transaction::zcash_deserialize(&data[..]).expect("randomized tx should deserialize"); + println!("{:?}", tx2); + prop_assert_eq![tx, tx2]; } }