tera/Doc/Rus/API2.md

305 lines
10 KiB
Markdown
Raw Normal View History

2019-02-15 15:56:11 +00:00
# API v2 (для бирж и обменников)
2019-02-18 13:29:55 +00:00
Работает с версии обновления 0.895
2019-02-15 15:56:11 +00:00
2019-02-16 17:08:41 +00:00
API предназначено для облегчения написания сторонних приложений. На стороне сервера выполняется криптография и операции POW. Поэтому оно не рекомендуется для публичного доступа, т.к. нет защиты от DDOS атак. Используйте его, если приложения такие как сервер биржи находятся в одной приватной сети.
2019-02-15 15:56:11 +00:00
Данный 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 - запрос содержит ошибки или результат не возможно получить (например нет такого счета),
2019-02-16 17:08:41 +00:00
* 1 или >1 - успешное выполнение запроса (в случае запросов создания новых счетов и режимом Wait:1 здесь возвращается номер созданного счета)
2019-02-15 15:56:11 +00:00
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 байт
2019-02-16 17:08:41 +00:00
* PrivKey - приватный ключ в hex-формате
* Wait - если установлена цифра 1, то ответ на запрос не возвращается до тех пор пока транзакция не будет записана в блокчейн (время ответа на запрос увеличивается до 18 сек)
2019-02-15 15:56:11 +00:00
example:
```js
http://127.0.0.1/api/v2/CreateAccount
{
2019-02-16 17:08:41 +00:00
"Name": "PrivTest02",
"PrivKey": "A2D45610FE8AC931F32480BFE3E78D26E45B0A4F88045D6518263DA12FA9C033",
"Wait":1
2019-02-15 15:56:11 +00:00
}
```
return:
```js
2019-02-16 17:08:41 +00:00
{
"result": 190552,
"text": "Add to blockchain",
"TxID": "04711036904F1F2DDF49CC7B2F010000",
"BlockNum": 19889100
}
2019-02-15 15:56:11 +00:00
```
2019-02-16 17:08:41 +00:00
result - возвращает номер созданного аккаунта
2019-02-15 15:56:11 +00:00
## Send
3)**/api/v2/Send** - отправка монет с одного счета на другой (требуется указать приватный ключ счета отправителя)
#### Параметры:
* FromID - номер счета отправителя
* FromPrivKey - приватный ключ отправителя в hex-формате
* ToID - номер счета получателя, число или публичный ключ в hex-формате (в этом случае будет создан новый счет с именем заданным в первой строке описания платежа и в качестве оплаты создания счета спишется 10 Тера)
* Amount - сумма, число с плавающей точкой или объект в формате {SumCOIN,SumCENT}
* Description - описание платежка (необязательный параметр)
2019-02-16 17:08:41 +00:00
* Wait - если установлена цифра 1, то ответ на запрос не возвращается до тех пор пока транзакция не будет записана в блокчейн (время ответа на запрос увеличивается до 8 сек)
2019-02-15 15:56:11 +00:00
example1:
```js
http://127.0.0.1/api/v2/Send
{
"FromID": 190085,
"FromPrivKey": "A2D45610FE8AC931F32480BFE3E78D26E45B0A4F88045D6518263DA12FA9C033",
"ToID":190165,
"Amount":10.5,
2019-02-16 17:08:41 +00:00
"Description":"Тест",
"Wait":1
2019-02-15 15:56:11 +00:00
}
```
2019-02-16 17:08:41 +00:00
return:
```js
{
"result": 1,
"text": "Add to blockchain",
"TxID": "C08A0C18C1ABF4062B149B7C2F010000",
"BlockNum": 19889307
}
```
2019-02-15 15:56:11 +00:00
example2 (создание нового счета):
```js
http://127.0.0.1/api/v2/Send
2019-02-16 17:08:41 +00:00
2019-02-15 15:56:11 +00:00
{
2019-02-16 17:08:41 +00:00
"FromID": 190059,
2019-02-15 15:56:11 +00:00
"FromPrivKey": "A2D45610FE8AC931F32480BFE3E78D26E45B0A4F88045D6518263DA12FA9C033",
2019-02-16 17:08:41 +00:00
"ToID22":190516,
2019-02-15 15:56:11 +00:00
"ToID":"0240EDF5ECB25D886FD58DB92A53914FAC975078C1C2EDD1AC292B70C7BC13461F",
"Amount":10,
2019-02-16 17:08:41 +00:00
"Description":"New account",
"Wait":1
2019-02-15 15:56:11 +00:00
}
```
return:
```js
2019-02-16 17:08:41 +00:00
{
"result": 190551,
"text": "Add to blockchain",
"TxID": "9DD4869C4515B2A3340E887A2F010000",
"BlockNum": 19888776
}
2019-02-15 15:56:11 +00:00
```
2019-02-16 17:08:41 +00:00
result - возвращает номер созданного аккаунта
2019-02-15 15:56:11 +00:00
## 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-формате
2019-02-18 13:29:55 +00:00
альтернативный вариант задания параметров:
* BlockNum - номер блока
* TrNum - номер транзакции в блоке
2019-02-16 17:08:41 +00:00
example1:
2019-02-15 15:56:11 +00:00
```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",
2019-02-18 13:29:55 +00:00
"result": 1,
"BlockNum": 19781201,
"TrNum": 0
2019-02-15 15:56:11 +00:00
}
```
2019-02-16 17:08:41 +00:00
example2:
```js
http://127.0.0.1/api/v2/GetTransaction
{
"TxID": "04711036904F1F2DDF49CC7B2F010000"
}
```
return:
```js
{
"Type": 100,
"Currency": 0,
"PubKey": "0240EDF5ECB25D886FD58DB92A53914FAC975078C1C2EDD1AC292B70C7BC13461F",
"Name": "PrivTest02",
"Adviser": 0,
"Smart": 0,
"Reserve": "000000",
2019-02-18 13:29:55 +00:00
"result": 190552,
"BlockNum": 19889100,
"TrNum": 1
2019-02-16 17:08:41 +00:00
}
2019-02-18 13:29:55 +00:00
2019-02-16 17:08:41 +00:00
```
2019-02-18 13:29:55 +00:00
2019-02-15 15:56:11 +00:00
## GetHistoryTransactions
6)**/api/v2/GetHistoryTransactions** - получить историю транзакций счета
2019-02-18 13:29:55 +00:00
#### Параметры:
* AccountID - номер счета (аккаунта)
* Count - максимальное число возвращаемых строк - глубина истории (по умолчанию 100)
вариант задания параметров для организации постраничной навигации:
* NextPos - номер ид строки истории (это значение берется из последней строки предыдущего результата)
* Count - число возвращаемых строк
2019-02-15 15:56:11 +00:00
2019-02-18 13:29:55 +00:00
Дополнительные параметры:
* GetTxID - если стоит 1 - то возвращается в поле TxID возвращается ID транзакции в 16 формате
2019-02-15 15:56:11 +00:00
2019-02-18 13:29:55 +00:00
example1:
```js
http://127.0.0.1/api/v2/GetHistoryTransactions
{
"AccountID": 190480
}
```
return:
```js
{
"result": 1,
"History": [
{
"Type": 1,
"BlockNum": 19994502,
"TrNum": 0,
"Pos": 498190,
"NextPos": 439090,
"Direct": "+",
"CorrID": 190478,
"SumCOIN": 1,
"SumCENT": 0
},
{
"Type": 1,
"BlockNum": 19993514,
"TrNum": 0,
"Pos": 439090,
"NextPos": 0,
"Direct": "+",
"CorrID": 190478,
"SumCOIN": 1,
"SumCENT": 0
}
],
"Tail": {
"NextPos": 498190,
"Reserv": {
"type": "Buffer",
"data": [
0,
0
]
},
"Num": 190480
}
}
```
example2:
```js
http://127.0.0.1/api/v2/GetHistoryTransactions
{
"NextPos": 439090
}
```