From 83a290331e1e41ae073dccec452ab11231692145 Mon Sep 17 00:00:00 2001 From: wborgeaud Date: Wed, 14 Dec 2022 16:34:32 +0100 Subject: [PATCH] Fixes --- evm/src/cpu/kernel/interpreter.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/evm/src/cpu/kernel/interpreter.rs b/evm/src/cpu/kernel/interpreter.rs index 8fad85bf..70b96829 100644 --- a/evm/src/cpu/kernel/interpreter.rs +++ b/evm/src/cpu/kernel/interpreter.rs @@ -385,12 +385,10 @@ impl<'a> Interpreter<'a> { self.push(x.overflowing_sub(y).0); } - // TODO: 107 is hardcoded as a dummy prime for testing - // should be changed to the proper implementation prime - fn run_addfp254(&mut self) { - let x = self.pop(); - let y = self.pop(); + let x = self.pop() % BN_BASE; + let y = self.pop() % BN_BASE; + // BN_BASE is 254-bit so addition can't overflow self.push((x + y) % BN_BASE); } @@ -401,9 +399,10 @@ impl<'a> Interpreter<'a> { } fn run_subfp254(&mut self) { - let x = self.pop(); - let y = self.pop(); - self.push((U256::from(107) + x - y) % BN_BASE); + let x = self.pop() % BN_BASE; + let y = self.pop() % BN_BASE; + // BN_BASE is 254-bit so addition can't overflow + self.push((x + (BN_BASE - y)) % BN_BASE); } fn run_div(&mut self) {