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
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
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