mirror of
https://github.com/vacp2p/linea-monorepo.git
synced 2026-01-09 04:08:01 -05:00
chore: update CompletedMessage to have the hash of the message without all the fields
This commit is contained in:
@@ -9,15 +9,15 @@ import { IL1ETHBridge } from "./interfaces/IL1ETHBridge.sol";
|
||||
import { IL2ETHBridge } from "./interfaces/IL2ETHBridge.sol";
|
||||
import { MessageServiceBase } from "../../messaging/MessageServiceBase.sol";
|
||||
import { IMessageService } from "../../messaging/interfaces/IMessageService.sol";
|
||||
import { IETHYieldManager } from "./interfaces/IETHYieldManager.sol";
|
||||
|
||||
contract L1ETHBridge is IL1ETHBridge, Initializable, UUPSUpgradeable, OwnableUpgradeable, ReentrancyGuardUpgradeable, MessageServiceBase {
|
||||
/**
|
||||
* @notice The completed message struct.
|
||||
*/
|
||||
struct CompletedMessage {
|
||||
address to;
|
||||
uint256 value;
|
||||
bytes callData;
|
||||
uint256 withdrawalRequestId;
|
||||
bytes32 messageHash;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -117,10 +117,11 @@ contract L1ETHBridge is IL1ETHBridge, Initializable, UUPSUpgradeable, OwnableUpg
|
||||
uint256 _value,
|
||||
bytes memory _calldata
|
||||
) external nonReentrant onlyMessagingService onlyAuthorizedRemoteSender {
|
||||
completedMessages[nextCompletedMessageId] = CompletedMessage(_to, _value, _calldata);
|
||||
nextCompletedMessageId++;
|
||||
|
||||
emit MessageCompleted(nextCompletedMessageId);
|
||||
bytes32 hash = keccak256(abi.encode(_to, _value, _calldata));
|
||||
uint256 requestId = IETHYieldManager(yieldManager).requestWithdrawal(_value);
|
||||
completedMessages[nextCompletedMessageId] = CompletedMessage(requestId, hash);
|
||||
nextCompletedMessageId++;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0
|
||||
pragma solidity ^0.8.26;
|
||||
|
||||
interface IETHYieldManager {
|
||||
function requestWithdrawal(uint256 _amount) external returns (uint256 requestId);
|
||||
}
|
||||
@@ -149,9 +149,8 @@ contract L1ETHBridgeTest is Test {
|
||||
bridge.completeBridging(user1, 100, "test-data");
|
||||
|
||||
assertEq(bridge.nextCompletedMessageId(), 1);
|
||||
(address to, uint256 value, bytes memory callData) = bridge.completedMessages(0);
|
||||
assertEq(to, user1);
|
||||
assertEq(value, 100);
|
||||
assertEq(callData, "test-data");
|
||||
(uint256 withdrawalRequestId, bytes32 hash) = bridge.completedMessages(0);
|
||||
assertEq(withdrawalRequestId, 0);
|
||||
assertEq(hash, keccak256(abi.encode(user1, 100, "test-data")));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,8 @@ contract ETHYieldManagerMock {
|
||||
uint256 value;
|
||||
}
|
||||
|
||||
uint256 public nextRequestId;
|
||||
|
||||
Deposit[] public deposits;
|
||||
|
||||
receive() external payable {
|
||||
@@ -21,4 +23,8 @@ contract ETHYieldManagerMock {
|
||||
require(deposits.length > 0, "No deposits made");
|
||||
return deposits[deposits.length - 1];
|
||||
}
|
||||
|
||||
function requestWithdrawal(uint256 _amount) external returns (uint256 requestId) {
|
||||
return nextRequestId++;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user