Execute contract call

An endpoint to execute a function on a smart contract (write) on any (supported) blockchain. As a result, a new transaction will be submitted to the network containing the smart contract execution.

๐Ÿšง

This function is only available for EVM-based chains: Ethereum , Polygon , Avalanche and Binance Smart Chain.

Request Endpoint: reference

POST /api/transactions/execute
ParameterParam TypeValueDescription
Signing-MethodHeaderid:valueid: This is the ID of the signing method
value: This is the value of the signing method
ParameterParam TypeDescriptionData TypeMandatory
secretTypeBodyOn which blockchain the contract existsStringโœ…
pincode (Deprecated)BodyThe pincode of the walletStringโŒ
functionNameBodyThe contract function that you want to callStringโœ…
inputsBodyTArray of inputs needed to call the functionArrayโœ…
inputs.typeBodyType of the input parameter (ex. uint256)Stringโœ…
inputs.valueBodyValue of the input parameter. This needs to be passed as a string valueObjectโœ…
chainSpecificFieldsBodyField that contains chain-specific values, see below for examples.Objectโœ…
typeBodyThis will be CONTRACT_EXECUTIONStringโœ…
walletIdBodyId of the wallet that will initiate the txStringโœ…
toBodyDestination Address (contract address)Stringโœ…
valueBodyThe amount you want to transfer toIntegerโœ…
transactionRequestBodyThe transactionRequest objectObjectโœ…

Supported types

address, bool, bytes, bytes1, bytes2, bytes3, bytes4, bytes5, bytes6, bytes7, bytes8, bytes9, bytes10, bytes11, bytes12, bytes13, bytes14, bytes15, bytes16, bytes17, bytes18, bytes19, bytes20, bytes21, bytes22, bytes23, bytes24, bytes25, bytes26, bytes27, bytes28, bytes29, bytes30, bytes31, bytes32, int8, int16, int24, int32, int40, int48, int56, int64, int72, int80, int88, int96, int104, int112, int120, int128, int136, int144, int152, int160, int168, int176, int184, int192, int200, int208, int216, int224, int232, int240, int248, int256, string, uint8, uint16, uint24, uint32, uint40, uint48, uint56, uint64, uint72, uint80, uint88, uint96, uint104, uint112, uint120, uint128, uint136, uint144, uint152, uint160, uint168, uint176, uint184, uint192, uint200, uint208, uint216, uint224, uint232, uint240, uint248, uint256, tuple

For arrays, please provide the type from above followed by square braces ( ex: uint256[] ). The values for an array must be surrounded with square brackets and delimited with "," (ex. [1,2,3]). Byte values must be hex-encoded.

๐Ÿ“˜

๐Ÿง™ The signatures endpoint supports the EIP-712 standard, Ethereum typed structured data hashing and signing. This EIP aims to improve the usability of off-chain message signing for use on-chain.

Examples

1. Execute ERC20 transfer

This example will execute an ERC20 transfer using the direct execution of the smart contract function "transfer". The inputs for this function are: destination (address) and amount (uint265)

POST https://api-wallet.venly.io/api/transactions/execute

Request Body:

{
	"transactionRequest": {

		"type": "CONTRACT_EXECUTION",
		"walletId": "adc4c08a-b8fa-4e4c-z5a2-92c87b80f174",
		"to": "0xdc71b72db51e227e65a45004ab2798d31e8934c9",
		"alias": null,
		"secretType": "ETHEREUM",
		"functionName": "transfer",
		"value": 0,
		"inputs": [{
			"type": "address",
			"value": "0x80cbb6c4342948e5be81987dce8251dbedd69138"
		}, {
			"type": "uint256",
			"value": 73680000
		}],
		"chainSpecificFields": {
			"gasLimit": "300000"
		}
	}
}

Response Body:

{
  "transactionHash" : "0x621f692e386a8bc0c53d36aa793864893106e10f54f63fa9c063e24ad975d907"
}

2. Tuple support

POST https://api-wallet.venly.io/api/transactions/execute

Request Body:

{
    "transactionRequest": {
        "type": "CONTRACT_EXECUTION",
        "secretType": "MATIC",
        "walletId": "355351bd-41ae-41fa-8f36-12675f056759",
        "to": "0xb48d8c9e8783465a548f562cb83e8b84d0525a96",
        "functionName": "setValue",
        "inputs": [
            {
                "type": "tuple",
                "value": [
                    {
                        "type": "address",
                        "value": "0xb48d8c9e8783465a548f562cb83e8b84d0525a96"
                    },
                    {
                        "type": "uint256",
                        "value": "100"
                    }
                ]
            }
        ],
        "outputs": []
    }
}