Hello everyone, I am trying to create a relayer using the minimal forwarder from open zeppelin. The method "execute" takes a signature as parameter (bytes) but I can't find a way to get the signature from a signed transaction in my node server. I have the r and s field. I am using web3js library. If you could highlight me on this. Thanks ![]()
Have you checked out the OpenZeppelin documentation, it contains some examples on how to use the relayer.
Hello,
Thank you for your quick answer.
Yes I checked it, but still, we can see they are using a signature coming from the request.
The thing is, I have signed a transaction using web3js.
In this object I have
{
messageHash: '0x1c7897d53de815dbc55ccca2...',
v: '0xe5',
r: '0xbb164c7d5da1d9d13f3e63ebe0cbca...',
s: '0x2abf25dfd9027449d5618ec5ea00f937...',
rawTransaction: '0xf8aa328502540be40082c9be94aa7d315f34733100784dc740b1a13e87310ac2c180b844a9059cbb0000000000000000000000007b5cf62081f57...,
transactionHash: '0xb1edb3668d1100ed8a4527a2ce8c5...'
}
How can I get the signature from this ?
Thanks
normally to get the v r and s you split the signature
const { v, r, s } = ethers.utils.splitSignature(await signer._signTypedData(...))
if you want just the signature you can skip that step.
await signer._signTypedData(
{
name,
version,
chainId,
verifyingContract: token.address,
},
{
Permit: [
{
name: "owner",
type: "address",
},
{
name: "spender",
type: "address",
},
{
name: "value",
type: "uint256",
},
{
name: "nonce",
type: "uint256",
},
{
name: "deadline",
type: "uint256",
},
],
},
{
owner: signer.address,
spender,
value,
nonce,
deadline,
}
)
In the defender workshop api code (located in signer.js) they have the following function which returns the signature:
async function signMetaTxRequest(signer, forwarder, input) {
const request = await buildRequest(forwarder, input);
const toSign = await buildTypedData(forwarder, request);
const signature = await signTypedData(signer, input.from, toSign);
return { signature, request };
}
Okay I see,
but using web3.js, what would be the equivalent?
Thanks
We only use nextjs/ethersjs so i'm afriad i have no example code for you.