Skip to content
This repository has been archived by the owner on Jan 26, 2024. It is now read-only.

Latest commit

 

History

History
252 lines (228 loc) · 5.31 KB

retrieve-contract-storage.md

File metadata and controls

252 lines (228 loc) · 5.31 KB

HOW TO RETRIEVE SMART CONTRACT STORAGE

To retrieve the whole storage

Use the API: /api/teozs_node/storage/{smart_contract_address} without the request body parameter dataFields

To retrieve partial of storage

1. Receive simple data, the whole map or big map id

  • dataFields elements type is string which leads to the data

Example:

Storage

{
  "LPMembers": [],
  "balances": {
    "type": "big_map",
    "value": "19134"
  },
  "investors": [
    "tz1KgzuPmBDjmhJg5sC6zB2jLKhs7qPykyau",
    "tz1PN2Qzw1sgoeqZmnXaqwAcuRn6vx2Ah7uN",
    "tz1YNyxeEZuZsTKgFcKeNnaXB1pdCZk9j9rN",
    "tz1dNmUYy1St1mSNX5bWEkAYnCTqL36sAQiW",
    "tz1gWSmbRuEgzMdAdVNKhTKmBtcRayHMHSQQ"
  ],
  "lambdaEntryPoints": {
    "type": "big_map",
    "value": "19135"
  },
  "lastDivYear": 0,
  "lastNavDate": 1615503600000,
  "nav": {
    "type": "big_map",
    "value": "19136"
  },
  "owner": "KT1SEmXhMJAFV7PKCA9oi1uHkn5H9P75rwNF",
  "paused": false,
  "roles": ["ADVISOR", "ELECTED_INVESTOR", "INVESTOR", "MANAGEMENT_COMPANY"],
  "totalIncome": 132900,
  "totalInvDiv": 103230,
  "totalInvested": 99600,
  "totalLPDiv": 8470,
  "totalSupply": 3000
}

Only get the big map nav, list investors and number totalIncome.

{ "dataFields": ["totalIncome", "investors", "nav"] }

Result

{
  "totalIncome": 132900,
  "investors": [
    "tz1KgzuPmBDjmhJg5sC6zB2jLKhs7qPykyau",
    "tz1PN2Qzw1sgoeqZmnXaqwAcuRn6vx2Ah7uN",
    "tz1YNyxeEZuZsTKgFcKeNnaXB1pdCZk9j9rN",
    "tz1dNmUYy1St1mSNX5bWEkAYnCTqL36sAQiW",
    "tz1gWSmbRuEgzMdAdVNKhTKmBtcRayHMHSQQ"
  ],
  "nav": {
    "type": "big_map",
    "value": "19136"
  }
}

2. Access to map/big map in the storage

  • dataFields elements type is an object whose key is the map name, and value is an array of object. This object contains 2 keys whose name are key (map key) and dataFields (to access the data if map value is an object/map again).

Storage

{
  "accessRequests": {
    "type": "big_map",
    "value": "59822"
  },
  "organizations": {
    "type": "map",
    "size": 2,
    "value": [
      {
        "key": {
          "address": "tz1SCHPVsh2xvNWJSUSqkn3Hf7ri6d3FUjqw",
          "jwtToken": "jwt"
        },
        "value": {
          "datasources": {
            "type": "map",
            "size": 3,
            "value": [
              {
                "key": "datasource4",
                "value": "value4"
              },
              {
                "key": "datasource5",
                "value": "value5"
              },
              {
                "key": "datasource6",
                "value": "value6"
              }
            ]
          },
          "name": "tata",
          "publicKey": "tata public key",
          "publicKeyHash": "tz1SCHPVsh2xvNWJSUSqkn3Hf7ri6d3FUjqw"
        }
      },
      {
        "key": {
          "address": "tz1XByDAXZZVEAb6HPxTBsPPaEbHvtPVXmhK",
          "jwtToken": "jwt"
        },
        "value": {
          "datasources": {
            "type": "map",
            "size": 3,
            "value": [
              {
                "key": "datasource1",
                "value": "value1"
              },
              {
                "key": "datasource2",
                "value": "value2"
              },
              {
                "key": "datasource3",
                "value": "value3"
              }
            ]
          },
          "name": "toto",
          "publicKey": "toto public key",
          "publicKeyHash": "tz1XByDAXZZVEAb6HPxTBsPPaEbHvtPVXmhK"
        }
      }
    ]
  }
}

Example 1: Only get the big map accessRequests with the key { "scopeId": "scope1", "status": "status1" }

{
  "dataFields": [
    {
      "accessRequests": [
        {
          "key": {
            "scopeId": "scope1",
            "status": "status1"
          }
        }
      ]
    }
  ]
}

Result

{
  "accessRequests": [
    {
      "key": {
        "scopeId": "scope1",
        "status": "status1"
      },
      "value": {
        "address": {
          "providerAddress": "tz1SCHPVsh2xvNWJSUSqkn3Hf7ri6d3FUjqw",
          "requesterAddress": "tz1XByDAXZZVEAb6HPxTBsPPaEbHvtPVXmhK"
        },
        "createdAt": "2019-10-22T16:27:54.000Z",
        "jwtToken": "jwtToken"
      }
    }
  ]
}

Example 2: Only get the value of the key datasource4 in datasources map, of the key { "address": "tz1SCHPVsh2xvNWJSUSqkn3Hf7ri6d3FUjqw", "jwtToken": "jwt" } and name field in organizations map of the storage

{
  "dataFields": [
    {
      "organizations": [
        {
          "key": {
            "address": "tz1SCHPVsh2xvNWJSUSqkn3Hf7ri6d3FUjqw",
            "jwtToken": "jwt"
          },
          "dataFields": [
            "name",
            {
              "datasources": [
                {
                  "key": "datasource4"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

Result

{
  "organizations": [
    {
      "key": {
        "address": "tz1SCHPVsh2xvNWJSUSqkn3Hf7ri6d3FUjqw",
        "jwtToken": "jwt"
      },
      "value": {
        "name": "tata",
        "datasources": [
          {
            "key": "datasource4",
            "value": "value4"
          }
        ]
      }
    }
  ]
}