Как устроена платформа

REST API: методы сервиса подготовки данных

https://img.shields.io/badge/auth-required-orange.svg

Сервису подготовки данных доступны следующие группы методов:

Группа методов Assets

Методы группы Assets предназначены для получения данных о наборах токенов (ассетах).

GET /assets

Метод предназначен для получения списка доступных в блокчейне ассетов. Список выводится в виде транзакций об эмиссии соответствующих ассетов.

Пример ответа:

GET /assets:
[
  {
    "index": 0,
    "id": "string",
    "name": "string",
    "description": "string",
    "reissuable": true,
    "quantity": 0,
    "decimals": 0
  }
]

POST /assets/count

Метод возвращает количество доступных в блокчейне ассетов.

Пример ответа:

POST /assets/count:
{
  "count": 0
}

GET /assets/{id}

Метод возвращает информацию о доступном наборе токенов по его {id}.

В ответе метода выводятся следующие данные:

  • index – порядковый номер ассета;

  • id – идентификатор ассета;

  • name – имя ассета;

  • description – описание ассета;

  • reissuable – перевыпускаемость ассета;

  • quantity – количество токенов в ассете;

  • decimals – количество разрядов после запятой у используемого токена (WEST – 8)

Пример ответа:

GET /assets/{id}:
{
  "index": 14,
  "id": "12nx0qnhjd83",
  "name": "Demo asset",
  "description": "Demo asset",
  "reissuable": true,
  "quantity": 400,
  "decimals": 8
}

Группа методов Blocks

GET /blocks/at/{height}

Метод возвращает содержимое блока на высоте height.

В ответе метода возвращаются следующие параметры:

  • reference – хэш-сумма блока;

  • blocksize – размер блока;

  • featuresфункциональные возможности, запущенные на момент создания блока;

  • signature – подпись блока;

  • fee – комиссия за транзакции, включенные в блок;

  • generator – адрес создателя блока;

  • transactionCount – количество транзакций, включенных в блок;

  • transactions – массив с телами транзакций, включенных в блок;

  • version – версия блока;

  • poa-consensus.overall-skipped-rounds – количество пропущенных раундов майнинга, при использовании алгоритма консенсуса PoA;

  • timestamp – временная метка создания блока в формате Unix Timestamp (в миллисекундах);

  • height – высота создания блока.

Пример ответа:

GET /blocks/at/{height}:
{
  "reference": "hT5RcPT4jDVoNspfZkNhKqfGuMbrizjpG4vmPecVfWgWaGMoAn5hgPBJpC9696TL8wGDKJzkwewiqe8m26C4aPd",
  "blocksize": 226,
  "features": [],
  "signature": "5GAM7jfQScw4g3g7PCNNtz5xG3JzjJnW4Ap2soThirSx1AmUQHQMjz8VMtkFEzK7L447ouKHfj2gMvZyP5u94Rps",
  "fee": 0,
  "generator": "3Mv79dyPX2cvLtRXn1MDDWiCZMBrkw9d97c",
  "transactionCount": 0,
  "transactions": [],
  "version": 3,
  "poa-consensus": {
    "overall-skipped-rounds": 1065423
  },
  "timestamp": 1615816767694,
  "height": 1826
}

Группа методов Contracts

Методы группы Contracts предназначены для получения информации о смарт-контрактах блокчейна.

GET /contracts

Метод возвращает информацию по всем смарт-контрактам, загруженным в сеть. Для каждого смарт-контракта в ответе возвращаются следующие параметры:

  • contractId – идентификатор смарт-контракта;

  • image – имя Docker-образа смарт-контракта, либо его абсолютный путь в репозитории;

  • imageHash – хэш-сумма смарт-контракта;

  • version – версия смарт-контракта;

  • active – статус смарт-контракта на момент отправки запроса: true – запущен, false – не запущен.

Пример ответа для одного смарт-контракта:

GET /contracts:
[
  {
    "contractId": "dmLT1ippM7tmfSC8u9P4wU6sBgHXGYy6JYxCq1CCh8i",
    "image": "registry.wvservices.com/wv-sc/may14_1:latest",
    "imageHash": "ff9b8af966b4c84e66d3847a514e65f55b2c1f63afcd8b708b9948a814cb8957",
    "version": 1,
    "active": false
   }
 ]

GET /contracts/count

