Introduction

Read functions, also known as 'view' functions, retrieve data from the blockchain.

It is also important to note that invoking a read function does not create a transaction, and as a result:

  • No signing is required
  • It does not alter the state of the blockchain
  • It is executed on a single node
  • It does not cost any fees

This guide explains the process of invoking a read smart contract function.

Prerequisites

  • Obtain an authorization token
    You must obtain an authorisation token to interact with Overledger's API and call any endpoint. This token will authenticate your requests and grant you access to the necessary endpoints. Please follow the authentication process provided by Overledger to get your authorisation token.
  • Reading data from a smart contract also requires a contract address, regardless of ownership.

Choose the function to be invoked

List of read APIs

The ERC-20 and ERC-721 standards define specific functions for retrieving data from tokens. These functions are marked as 'external view', indicating they can be called without modifying the blockchain state.

Call the Smart Contract Read endpoint

For details on calling the read smart contract endpoint, please refer to the API reference

Below is a sample request for a smart contract read where we call the function 'balanceOf' to get the balance of a token for a specific user address:

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 '  
{  
  "location": {  
    "technology": "ethereum",  
    "network": "ethereum goerli testnet"  
  },  
  "functionName": "balanceOf",  
  "smartContractId": "0xb0D693d6e0e3A31A55510728Cc815c02F6A3bf64"  
}  
'

Sample response of a smart contract read:

{  
  "location": {  
    "technology": "ethereum",  
    "network": "ethereum goerli testnet"  
  },  
  "functionName": "balanceOf",  
  "smartContractId": "0xdac17f958d2ee523a2206206994597c13d831ec7",  
  "outputParameters": [  
    {  
      "type": "uint256",  
      "value": 1000000  
    }  
  ]  
}