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.
Deploy contracts with the relay method
To gaslessly deploy a contract, create a GSN transaction object and use the relay() method to send the transaction to our relayer.
import { RlyAmoyNetwork } from 'rly-network-mobile-sdk';
import ethers from 'ethers';
....
//get web3 provider
const provider = new ethers.providers.JsonRpcProvider(providerUrl);
//get instance of your contract
const myContract = new ethers.Contract(contractAddress, contractAbi, signer);
//populate raw transaction object
const tx = await myContract.populateTransaction.myMethod.(
param1,
param2
);
//get gas estimate for transaction
const gas = await myContract.estimateGas.myMethod.(param1, param2);
//get current network fee data
const { maxFeePerGas, maxPriorityFeePerGas } = await provider.getFeeData();
//create relay tx object
const gsnTx = {
from: account.address,
data: tx.data,
to: tx.to,
gas: gas._hex,
maxFeePerGas: maxFeePerGas._hex,
maxPriorityFeePerGas: maxPriorityFeePerGas._hex,
} as GsnTransactionDetails;
// relay transaction
await RlyAmoyNetwork.relay(gsnTx);