From 40d4473470b5052434813e6f2fd6602eef480d74 Mon Sep 17 00:00:00 2001 From: Nikita Masych Date: Wed, 9 Oct 2024 16:12:11 +0300 Subject: [PATCH] fix(system-contracts): correct loading of exp to memory in modexp --- system-contracts/SystemContractsHashes.json | 4 ++-- system-contracts/contracts/precompiles/Modexp.yul | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/system-contracts/SystemContractsHashes.json b/system-contracts/SystemContractsHashes.json index 7adc9f498..0ffd809a2 100644 --- a/system-contracts/SystemContractsHashes.json +++ b/system-contracts/SystemContractsHashes.json @@ -129,8 +129,8 @@ "contractName": "Modexp", "bytecodePath": "contracts-preprocessed/precompiles/artifacts/Modexp.yul.zbin", "sourceCodePath": "contracts-preprocessed/precompiles/Modexp.yul", - "bytecodeHash": "0x010000256ad1144a358b198908db757d778826c181e6e55629319ad2d342fc53", - "sourceCodeHash": "0xfb4399a7f9c73fb29a3e6319af8edfe330e28fd72e1a35224fcd42d520c26193" + "bytecodeHash": "0x01000025e23981181c4edbf5e386f44acc1fd5e63a76148f94f9faab33ebfcf2", + "sourceCodeHash": "0x8b76dadc324881a1d1427d7bad1314537e4a278eefd41108742b14a3ea957b82" }, { "contractName": "EcAdd", diff --git a/system-contracts/contracts/precompiles/Modexp.yul b/system-contracts/contracts/precompiles/Modexp.yul index aaf4ad240..8f5025735 100644 --- a/system-contracts/contracts/precompiles/Modexp.yul +++ b/system-contracts/contracts/precompiles/Modexp.yul @@ -99,7 +99,7 @@ object "Modexp" { // Copy input base, exp and mod from calldata to memory calldatacopy(0, 96, baseLen) calldatacopy(MAX_BASE_BYTES_SUPPORTED(), add(96, baseLen), expLen) - calldatacopy(MAX_EXP_BYTES_SUPPORTED(), add(add(96, baseLen), expLen), modLen) + calldatacopy(add(MAX_BASE_BYTES_SUPPORTED(), MAX_EXP_BYTES_SUPPORTED()), add(add(96, baseLen), expLen), modLen) let precompileParams := unsafePackPrecompileParams( 0, // input offset in words