177 lines
6.3 KiB
Markdown
177 lines
6.3 KiB
Markdown
|
# API v2 (для бирж и обменников)
|
|||
|
|
|||
|
API предназначено для облегчения написания сторонних приложений. На стороне сервера выполняется криптография и операции POW. Поэтому оно не рекомендуется для публичного доступа, т.к. не защищено от DDOS атак. Используйте его, если приложения такие как сервер биржи находятся в одной приватной сети.
|
|||
|
|
|||
|
Данный API доступен если на ноде запущен http-хостинг и включена константа USE_HARD_API_V2.
|
|||
|
|
|||
|
### Для этого задайте константы:
|
|||
|
* HTTP_HOSTING_PORT:80
|
|||
|
* USE_HARD_API_V2:1
|
|||
|
|
|||
|
Несмотря на то что API разработано для использования в POST запросах, в ограниченном режиме его можно использовать для GET запросов.
|
|||
|
|
|||
|
Формат вызова
|
|||
|
```js
|
|||
|
{{Server}}/api/v2/{{MethodName}}
|
|||
|
```
|
|||
|
|
|||
|
Пример:
|
|||
|
```js
|
|||
|
http://194.1.237.94/api/v2/GenerateKeys
|
|||
|
```
|
|||
|
|
|||
|
В качестве результат возвращается JSON, который содержит обязательное поле result со значением:
|
|||
|
* 0 - запрос содержит ошибки или результат не возможно получить (например нет такого счета),
|
|||
|
* 1 - успешное выполнение запроса
|
|||
|
|
|||
|
text - опциональное поле содержит подробное описание результата
|
|||
|
|
|||
|
Все методы поддерживают параметр Meta, если он задан, то это же значение добавляется в результат запроса. Это бывает полезно для организации собственной маршрутизации запросов, часто применяется в микро-сервисных архитектурах.
|
|||
|
|
|||
|
## GenerateKeys
|
|||
|
|
|||
|
1)**/api/v2/GenerateKeys** - создание пары приватный ключ - публичный ключ
|
|||
|
#### Параметры не обязательны
|
|||
|
|
|||
|
example:
|
|||
|
```js
|
|||
|
http://127.0.0.1/api/v2/GenerateKeys
|
|||
|
```
|
|||
|
return:
|
|||
|
```js
|
|||
|
{
|
|||
|
"result": 1,
|
|||
|
"PrivKey": "65C65BE3F436DE58C64461BDC1BF0E2D8AB06C2C4E92470B1F4CDEADB9B2C3FF",
|
|||
|
"PubKey": "030809551AD9E0E275082C75EC82E9651BF062821EC6DFE31039B0EDE6A2ED26CC"
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
## CreateAccount
|
|||
|
|
|||
|
2)**/api/v2/CreateAccount** - создание нового счета (аккаунта). В Тере бесплатное создание счета возможно только в промежутках из 10 секунд. Платный вариант приведен в примере 2 метода **Send**
|
|||
|
#### Параметры:
|
|||
|
* Name - имя счета до 40 байт
|
|||
|
* PubKey - публичный ключ в hex-формате
|
|||
|
|
|||
|
example:
|
|||
|
```js
|
|||
|
http://127.0.0.1/api/v2/CreateAccount
|
|||
|
{
|
|||
|
"Name": "Hellow, world",
|
|||
|
"PubKey": "0240EDF5ECB25D886FD58DB92A53914FAC975078C1C2EDD1AC292B70C7BC13461F"
|
|||
|
}
|
|||
|
```
|
|||
|
return:
|
|||
|
```js
|
|||
|
{"result":1,"text":"Added to timer","TxID":"DC316BD766AC654E0AF7260F2E010000","BlockNum":19795750}
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
## Send
|
|||
|
|
|||
|
3)**/api/v2/Send** - отправка монет с одного счета на другой (требуется указать приватный ключ счета отправителя)
|
|||
|
#### Параметры:
|
|||
|
* FromID - номер счета отправителя
|
|||
|
* FromPrivKey - приватный ключ отправителя в hex-формате
|
|||
|
* ToID - номер счета получателя, число или публичный ключ в hex-формате (в этом случае будет создан новый счет с именем заданным в первой строке описания платежа и в качестве оплаты создания счета спишется 10 Тера)
|
|||
|
* Amount - сумма, число с плавающей точкой или объект в формате {SumCOIN,SumCENT}
|
|||
|
* Description - описание платежка (необязательный параметр)
|
|||
|
|
|||
|
|
|||
|
example1:
|
|||
|
```js
|
|||
|
http://127.0.0.1/api/v2/Send
|
|||
|
{
|
|||
|
"FromID": 190085,
|
|||
|
"FromPrivKey": "A2D45610FE8AC931F32480BFE3E78D26E45B0A4F88045D6518263DA12FA9C033",
|
|||
|
"ToID":190165,
|
|||
|
"Amount":10.5,
|
|||
|
"Description":"Тест"
|
|||
|
|
|||
|
}
|
|||
|
```
|
|||
|
example2 (создание нового счета):
|
|||
|
```js
|
|||
|
http://127.0.0.1/api/v2/Send
|
|||
|
{
|
|||
|
"FromID": 190085,
|
|||
|
"FromPrivKey": "A2D45610FE8AC931F32480BFE3E78D26E45B0A4F88045D6518263DA12FA9C033",
|
|||
|
"ToID":"0240EDF5ECB25D886FD58DB92A53914FAC975078C1C2EDD1AC292B70C7BC13461F",
|
|||
|
"Amount":10,
|
|||
|
"Description":"New account"
|
|||
|
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
return:
|
|||
|
```js
|
|||
|
{"result":1,"text":"OK","TxID":"BE10810FDE7A1317D9DF51D62D010000","BlockNum":19781201}
|
|||
|
```
|
|||
|
|
|||
|
## GetBalance
|
|||
|
|
|||
|
4)**/api/v2/GetBalance** - получить баланс счета
|
|||
|
#### Параметры:
|
|||
|
* AccountID - номер счета
|
|||
|
|
|||
|
example:
|
|||
|
```js
|
|||
|
http://127.0.0.1/api/v2/GetBalance
|
|||
|
{
|
|||
|
"AccountID": 0
|
|||
|
}
|
|||
|
```
|
|||
|
return:
|
|||
|
```js
|
|||
|
{
|
|||
|
"result": 1,
|
|||
|
"SumCOIN": 580222966,
|
|||
|
"SumCENT": 527313901
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
## GetTransaction
|
|||
|
|
|||
|
5)**/api/v2/GetTransaction** - получить транзакцию (возвращает объект с содержимым транзакции)
|
|||
|
#### Параметры:
|
|||
|
* TxID - ИД транзакции в hex-формате
|
|||
|
|
|||
|
example:
|
|||
|
```js
|
|||
|
http://127.0.0.1/api/v2/GetTransaction
|
|||
|
{
|
|||
|
"TxID": "BE10810FDE7A1317D9DF51D62D010000"
|
|||
|
}
|
|||
|
```
|
|||
|
return:
|
|||
|
```js
|
|||
|
{
|
|||
|
"Type": 111,
|
|||
|
"Version": 3,
|
|||
|
"Reserve": 0,
|
|||
|
"FromID": 190085,
|
|||
|
"To": [
|
|||
|
{
|
|||
|
"PubKey": "",
|
|||
|
"ID": 190165,
|
|||
|
"SumCOIN": 1,
|
|||
|
"SumCENT": 0
|
|||
|
}
|
|||
|
],
|
|||
|
"Description": "New6",
|
|||
|
"OperationID": 41,
|
|||
|
"Body": "",
|
|||
|
"Sign": "8C761F539A6A24427CF810A49140CA1FFBF0F3A48DCF58AEE0DD9E4A4E631E1A1B6DA86ED6E2EF92DBF537270AA02B5EAE3A7C822B3F70628CAD78525ED9E0F7",
|
|||
|
"result": 1
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
## GetHistoryTransactions
|
|||
|
|
|||
|
6)**/api/v2/GetHistoryTransactions** - получить историю транзакций счета
|
|||
|
|
|||
|
#### **TODO**
|
|||
|
|
|||
|
|
|||
|
|