Meta Tx - Forwarder fails to verify signature

This error-message implies that you are passing two input arguments to a function which takes only one input argument.

And indeed, function verify takes one input argument of type ForwardRequestData:

struct ForwardRequestData {
    address from;
    address to;
    uint256 value;
    uint256 gas;
    uint48 deadline;
    bytes data;
    bytes signature;
}
...
function verify(ForwardRequestData calldata request) public view virtual returns (bool) {
    ...
}

You should probably do something like:

const serializedTransaction = {
    from: '0xB55A8bb04aF693823B0A00bF300b67a85BED6282',
    to: '0x6f776051Ce2d301b805b93eaD278A996A9674cbE',
    value: 0,
    gas: '25000000000',
    deadline: deadline,
    data: '0xb4477c0147daecad546ef3fb323f46318050e87d0ee5144eb127e953e181dc59d409a762',
    signature: signature
}
const verify = await forwarderContract.verify(serializedTransaction);

Where deadline is a value equal to or larger than the timestamp of the current (latest) block.

2 Likes