From d779d52895cb42a44be510984ac8f01b9e3a2b2c Mon Sep 17 00:00:00 2001 From: lightclient Date: Thu, 11 Jul 2024 07:52:38 -0600 Subject: [PATCH] consolidations: add event --- src/consolidations/main.eas | 17 +++++++++++++++++ test/Consolidation.t.sol.in | 10 ++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/consolidations/main.eas b/src/consolidations/main.eas index 6ef34d4..b082e3a 100644 --- a/src/consolidations/main.eas +++ b/src/consolidations/main.eas @@ -141,6 +141,23 @@ check_input: swap1 ;; [slot, target[16:48], ..] sstore ;; [..] + + ;; Assemble log data. + caller ;; [caller, ..] + push1 96 ;; [96, caller, ..] + shl ;; [caller, ..] + push0 ;; [0, caller, ..] + mstore ;; [..] + push1 INPUT_SIZE ;; [size, ..] + push0 ;; [ost, size, ..] + push1 20 ;; [dest, ost, size, ..] + calldatacopy ;; [..] + + ;; Log record. + push1 RECORD_SIZE ;; [size, ..] + push0 ;; [idx, size, ..] + log0 ;; [..] + ;; Increment queue tail over last and write to storage. push1 1 ;; [1, tail_idx] add ;; [tail_idx+1] diff --git a/test/Consolidation.t.sol.in b/test/Consolidation.t.sol.in index 1ae1d3e..9f50d25 100644 --- a/test/Consolidation.t.sol.in +++ b/test/Consolidation.t.sol.in @@ -32,6 +32,16 @@ contract ConsolidationTest is Test { // request count is accepted and read successfully. function testConsolidation() public { bytes memory data = hex"111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222"; + + vm.expectEmit(false, false, false, true); + assembly { + let ptr := mload(0x40) + mstore(ptr, shl(96, address())) + mstore(add(ptr, 20), mload(add(data, 32))) + mstore(add(ptr, 52), mload(add(data, 64))) + log0(ptr, 76) + } + (bool ret,) = addr.call{value: 2}(data); assertEq(ret, true); assertStorage(count_slot, 1, "unexpected request count");