Метод возвращает количество смарт-контрактов в блокчейне, соответствующих заданным условиям и фильтрам.

Пример ответа:

GET /contracts/count:
{
  "count": 19
}

GET /contracts/info/{contractId}

Метод возвращает информацию о смарт-контракте по его идентификатору {contractId}.

Пример ответа:

GET /contracts/id/{id}:
{
  "creator": "9yxe6Kw9eiCD2mTNvKdrcQ1EoQqzMy7p52USZftBtQhp",
  "contractId": "7zcrHAFZmcZ3EGs7JWL5jCrbizCppu2rcpDDuChNTF6K",
  "image": "registry.wvservices.com/waves-enterprise-public/east-contract:v1.2",
  "imageHash": "baef03e82e4ecc723b85876111cbe25ed390ad7c62169e8a3ba142b6a2ad3000",
  "version": 5,
  "active": true,
  "validationPolicy": {
     "type": "majority_with_one_of",
     "addresses": [
       "3NyJPnLBdEQiPdHoHHgQAYX6UVj6GKMxgMx",
       "3NmHrYoC8S2SUosy6UJp47bBwq2Cr2X6Yq1",
       "3NrKDuHjUG7vSCiMMD259msBKcPRm4MvaJu"
     ]
  },
  "apiVersion": "1.0"
}

GET /contracts/id/{id}/versions

Метод возвращает историю версий смарт-контракта с заданным {id}.

Пример ответа для одной версии:

GET /contracts/id/{id}/versions:
[
  {
    "version": 0,
    "image": "string",
    "imageHash": "string",
    "timestamp": "string"
  }
]

GET /contacts/history/{id}/key/{key}

Возвращает историю изменений ключа {key} смарт-контракта по его {id}.

Пример ответа для одного ключа:

GET /contacts/history/{id}/key/{key}:
{
  "total": 777,
  "data": [
    {
      "key": "some_key",
      "type": "integer",
      "value": "777",
      "timestamp": 1559347200000,
      "height": 14024
    }
  ]
}

GET /contracts/senders-count

Метод возвращает количество уникальных участников, отправляющих транзакции 104 на вызов смарт-контрактов.

Пример ответа:

GET /contracts/senders-count:
{
  "count": 777
}

GET /contracts/calls

Возвращает список транзакций 104 на вызов смарт-контрактов с их параметрами и результатами.

Пример ответа для одной транзакции:

GET /contracts/calls:
[
  {
    "id": "string",
    "type": 0,
    "height": 0,
    "fee": 0,
    "sender": "string",
    "senderPublicKey": "string",
    "signature": "string",
    "timestamp": 0,
    "version": 0,
    "contract_id": "string",
    "contract_name": "string",
    "contract_version": "string",
    "image": "string",
    "fee_asset": "string",
    "finished": "string",
    "params": [
      {
        "tx_id": "string",
        "param_key": "string",
        "param_type": "string",
        "param_value_integer": 0,
        "param_value_boolean": true,
        "param_value_binary": "string",
        "param_value_string": "string",
        "position_in_tx": 0,
        "contract_id": "string",
        "sender": "string"
      }
    ],
    "results": [
      {
        "tx_id": "string",
        "result_key": "string",
        "result_type": "string",
        "result_value_integer": 0,
        "result_value_boolean": true,
        "result_value_binary": "string",
        "result_value_string": "string",
        "position_in_tx": 0,
        "contract_id": "string",
        "time_stamp": "string"
      }
    ]
  }
]

Группа методов Privacy

Методы группы Privacy предназначены для получения информации о группах доступа к конфиденциальным данным.

GET /privacy/groups

Метод возвращает список групп доступа в блокчейне.

Пример ответа для одной группы доступа:

GET /privacy/groups:
[
  {
    "id": "string",
    "name": 0,
    "description": "string",
    "createdAt": "string"
  }
]

GET /privacy/groups/count

Метод возвращает количество групп доступа в блокчейне.

Пример ответа:

GET /privacy/groups/count:
{
  "count": 2
}

GET /privacy/groups/{address}

Метод возвращает список групп доступа, в которые входит заданный адрес {address}.

Пример ответа для одной группы доступа:

GET /privacy/groups/{address}:
[
  {
    "id": "string",
    "name": 0,
    "description": "string",
    "createdAt": "string"
  }
]

GET /privacy/groups/by-recipient/{address}

