Transfer tokens gaslessly

An API key is required to use the infrastructure to power gasless transactions. Visit https://app.rallyprotocol.com/ to generate both Amoy and Mainnet Polygon API keys.

Gasless transactions with RLY token

In this section, we leverage the RLY token (polygonscan) and our faucet to enable developers to complete a gasless token transfer in just seconds. Use the following code to claim test RLY tokens and transfer it to a destination wallet of your choosing.

//get amoy config
var amoy = NetworkProvider.RlyAmoy;

//add your API Key (can also be chained)
amoy.WithApiKey(env.API_KEY);

//claim 10 test RLY tokens gaslessly for testing
await amoy.ClaimRly();

//destination address for testing
var destinationAddress = "0x8D9F6c7Ab1316B613BDdcD1fDbac6025A1323569" 

//transfer RLY token
await amoy.TransferExact(
  destinationAddress,
  new BigInteger(1),
  MetaTxMethod.ExecuteMetaTransaction
);

Getting started with your chosen ERC-20 token

Contract requirements

  1. Contract is compatible with the RallyMobile SDK

    1. Contracts that are ERC2771 compatible are natively supported by the RallyMobile SDK. Those that are not ERC2771 compatible must be whitelisted, view the guide here.

  2. Contract natively supports gasless transactions

    1. Contracts that have the executeMetaTransaction or Permit method for gasless transactions are natively supported by our SDK. To determine which method is supported by your contract, view the guide here.

View our supported tokens list to see if your token is already supported.

Gasless transactions with your chosen ERC-20 token

Use the following code to transfer your chosen token gaslessly.

//get amoy config
var amoy = NetworkProvider.RlyAmoy;

//add your API Key (can also be chained)
amoy.WithApiKey(env.API_KEY);

//destination address for testing
var destinationAddress = "0x...." 

//hex address of token contract
var tokenAddress = "0x...." 

//transfer tokens if the token contract supports executeMetaTransaction 
await amoy.TransferExact(
  destinationAddress,
  new BigInteger(1),
  MetaTxMethod.ExecuteMetaTransaction,
  {tokenAddress}
);

//transfer tokens if the token contract supports Permit 
await amoy.TransferExact(
  destinationAddress,
  new BigInteger(1),
  MetaTxMethod.Permit,
  {tokenAddress}
);

Last updated