Execute a 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.

Request Endpoint: reference

HTTP

POST /api/transactions/execute
Parameter
Param Type
Value
Description
Example Value

Signing-Method

Header

id:value

id: This is the ID of the signing method value: This is the value of the signing method

756ae7a7-3713-43ee-9936-0dff50306488:123456

Parameter
Param Type
Description
Data Type
Mandatory

secretType

Body

On which blockchain the contract exists

String

pincode (Deprecated)

Body

The pincode of the wallet

String

functionName

Body

The contract function that you want to call

String

inputs

Body

TArray of inputs needed to call the function

Array

inputs.type

Body

Type of the input parameter (ex. uint256)

String

inputs.value

Body

Value of the input parameter. This needs to be passed as a string value

Object

chainSpecificFields

Body

Field that contains chain-specific values, see below for examples.

Object

type

Body

This will be CONTRACT_EXECUTION

String

walletId

Body

Id of the wallet that will initiate the tx

String

to

Body

Destination Address (contract address)

String

value

Body

The amount you want to transfer to

Integer

transactionRequest

Body

The transactionRequest object

Object

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)

HTTP

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

Request Body:

JSON

{
	"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:

JSON

{
  "transactionHash" : "0x621f692e386a8bc0c53d36aa793864893106e10f54f63fa9c063e24ad975d907"
}

2. Tuple support

HTTP

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

Request Body:

JSON

{
    "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": []
    }
}

Last updated