Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time

GSN v3 integration workshop

(Base branch - before adding any GSN support)

This sample dapp emits an event with the last account that clicked on the "capture the flag" button. We will integrate this dapp to work gaslessly with GSN v3. This will allow an externally owned account without ETH to capture the flag by signing a meta transaction.

To run the sample:

  1. first clone and yarn install
  2. run yarn ganache
  3. Make sure you have Metamask installed, and pointing to "localhost
  4. run truffle init and set the network in truffle-config.js
  5. In a different window, run yarn start, to deploy the contract, and start the UI
  6. Start a browser pointing to "http://localhost:3000"
  7. Click the "Capture the Flag" button. Notice that you do need an account with eth for that..

You can see the integrations as GitHub pull requests:

  1. Basic: Minimum viable GSN integration
  2. Advanced: Write your own custom Paymaster

Note: on testnet we maintain a public service "pay for everything" paymaster so writing your own is not strictly required. On mainnet, you need a custom paymaster, such as a token paymaster that allow users to pay for gas in tokens, and exchanging them for ETH ETH on Uniswap. Dapps will want to develop their own custom paymaster in order, for example to subsidize gas fees for new users during the onboarding process.

Further reading

GSNv3 integration tutorial:

Documentation explaining how everything works:


About A sample project to how how to add GSN to a simple Web3 project. See the PRs to see the needed changes. NOTE: the video was created for a previous version







No releases published


No packages published