Метод возвращает список групп доступа, в которых заданный {address} фигурирует как получатель данных.

Пример ответа для одной группы доступа:

GET /privacy/groups/by-recipient/{address}:
[
  {
    "id": "string",
    "name": 0,
    "description": "string",
    "createdAt": "string"
  }
]

GET /privacy/groups/{address}/count

Метод возвращает количество групп доступа, в которые входит заданный {address}.

Пример ответа:

GET /privacy/groups/{address}/count:
{
  "count": 1
}

GET /privacy/groups/id/{id}

Метод возвращает информацию о группе доступа по ее идентификатору {id}.

Пример ответа:

GET /privacy/groups/id/{id}:
{
  "id": "string",
  "name": 0,
  "description": "string",
  "createdAt": "string"
}

GET /privacy/groups/id/{id}/history

Метод возвращает историю изменений группы доступа по ее {id}. История изменений возвращается в виде списка отправленных транзакций 112-114 с их описанием.

Пример ответа для одной транзакции:

GET /privacy/groups/id/{id}/history:
{
  "id": "string",
  "name": 0,
  "description": "string",
  "createdAt": "string"
}

GET /privacy/groups/id/{id}/history/count

Метод возвращает количество отправленных транзакций 112-114 для внесения изменений в группу доступа с указанным {id}.

Пример ответа:

GET /privacy/groups/id/{id}/history/count:
{
  "count": 0
}

GET /privacy/nodes

Метод возвращает список доступных нод в блокчейне.

Пример ответа для одной ноды:

GET /privacy/nodes:
[
  {
    "id": "string",
    "name": 0,
    "description": "string",
    "createdAt": "string"
  }
]

GET /privacy/nodes/count

Метод возвращает количество доступных нод в блокчейне.

Пример ответа:

GET /privacy/nodes/count:
{
  "count": 0
}

GET /privacy/nodes/publicKey/{targetPublicKey}

Метод возвращает информацию о ноде по ее публичному ключу {targetPublicKey}.

Пример ответа:

GET /privacy/nodes/publicKey/{targetPublicKey}:
[
  {
    "id": "string",
    "name": 0,
    "description": "string",
    "createdAt": "string"
  }
]

GET /privacy/nodes/address/{address}

Метод возвращает информацию о ноде по ее адресу {address}.

Пример ответа:

GET /privacy/nodes/address/{address}:
[
  {
    "id": "string",
    "name": 0,
    "description": "string",
    "createdAt": "string"
  }
]

Группа методов Transactions

Методы группы Transactions предназначены для получения информации о транзакциях в блокчейне.

GET /transactions

Метод возвращает список транзакций, соответствующий условиям поискового запроса и применённым фильтрам.

Важно

За один запрос через метод GET /transactions возвращается не более 500 транзакций.

Пример ответа для одной транзакции:

