Smart Contract
What is a smart contract?
A smart contract is a self-executing program that automates the actions.
This endpoint can be used to call the read functions on a smart contract, eg. owner
. This search endpoint can be used to call any custom read functions on your smart contract.
This guide is designed to walk you through the steps needed to do a smart contract query.
There are 2 approaches to performing a search on a smart contract. Option 1 (using Overledger V3) is the recommended approach.
Prerequisites
- Create an account and generate your application's API keys
Create an account on Quant Connect. Then, register your application to generate API keys to authorise your requests on Overledger APIs.
- Generate a Bearer Token You must generate an authentication token in order to use the Overledger APIs.
Option 1 (Recommended)
Call the endpoint
As an example, if you want to call the balanceOf
function on the smart contract 0xbe7e4990ac053b79862e264398cc2637174af12e
, make a call to the endpoint /api/smart-contracts/read
, with the following request body:
curl --request POST \
--url https://api.sandbox.overledger.io/api/smart-contracts/read \
--header 'API-Version: 3.0.0' \
--header 'Authorization: Bearer token' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"functionName": "balanceOf",
"smartContractId": "0xbe7e4990ac053b79862e264398cc2637174af12e",
"outputParameters": [
{
"type": "uint256"
}
],
"inputParameters": [
{
"value": {
"newKey": "0xF9cd6C86992Fce1481dBc4bDB7E1b101c1e8cEE2"
},
"type": "address"
}
]
}
'
Replace the input and output parameters with what is expected by the function. In this case function
balanceOf
expects an address as input. It gives back the balance in uint256 format, hence its set as the type under output parameter type.
If the request is successful, you will receive a response with the smart contract details, as below:
{
"location": {
"technology": "ethereum",
"network": "ethereum sepolia testnet"
},
"smartContractId": "0xbe7e4990ac053b79862e264398cc2637174af12e",
"functionName": "balanceOf",
"outputParameters": [
{
"value": 0,
"type": "uint256"
}
]
}
In the above response, outputParameters.value
represents the balance of the address.
Option 2
Call the endpoint
As an example, if you want to call the owner
function on the smart contract0xbe7e4990ac053b79862e264398cc2637174af12e
, make a call to the endpoint /v2/autoexecution/search/smartcontract
, with the following request body:
curl --request POST \
--url https://api.sandbox.overledger.io/v2/autoexecution/search/smartcontract \
--header 'Authorization: Bearer token' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"location": {
"technology": "Ethereum",
"network": "ethereum sepolia Testnet"
},
"requestDetails": {
"destination": [
{
"smartContract": {
"smartContractId": "0xbe7e4990ac053b79862e264398cc2637174af12e",
"function": {
"name": "owner",
"inputParameters": [
],
"outputParameters": [
{
"type": "address"
}
]
}
}
}
]
}
}
Note: Replace the input and output parameters with what is expected by the function. In this case function owner
does not expect any input parameters. It gives back an address as a response, hence it's part of the output parameters.
If the request is successful, you will receive a response with the smart contract details, as below:
{
"preparationSmartContractSearchResponse": {
"requestId": "fbb5866a-c091-41a9-add8-3d5d2302edc5",
"gatewayFee": {
"amount": "0",
"unit": "QNT"
}
},
"executionSmartContractSearchResponse": {
"location": {
"technology": "Ethereum",
"network": "ethereum sepolia testnet"
},
"smartContract": {
"smartContractId": "0xbe7e4990ac053b79862e264398cc2637174af12e",
"function": {
"functionId": "0x8da5cb5b",
"name": "owner",
"inputParameters": [],
"outputParameters": [
{
"value": "0x6e32da6edbea6b4c794cd50c830753f9b134def0",
"type": "address"
}
]
}
}
}
}
In the above response, outputParameters.value
represents the owner of the smart contract.
Updated 6 months ago