callContract

Call this function to execute an custom transaction. The user must be logged in for this call to succeed. You can confirm a user has been logged in by calling hallidayClient.getUserInfo(). Note that the from_in_game_player_id input must match the id of the user currently logged in.

Example Usage

import {Halliday} from "halliday-sdk";

// Call an arbitrary contract.
const contractAddress = '0x1f6557356bfb310a556300a36fb18f54fb4791b1';
// The contract's ABI
const contractAbi = [...]; // Replace with your contract's ABI
// Create an instance of the contract
const contract = new ethers.Contract(contractAddress, contractAbi, signer);
// Get the calldata for a contract call
const calldata = contract.interface.encodeFunctionData('someFunction', ['arg1', 'arg2']);

// Call the contract, with gas sponsored by the paymaster.
const contractCallTxInfo = await hallidayClient.callContract({
  from_in_game_player_id: userInGameId,								// your user's id in your application
  target_address: contractAddress,
  value: "0",
  calldata,
  sponsor_gas: true,
});

Inputs

CallContractRequest Object

NameTypeDescription
from_in_game_player_idstringThe user id of the sending user
target_addressstringAddress of the target contract
valuestringValue being transferred to target_address ("0" if not transferring any tokens to target_address)
calldatastringEncoded data representing the contract call to execute for user
sponsor_gasbooleanWhether to pay for user's gas on their behalf
on_rate_limit (optional)FunctionCallback to run if user is rate-limited (i.e small message on screen for a few seconds)

Outputs

Promise to a GetTransactionReponse Object

NameTypeDescription
blockchain_typestringThe blockchain on which this transaction occurred (e.g. ETHEREUM, IMMUTABLE_PROD)
tx_idstringThe ID of the transaction
statusstringThe status of the transaction (e.g. PENDING, COMPLETE, FAILED)
retry_countnumberThe number of times we've retried sending this transaction
on_chain_id (optional)stringThe blockchain transaction id if the transaction succeeded
error_message (optional)stringThe error message if the transaction failed
user_op_receipt (optional)stringJSON Object of the user operation receipt (if the operation went through on chain)