编译器
0.8.28+commit.7893614a
文件 1 的 3:IMultiReceiveWithGasDropOff.sol
pragma solidity ^0.8.19;
interface IMultiReceiveWithGasDropOff {
error InvalidParameters(uint256, uint256);
error DropOffFailed(address, uint256);
function receiveMessages(address[] calldata contracts, bytes[] calldata messages, address payeeAddress)
external
payable;
}
文件 2 的 3:IReceiveMessage.sol
pragma solidity ^0.8.19;
interface IReceiveMessage {
function receiveMessage(bytes memory encodedMessage) external;
}
文件 3 的 3:MultiReceiveWithGasDropOff.sol
pragma solidity ^0.8.19;
import "./interfaces/IMultiReceiveWithGasDropOff.sol";
import "./interfaces/IReceiveMessage.sol";
string constant multiReceiverWithGasDropOffVersion = "MultiReceiveWithGasDropOff-0.0.1";
contract MultiReceiveWithGasDropOff is IMultiReceiveWithGasDropOff {
string public constant VERSION = multiReceiverWithGasDropOffVersion;
function receiveMessages(address[] calldata contracts, bytes[] calldata messages, address payeeAddress)
external
payable
{
if (contracts.length != messages.length) {
revert InvalidParameters(contracts.length, messages.length);
}
uint256 len = contracts.length;
for (uint256 idx = 0; idx < len;) {
IReceiveMessage(contracts[idx]).receiveMessage(messages[idx]);
unchecked {
idx++;
}
}
if (msg.value > 0) {
(bool dropOffSuccessful,) = payable(payeeAddress).call{value: msg.value}("");
if (!dropOffSuccessful) {
revert DropOffFailed(payeeAddress, msg.value);
}
}
}
}
{
"compilationTarget": {
"src/MultiReceiveWithGasDropOff.sol": "MultiReceiveWithGasDropOff"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": [
":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/",
":forge-std/=lib/forge-std/src/",
":openzeppelin-contracts/=lib/openzeppelin-contracts/"
],
"viaIR": true
}
[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"DropOffFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"InvalidParameters","type":"error"},{"inputs":[],"name":"VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"contracts","type":"address[]"},{"internalType":"bytes[]","name":"messages","type":"bytes[]"},{"internalType":"address","name":"payeeAddress","type":"address"}],"name":"receiveMessages","outputs":[],"stateMutability":"payable","type":"function"}]