I am writing a contract that lets users sign up for a raffle, then select a few of them using chainlinks VRF. To save users on gas I'm letting users sign up by simply adding their address to a list, then on my end calling a function to scrub the list of duplicates and other requirements (min balance etc). Is there a way to get a participants address without them spending any gas at all?

I know there are many ways off chain, but what about on chain? Is there a way for an EOA to sign/send a message to a contract without spending gas?

  • There are meta transactions. It is not the same, but it allows users to use a provider send transaction on their behalf, the contract has to be modified in order to understand this type of transactions. See ethereum.stackexchange.com/questions/63180/….
    – Ismael
    Commented Feb 5, 2022 at 17:06

1 Answer 1


No, someone will at the least need to pay min txn cost (21K) + storage cost for the SLOADs of the addresses being added to the contract. You can have a web interface where they sign and send a message off-chain to you and you bulk-add their addresses to the contract in one transaction, but the chain cannot interoperate with signatures via view functions (the only gasless way to interact with the chain).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.