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 TypeValueDescriptionExample Value
Signing-MethodHeaderid:valueid: This is the ID of the signing method
value: This is the value of the signing method
756ae7a7-3713-43ee-9936-0dff50306488:123456
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": []
    }
}