From e71c8bebb12dbfc1440bcf7f976ad0e854ff9bec Mon Sep 17 00:00:00 2001 From: parazyd Date: Thu, 6 Jan 2022 17:24:52 +0100 Subject: [PATCH] zkas: Add EcMulBase opcode. --- zkas/proofs/burn.zk | 2 +- zkas/src/main.rs | 4 +--- zkas/src/opcode.rs | 9 ++++++--- zkas/src/parser.rs | 10 ++++++++++ 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/zkas/proofs/burn.zk b/zkas/proofs/burn.zk index 94033f3ac..6b9264a82 100644 --- a/zkas/proofs/burn.zk +++ b/zkas/proofs/burn.zk @@ -49,7 +49,7 @@ circuit "Burn" { # Finally, we derive a public key for the signature and # constrain its coordinates: - signature_public = ec_mul(signature_secret, NULLIFIER_K); + signature_public = ec_mul_base(signature_secret, NULLIFIER_K); signature_x = ec_get_x(signature_public); signature_y = ec_get_y(signature_public); constrain_instance(signature_x); diff --git a/zkas/src/main.rs b/zkas/src/main.rs index 771bcd530..7e4d42fa5 100644 --- a/zkas/src/main.rs +++ b/zkas/src/main.rs @@ -56,9 +56,7 @@ fn main() -> Result<()> { !cli.strip, ); - let bincode = compiler.compile(); - - println!("{:#?}", bincode); + let _bincode = compiler.compile(); Ok(()) } diff --git a/zkas/src/opcode.rs b/zkas/src/opcode.rs index 73f71b4a6..4f7921527 100644 --- a/zkas/src/opcode.rs +++ b/zkas/src/opcode.rs @@ -6,9 +6,11 @@ use crate::types::Type; pub enum Opcode { EcAdd = 0x00, EcMul = 0x01, - EcMulShort = 0x02, - EcGetX = 0x03, - EcGetY = 0x04, + EcMulBase = 0x02, + EcMulShort = 0x03, + + EcGetX = 0x08, + EcGetY = 0x09, PoseidonHash = 0x10, @@ -25,6 +27,7 @@ impl Opcode { // (return_type, opcode_arg_types) Opcode::EcAdd => (vec![Type::EcPoint], vec![Type::EcPoint, Type::EcPoint]), Opcode::EcMul => (vec![Type::EcPoint], vec![Type::Scalar, Type::EcFixedPoint]), + Opcode::EcMulBase => (vec![Type::EcPoint], vec![Type::Base, Type::EcFixedPoint]), Opcode::EcMulShort => (vec![Type::EcPoint], vec![Type::Base, Type::EcFixedPoint]), Opcode::EcGetX => (vec![Type::Base], vec![Type::EcPoint]), Opcode::EcGetY => (vec![Type::Base], vec![Type::EcPoint]), diff --git a/zkas/src/parser.rs b/zkas/src/parser.rs index 44464797c..ca5d2b0a4 100644 --- a/zkas/src/parser.rs +++ b/zkas/src/parser.rs @@ -545,6 +545,16 @@ impl Parser { continue } + "ec_mul_base" => { + stmt.args = self.parse_function_call(token, &mut iter); + stmt.opcode = Opcode::EcMulBase; + stmt.line = token.line; + stmts.push(stmt.clone()); + + parsing = false; + continue + } + "ec_mul" => { stmt.args = self.parse_function_call(token, &mut iter); stmt.opcode = Opcode::EcMul;