From 8c8fea8eca36c128c455afecfec96ece5534da0e Mon Sep 17 00:00:00 2001 From: pcw109550 Date: Mon, 5 Feb 2024 12:50:06 +0900 Subject: [PATCH] Use identical code --- rvsol/src/Step.sol | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/rvsol/src/Step.sol b/rvsol/src/Step.sol index 9df0a7e2..424ef042 100644 --- a/rvsol/src/Step.sol +++ b/rvsol/src/Step.sol @@ -774,13 +774,24 @@ contract Step { } function localize(preImageKey, localContext_) -> localizedKey { - let memPtr := mload(0x40) // get pointer to free memory for preimage interactions + // Grab the current free memory pointer to restore later. + let ptr := mload(0x40) // Store the local data key and caller next to each other in memory for hashing. - mstore(memPtr, preImageKey) - mstore(add(memPtr, 0x20), caller()) - mstore(add(memPtr, 0x40), localContext_) - // Localize the key - localizedKey := or(and(keccak256(memPtr, 0x60), not(shl(248, 0xFF))), shl(248, 1)) + mstore(0, preImageKey) + mstore(0x20, caller()) + mstore(0x40, localContext_) + // Localize the key with the above `localize` operation. + localizedKey := or(and(keccak256(0, 0x60), not(shl(248, 0xFF))), shl(248, 1)) + // Restore the free memory pointer. + mstore(0x40, ptr) + + // let memPtr := mload(0x40) // get pointer to free memory for preimage interactions + // // Store the local data key and caller next to each other in memory for hashing. + // mstore(memPtr, preImageKey) + // mstore(add(memPtr, 0x20), caller()) + // mstore(add(memPtr, 0x40), localContext_) + // // Localize the key + // localizedKey := or(and(keccak256(memPtr, 0x60), not(shl(248, 0xFF))), shl(248, 1)) } function readPreimageValue(addr, count, localContext_) -> out {