2⃣
sponsoredCall
SDK Method 3️⃣
After reading this page:
- You'll know how to use the
SponsoredCall
SDK method. This uses the 1Balance payment method, allowing you to sponsor some/all of your user's gas costs. - You'll see some code which will help you send a relay request within minutes.
sponsoredCall
utilises authentication via a sponsor API key to sponsor gasless transactions for your users securely. The payment method is Gelato 1Balance.const sponsoredCall = async (
request: SponsoredCallRequest,
sponsorApiKey: string,
options?: RelayRequestOptions
): Promise<RelayResponse>
sponsorApiKey
: an API key used to authenticate your sponsorship.options?
:RelayRequestOptions
is an optional request object
type RelayResponse = {
taskId: string;
};
const request = {
chainId: BigNumberish;
target: string;
data: BytesLike;
};
chainId
: the chain ID of the chain where thetarget
smart contract is deployed.target
: the address of the target smart contract.data
: encoded payload data (usually a function selector plus the required arguments) used to call the requiredtarget
address.
Since
sponsoredCall
assumes you have your own security logic, i.e. replay and re-entrancy protection, built in, you can go ahead and generate the payload for your function call and populate a request object.1
import { GelatoRelay, SponsoredCallRequest } from "@gelatonetwork/relay-sdk";
2
const relay = new GelatoRelay();
// set up target address and function signature abi
const counter = "0xEEeBe2F778AA186e88dCf2FEb8f8231565769C27";
const abi = ["function increment()"];
// generate payload using front-end provider such as MetaMask
const provider = new ethers.providers.Web3Provider(window.ethereum);
const signer = provider.getSigner();
const contract = new ethers.Contract(counterAddress, abi, signer);
const { data } = await contract.populateTransaction.increment();
1
// Populate a relay request
2
const request: SponsoredCallRequest = {
3
chainId: provider.network.chainId,
4
target: counter,
5
data: data,
6
};
7
8
// Without a specific API key, the relay request will fail!
9
// Go to https://relay.gelato.network to get a testnet API key with 1Balance.
10
// Send the relay request using Gelato Relay!
11
const relayResponse = await relay.sponsoredCall(request, apiKey);
Last modified 1mo ago