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
POST /api/transactions/execute
Parameter | Param Type | Value | Description | Example Value |
---|---|---|---|---|
Signing-Method | Header | id:value | id : This is the ID of the signing methodvalue : 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)
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": []
}
}
Updated 6 months ago