From d4d80f35288067810c789dc5b7c14bc86f25e7c7 Mon Sep 17 00:00:00 2001 From: Dmitry Vagner Date: Tue, 27 Dec 2022 16:02:55 -0800 Subject: [PATCH] rearrange --- evm/src/bn254.rs | 286 +++++++++++++++++++++++------------------------ 1 file changed, 143 insertions(+), 143 deletions(-) diff --git a/evm/src/bn254.rs b/evm/src/bn254.rs index 6b3026ef..33a5eb75 100644 --- a/evm/src/bn254.rs +++ b/evm/src/bn254.rs @@ -267,6 +267,149 @@ pub fn frob_fp12(n: usize, f: Fp12) -> Fp12 { [frob_fp6(n, f0), mul_fp6(scale, frob_fp6(n, f1))] } +fn frob_t1(n: usize) -> Fp2 { + match n { + 0 => [ + U256::from_str("0x1").unwrap(), + U256::from_str("0x0").unwrap(), + ], + 1 => [ + U256::from_str("0x2fb347984f7911f74c0bec3cf559b143b78cc310c2c3330c99e39557176f553d") + .unwrap(), + U256::from_str("0x16c9e55061ebae204ba4cc8bd75a079432ae2a1d0b7c9dce1665d51c640fcba2") + .unwrap(), + ], + 2 => [ + U256::from_str("0x30644e72e131a0295e6dd9e7e0acccb0c28f069fbb966e3de4bd44e5607cfd48") + .unwrap(), + U256::from_str("0x0").unwrap(), + ], + 3 => [ + U256::from_str("0x856e078b755ef0abaff1c77959f25ac805ffd3d5d6942d37b746ee87bdcfb6d") + .unwrap(), + U256::from_str("0x4f1de41b3d1766fa9f30e6dec26094f0fdf31bf98ff2631380cab2baaa586de") + .unwrap(), + ], + 4 => [ + U256::from_str("0x59e26bcea0d48bacd4f263f1acdb5c4f5763473177fffffe").unwrap(), + U256::from_str("0x0").unwrap(), + ], + 5 => [ + U256::from_str("0x28be74d4bb943f51699582b87809d9caf71614d4b0b71f3a62e913ee1dada9e4") + .unwrap(), + U256::from_str("0x14a88ae0cb747b99c2b86abcbe01477a54f40eb4c3f6068dedae0bcec9c7aac7") + .unwrap(), + ], + _ => panic!(), + } +} + +fn frob_t2(n: usize) -> Fp2 { + match n { + 0 => [ + U256::from_str("0x1").unwrap(), + U256::from_str("0x0").unwrap(), + ], + 1 => [ + U256::from_str("0x5b54f5e64eea80180f3c0b75a181e84d33365f7be94ec72848a1f55921ea762") + .unwrap(), + U256::from_str("0x2c145edbe7fd8aee9f3a80b03b0b1c923685d2ea1bdec763c13b4711cd2b8126") + .unwrap(), + ], + 2 => [ + U256::from_str("0x59e26bcea0d48bacd4f263f1acdb5c4f5763473177fffffe").unwrap(), + U256::from_str("0x0").unwrap(), + ], + 3 => [ + U256::from_str("0xbc58c6611c08dab19bee0f7b5b2444ee633094575b06bcb0e1a92bc3ccbf066") + .unwrap(), + U256::from_str("0x23d5e999e1910a12feb0f6ef0cd21d04a44a9e08737f96e55fe3ed9d730c239f") + .unwrap(), + ], + 4 => [ + U256::from_str("0x30644e72e131a0295e6dd9e7e0acccb0c28f069fbb966e3de4bd44e5607cfd48") + .unwrap(), + U256::from_str("0x0").unwrap(), + ], + 5 => [ + U256::from_str("0x1ee972ae6a826a7d1d9da40771b6f589de1afb54342c724fa97bda050992657f") + .unwrap(), + U256::from_str("0x10de546ff8d4ab51d2b513cdbb25772454326430418536d15721e37e70c255c9") + .unwrap(), + ], + _ => panic!(), + } +} + +fn frob_z(n: usize) -> Fp2 { + match n { + 0 => [ + U256::from_str("0x1").unwrap(), + U256::from_str("0x0").unwrap(), + ], + 1 => [ + U256::from_str("0x1284b71c2865a7dfe8b99fdd76e68b605c521e08292f2176d60b35dadcc9e470") + .unwrap(), + U256::from_str("0x246996f3b4fae7e6a6327cfe12150b8e747992778eeec7e5ca5cf05f80f362ac") + .unwrap(), + ], + 2 => [ + U256::from_str("0x30644e72e131a0295e6dd9e7e0acccb0c28f069fbb966e3de4bd44e5607cfd49") + .unwrap(), + U256::from_str("0x0").unwrap(), + ], + 3 => [ + U256::from_str("0x19dc81cfcc82e4bbefe9608cd0acaa90894cb38dbe55d24ae86f7d391ed4a67f") + .unwrap(), + U256::from_str("0xabf8b60be77d7306cbeee33576139d7f03a5e397d439ec7694aa2bf4c0c101") + .unwrap(), + ], + 4 => [ + U256::from_str("0x30644e72e131a0295e6dd9e7e0acccb0c28f069fbb966e3de4bd44e5607cfd48") + .unwrap(), + U256::from_str("0x0").unwrap(), + ], + 5 => [ + U256::from_str("0x757cab3a41d3cdc072fc0af59c61f302cfa95859526b0d41264475e420ac20f") + .unwrap(), + U256::from_str("0xca6b035381e35b618e9b79ba4e2606ca20b7dfd71573c93e85845e34c4a5b9c") + .unwrap(), + ], + 6 => [ + U256::from_str("0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd46") + .unwrap(), + U256::from_str("0x0").unwrap(), + ], + 7 => [ + U256::from_str("0x1ddf9756b8cbf849cf96a5d90a9accfd3b2f4c893f42a9166615563bfbb318d7") + .unwrap(), + U256::from_str("0xbfab77f2c36b843121dc8b86f6c4ccf2307d819d98302a771c39bb757899a9b") + .unwrap(), + ], + 8 => [ + U256::from_str("0x59e26bcea0d48bacd4f263f1acdb5c4f5763473177fffffe").unwrap(), + U256::from_str("0x0").unwrap(), + ], + 9 => [ + U256::from_str("0x1687cca314aebb6dc866e529b0d4adcd0e34b703aa1bf84253b10eddb9a856c8") + .unwrap(), + U256::from_str("0x2fb855bcd54a22b6b18456d34c0b44c0187dc4add09d90a0c58be1eae3bc3c46") + .unwrap(), + ], + 10 => [ + U256::from_str("0x59e26bcea0d48bacd4f263f1acdb5c4f5763473177ffffff").unwrap(), + U256::from_str("0x0").unwrap(), + ], + 11 => [ + U256::from_str("0x290c83bf3d14634db120850727bb392d6a86d50bd34b19b929bc44b896723b38") + .unwrap(), + U256::from_str("0x23bd9e3da9136a739f668e1adc9ef7f0f575ec93f71a8df953c846338c32a1ab") + .unwrap(), + ], + _ => panic!(), + } +} + // fn inv_fp2(a: Fp2) -> Fp2 { // let [a0, a1] = a; // let norm = inv_fp(mul_fp(a0, a0) + mul_fp(a1, a1)); @@ -486,149 +629,6 @@ pub fn power(f: Fp12) -> Fp12 { mul_fp12(mul_fp12(y4, y2), y0) } -fn frob_t1(n: usize) -> Fp2 { - match n { - 0 => [ - U256::from_str("0x1").unwrap(), - U256::from_str("0x0").unwrap(), - ], - 1 => [ - U256::from_str("0x2fb347984f7911f74c0bec3cf559b143b78cc310c2c3330c99e39557176f553d") - .unwrap(), - U256::from_str("0x16c9e55061ebae204ba4cc8bd75a079432ae2a1d0b7c9dce1665d51c640fcba2") - .unwrap(), - ], - 2 => [ - U256::from_str("0x30644e72e131a0295e6dd9e7e0acccb0c28f069fbb966e3de4bd44e5607cfd48") - .unwrap(), - U256::from_str("0x0").unwrap(), - ], - 3 => [ - U256::from_str("0x856e078b755ef0abaff1c77959f25ac805ffd3d5d6942d37b746ee87bdcfb6d") - .unwrap(), - U256::from_str("0x4f1de41b3d1766fa9f30e6dec26094f0fdf31bf98ff2631380cab2baaa586de") - .unwrap(), - ], - 4 => [ - U256::from_str("0x59e26bcea0d48bacd4f263f1acdb5c4f5763473177fffffe").unwrap(), - U256::from_str("0x0").unwrap(), - ], - 5 => [ - U256::from_str("0x28be74d4bb943f51699582b87809d9caf71614d4b0b71f3a62e913ee1dada9e4") - .unwrap(), - U256::from_str("0x14a88ae0cb747b99c2b86abcbe01477a54f40eb4c3f6068dedae0bcec9c7aac7") - .unwrap(), - ], - _ => panic!(), - } -} - -fn frob_t2(n: usize) -> Fp2 { - match n { - 0 => [ - U256::from_str("0x1").unwrap(), - U256::from_str("0x0").unwrap(), - ], - 1 => [ - U256::from_str("0x5b54f5e64eea80180f3c0b75a181e84d33365f7be94ec72848a1f55921ea762") - .unwrap(), - U256::from_str("0x2c145edbe7fd8aee9f3a80b03b0b1c923685d2ea1bdec763c13b4711cd2b8126") - .unwrap(), - ], - 2 => [ - U256::from_str("0x59e26bcea0d48bacd4f263f1acdb5c4f5763473177fffffe").unwrap(), - U256::from_str("0x0").unwrap(), - ], - 3 => [ - U256::from_str("0xbc58c6611c08dab19bee0f7b5b2444ee633094575b06bcb0e1a92bc3ccbf066") - .unwrap(), - U256::from_str("0x23d5e999e1910a12feb0f6ef0cd21d04a44a9e08737f96e55fe3ed9d730c239f") - .unwrap(), - ], - 4 => [ - U256::from_str("0x30644e72e131a0295e6dd9e7e0acccb0c28f069fbb966e3de4bd44e5607cfd48") - .unwrap(), - U256::from_str("0x0").unwrap(), - ], - 5 => [ - U256::from_str("0x1ee972ae6a826a7d1d9da40771b6f589de1afb54342c724fa97bda050992657f") - .unwrap(), - U256::from_str("0x10de546ff8d4ab51d2b513cdbb25772454326430418536d15721e37e70c255c9") - .unwrap(), - ], - _ => panic!(), - } -} - -fn frob_z(n: usize) -> Fp2 { - match n { - 0 => [ - U256::from_str("0x1").unwrap(), - U256::from_str("0x0").unwrap(), - ], - 1 => [ - U256::from_str("0x1284b71c2865a7dfe8b99fdd76e68b605c521e08292f2176d60b35dadcc9e470") - .unwrap(), - U256::from_str("0x246996f3b4fae7e6a6327cfe12150b8e747992778eeec7e5ca5cf05f80f362ac") - .unwrap(), - ], - 2 => [ - U256::from_str("0x30644e72e131a0295e6dd9e7e0acccb0c28f069fbb966e3de4bd44e5607cfd49") - .unwrap(), - U256::from_str("0x0").unwrap(), - ], - 3 => [ - U256::from_str("0x19dc81cfcc82e4bbefe9608cd0acaa90894cb38dbe55d24ae86f7d391ed4a67f") - .unwrap(), - U256::from_str("0xabf8b60be77d7306cbeee33576139d7f03a5e397d439ec7694aa2bf4c0c101") - .unwrap(), - ], - 4 => [ - U256::from_str("0x30644e72e131a0295e6dd9e7e0acccb0c28f069fbb966e3de4bd44e5607cfd48") - .unwrap(), - U256::from_str("0x0").unwrap(), - ], - 5 => [ - U256::from_str("0x757cab3a41d3cdc072fc0af59c61f302cfa95859526b0d41264475e420ac20f") - .unwrap(), - U256::from_str("0xca6b035381e35b618e9b79ba4e2606ca20b7dfd71573c93e85845e34c4a5b9c") - .unwrap(), - ], - 6 => [ - U256::from_str("0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd46") - .unwrap(), - U256::from_str("0x0").unwrap(), - ], - 7 => [ - U256::from_str("0x1ddf9756b8cbf849cf96a5d90a9accfd3b2f4c893f42a9166615563bfbb318d7") - .unwrap(), - U256::from_str("0xbfab77f2c36b843121dc8b86f6c4ccf2307d819d98302a771c39bb757899a9b") - .unwrap(), - ], - 8 => [ - U256::from_str("0x59e26bcea0d48bacd4f263f1acdb5c4f5763473177fffffe").unwrap(), - U256::from_str("0x0").unwrap(), - ], - 9 => [ - U256::from_str("0x1687cca314aebb6dc866e529b0d4adcd0e34b703aa1bf84253b10eddb9a856c8") - .unwrap(), - U256::from_str("0x2fb855bcd54a22b6b18456d34c0b44c0187dc4add09d90a0c58be1eae3bc3c46") - .unwrap(), - ], - 10 => [ - U256::from_str("0x59e26bcea0d48bacd4f263f1acdb5c4f5763473177ffffff").unwrap(), - U256::from_str("0x0").unwrap(), - ], - 11 => [ - U256::from_str("0x290c83bf3d14634db120850727bb392d6a86d50bd34b19b929bc44b896723b38") - .unwrap(), - U256::from_str("0x23bd9e3da9136a739f668e1adc9ef7f0f575ec93f71a8df953c846338c32a1ab") - .unwrap(), - ], - _ => panic!(), - } -} - pub fn tangent(p: Curve, q: TwistedCurve) -> Fp12 { let [px, py] = p; let [qx, qy] = q;