GET /transactions:
[
 {
    "id": "string",
    "type": 0,
    "height": 0,
    "fee": 0,
    "sender": "string",
    "senderPublicKey": "string",
    "signature": "string",
    "timestamp": 0,
    "version": 0
 }

GET /transactions/count

Метод возвращает количество транзакций, соответствующих условиям поискового запроса и применённым фильтрам.

Пример ответа:

GET /transactions/count:
{
"count": "116"
}

GET /transactions/{id}

Метод возвращает транзакцию по идентификатору {id}.

Пример ответа:

GET /transactions/{id}:
{
"id": "string",
"type": 0,
"height": 0,
"fee": 0,
"sender": "string",
"senderPublicKey": "string",
"signature": "string",
"timestamp": 0,
"version": 0
}

Группа методов Users

Методы группы Users предназначены для получения информации об участниках сети.

GET /users

Возвращает список участников, соответствующий условиям поискового запроса и применённым фильтрам.

Пример ответа для одного участника:

GET /users:
[
  {
    "address": "string",
    "aliases": [
      "string"
    ],
    "registration_date": "string",
    "permissions": [
      "string"
    ]
  }
]

GET /users/count

Метод возвращает количество участников, удовлетворяющих установленным в запросе фильтрам.

Пример ответа для одного участника:

GET /users/count:
{
  "count": 1198
}

GET /users/{userAddressOrAlias}

Метод возвращает информацию об участнике по его адресу или алиасу.

Пример ответа:

GET /users/{userAddressOrAlias}:
{
  "address": "string",
  "aliases": [
    "string"
  ],
  "registration_date": "string",
  "permissions": [
    "string"
  ]
}

GET /users/contract-id/{contractId}

Метод возвращает список участников, когда-либо вызывавших смарт-контракт с указанным {contractId}.

Пример ответа для одного участника:

GET /users/contract-id/{contractId}:
{
  "address": "string",
  "aliases": [
    "string"
  ],
  "registration_date": "string",
  "permissions": [
    "string"
  ]
}

POST /users/by-addresses

Метод возвращает список участников для заданного набора адресов.

Пример ответа для одного участника:

POST /users/by-addresses:
{
  "address": "string",
  "aliases": [
    "string"
  ],
  "registration_date": "string",
  "permissions": [
    "string"
  ]
}

Методы для получения информации о транзакциях с данными (12)

Данная группа методов вызывается по маршруту /api/v1/txIds/.

GET /api/v1/txIds/{key}

Метод возвращает список идентификаторов транзакций с данными, содержащих указанный ключ {key}.

Пример ответа для одной транзакции:

GET /api/v1/txIds/{key}:
[
  {
    "id": "string"
  }
]

GET /api/v1/txIds/{key}/{value}

Метод возвращает список идентификаторов транзакций с данными, содержащих указанный ключ {key} и значение {value}.

Пример ответа для одной транзакции:

GET /api/v1/txIds/{key}/{value}:
[
  {
        "id": "string"
  }
]

GET /api/v1/txData/{key}

Метод возвращает тела транзакций с данными, содержащих указанный ключ {key}.

Пример ответа для одной транзакции:

GET /api/v1/txData/{key}:
[
  {
    "id": "string",
    "type": "string",
    "height": 0,
    "fee": 0,
    "sender": "string",
    "senderPublicKey": "string",
    "signature": "string",
    "timestamp": 0,
    "version": 0,
    "key": "string",
    "value": "string",
    "position_in_tx": 0
  }
]

GET /api/v1/txData/{key}/{value}

Метод возвращает тела транзакций с данными, содержащих указанные ключ {key} и значение {value}.

Пример ответа для одной транзакции:

GET /api/v1/txData/{key}/{value}:
[
  {
    "id": "string",
    "type": "string",
    "height": 0,
    "fee": 0,
    "sender": "string",
    "senderPublicKey": "string",
    "signature": "string",
    "timestamp": 0,
    "version": 0,
    "key": "string",
    "value": "string",
    "position_in_tx": 0
  }
]

Группа методов Leasing

GET /leasing/calc

Метод возвращает сумму выплат за лизинг токенов в указанном интервале высот блоков.

Пример ответа:

GET /leasing/calc:
{
  "payouts": [
    {
      "leaser": "3P1EiJnPxFxGyhN9sucXfB2rhQ1ws4cmuS5",
      "payout": 234689
    }
  ],
  "totalSum": 4400000,
  "totalBlocks": 1600
}

Группа методов Stats

Методы группы Stats предназначены для получения статистических данных и мониторинга блокчейна.

GET /stats/transactions

Метод возвращает информацию о проведенных транзакциях за указанный временной промежуток.

Пример ответа:

GET /stats/transactions:
{
  "aggregation": "day",
  "data": [
    {
      "date": "2020-03-01T00:00:00.000Z",
      "transactions": [
        {
          "type": 104,
          "count": 100
        }
      ]
    }
  ]
}

GET /stats/contracts

Метод возвращает информацию о транзакциях 104 за указанный временной промежуток.

Пример ответа:

GET /stats/contracts:
{
  "aggregation": "day",
  "data": [
    {
      "date": "2020-03-01T00:00:00.000Z",
      "transactions": [
        {
          "type": 104,
          "count": 100
        }
      ]
    }
  ]
}

GET /stats/tokens

Метод возвращает информацию об обороте токенов в блокчейне за указанный временной промежуток.

Пример ответа:

GET /stats/tokens:
{
  "aggregation": "day",
  "data": [
    {
      "date": "2020-03-01T00:00:00.000Z",
      "sum": "12000.001"
    }
  ]
}

GET /stats/addresses-active

Метод возвращает адреса, которые были активными в указанный временной промежуток.

Пример ответа:

GET /stats/addresses-active:
{
  "aggregation": "day",
  "data": [
    {
      "date": "2020-03-01T00:00:00.000Z",
      "senders": "12",
      "recipients": "12"
    }
  ]
}

GET /stats/addresses-top

Метод возвращает адреса, которые были наиболее активными отправителями или получателями в указанный временной промежуток.

Пример ответа:

GET /stats/addresses-top:
{
  "aggregation": "day",
  "data": [
    {
      "date": "2020-03-01T00:00:00.000Z",
      "senders": "12",
      "recipients": "12"
    }
  ]
}

GET /stats/nodes-top

Метод возвращает адреса нод, которые создали наибольшее количество блоков в указанный временной промежуток.

Пример ответа:

GET /stats/nodes-top:
{
  "limit": "10",
  "data": [
    {
      "generator": "3NdPsjaFC7NeioGVF6X4J5A8FVaxdtKvAba",
      "count": "120",
      "node_name": "Genesis Node #5"
    }
  ]
}

GET /stats/contract-calls

Метод возвращает список смарт-контрактов, вызванных наибольшее количество раз в указанный временной промежуток.

Пример ответа:

GET /stats/contract-calls:
{
  "limit": "5",
  "data": [
    {
      "contract_id": "Cm9MDf7vpETuzUCsr1n2MVHsEGk4rz3aJp1Ua2UbWBq1",
      "count": "120",
      "contract_name": "oracle_contract",
      "last_call": "60.321"
    }
  ]
}

GET /stats/contract-last-calls

Метод возвращает список последних вызовов смарт-контрактов по их id и названию.

Пример ответа:

GET /stats/contract-last-calls:
{
  "limit": "5",
  "data": [
    {
      "contract_id": "Cm9MDf7vpETuzUCsr1n2MVHsEGk4rz3aJp1Ua2UbWBq1",
      "contract_name": "oracle_contract",
      "last_call": "60.321"
    }
  ]
}

GET /stats/contract-types

Метод возвращает список смарт-контрактов блокчейна по именам образов и их хэшам.

Пример ответа:

GET /stats/contract-types:
{
  "limit": "5",
  "data": [
    {
      "id": "Cm9MDf7vpETuzUCsr1n2MVHsEGk4rz3aJp1Ua2UbWBq1",
      "image": "registry.wvservices.com/waves-enterprise-public/oracle-contract:v0.1",
      "image_hash": "936f10207dee466d051fe09669d5688e817d7cdd81990a7e99f71c1f2546a660",
      "count": "60",
      "sum": "6000"
    }
  ]
}

GET /stats/monitoring

Метод возвращает общую информацию о сети.

Пример ответа:

GET /stats/monitoring:
{
  "tps": "5",
  "blockAvgSize": "341.391",
  "senders": "50",
  "nodes": "50",
  "blocks": "500000"
}

Группа методов Anchoring

Методы группы Anchoring предназначены для получения информации о раундах анкоринга.

GET /anchoring/rounds

Метод возвращает список транзакций, отправленных в раундах анкоринга в соответствии с заданными условиями и фильтрами.

Пример ответа:

GET /anchoring/rounds:
[
  {
    "height": 0,
    "sideChainTxIds": [
      "string"
    ],
    "mainNetTxIds": [
      "string"
    ],
    "status": "string",
    "errorCode": 0
  }
]

GET /anchoring/round/at/{height}

Метод возвращает информацию о раунде анкоринга на указанной высоте блоков {height}.

Пример ответа:

GET /anchoring/round/at/{height}:
{
  "height": 0,
  "sideChainTxIds": [
    "string"
  ],
  "mainNetTxIds": [
    "string"
  ],
  "status": "string",
  "errorCode": 0
}

GET /anchoring/info

Метод возвращает информацию об анкоринге в блокчейне.

Пример ответа:

GET /anchoring/info:
{
  "height": 0,
  "sideChainTxIds": [
    "string"
  ],
  "mainNetTxIds": [
    "string"
  ],
  "status": "string",
  "errorCode": 0
}

Вспомогательные методы сервиса подготовки данных

GET /info

Метод возвращает информацию об используемом сервисе подготовки данных.

Пример ответа:

GET /info:
{
  "version": "string",
  "buildId": "string",
  "gitCommit": "string"
}

GET /status

Метод возвращает информацию о состоянии сервиса подготовки данных.

Пример ответа:

GET /status:
{
  "status": "string"
}
Смотрите также