Мини-приложения в Bastyon
Транзакция Pocketnet версии 2
В новой системе консенсуса транзакции предназначены для гибкого использования. Это означает, что поля могут быть заполнены клиентом в произвольном формате, за исключением определенных полей, которые используются для разрешения конфликтов консенсуса.
Поля верхнего уровня используются для реализации правил консенсуса и будут проверяться на уровне узла. Поля второго уровня (объект p
, Payload
) могут быть заполнены свободно для реализации функциональности приложения.
Для реализации нестандартной логики данные Payload
могут использоваться узлом для индексации дополнительных таблиц. Соглашения о структуре данных должны быть описаны и согласованы с кодом приложения.
Общая структура полей транзакции
{
"s1": <АДРЕС>, # Обязательно
"s2": <ВАРИАНТ>,
"s3": <ВАРИАНТ>,
"s4": <ВАРИАНТ>,
"s5": <ВАРИАНТ>,
"i1": <ВАРИАНТ>,
"p": {
"s1": <ПОЛЬЗОВАТЕЛЬСКОЕ>,
"s2": <ПОЛЬЗОВАТЕЛЬСКОЕ>,
"s3": <ПОЛЬЗОВАТЕЛЬСКОЕ>,
"s4": <ПОЛЬЗОВАТЕЛЬСКОЕ>,
"s5": <ПОЛЬЗОВАТЕЛЬСКОЕ>,
"s6": <ПОЛЬЗОВАТЕЛЬСКОЕ>,
"s7": <ПОЛЬЗОВАТЕЛЬСКОЕ>
}
}
Транзакция приложения
Код OP_RETURN
6d696e69617070
Обязательные элементы Payload
{
"s1": <АДРЕС>, # Обязательно
"s2": <ХЭШ_КОРНЕВОЙ_TX>, # Обязательно для редактирования
"p": {
"s1": "{\"n\":\"Первое приложение\",\"d\":\"Описание первого приложения\",\"t\":[\"тег1\",\"тег2\"]}",
"s2": <УНИКАЛЬНЫЙ_ID_ПРИЛОЖЕНИЯ> # Обязательно
}
}
p.s1
- это JSON-строка со следующими полями:
n
- Название приложения (Используется для индексации поиска)d
- Описание приложения (Используется для индексации поиска)t
- Теги приложения (Используются для фильтрации по тегам)- ... любые другие поля
API
Получение приложений
/rpc/getapps { <аргументы> }
Аргументы:
{
"tags": [1,2,3], // Теги для фильтрации приложений
"search": "Строка для полнотекстового поиска по названию и описанию",
"topHeight": 100, // Верхняя высота блока для начала пагинации
"pageStart": 0, // Номер первой страницы
"pageSize": 10, // Количество приложений на странице
"orderBy": "height", // height | rating
"orderDesc": true, // true | false
}
Пример ответа:
[
{
"hash": "a3c5f9ba693a9d399ab4a3c453dd6ee9d12e1a7ceb001d25622da2a45cb1d723",
"type": 221,
"height": 1051,
"blockHash": "f1885784d513141cecdca4cde5154e382f96e19510033853384a6e42191dff49",
"time": 1720427842,
"s1": "mppcM1GXMoePyLnFXothKHgjtGPo7dFVhe",
"s2": "a3c5f9ba693a9d399ab4a3c453dd6ee9d12e1a7ceb001d25622da2a45cb1d723",
"p": {
"s1": "{\"n\":\"Первое приложение\",\"d\":\"Описание первого приложения\",\"u\":\"first_app.com\",\"e\":\"first_app@first_app.com\"}",
"s2": "first_app"
},
"ad": {
"r": 2
}
}
]
Получение оценок приложения
/rpc/getappscores { <аргументы> }
Аргументы:
{
"app": "a3c5f9ba693a9d399ab4a3c453dd6ee9d12e1a7ceb001d25622da2a45cb1d723", // Хэш транзакции (корневой) приложения
"topHeight": 100, // Верхняя высота блока для начала пагинации
"pageStart": 0, // Номер первой страницы
"pageSize": 10, // Количество оценок на странице
"orderBy": "height",
"orderDesc": true, // true | false
}
Пример ответа:
[
{
"hash": "c9a0fade16e1386e7a39ea344d0ec1c371860c0b838d344883f36a2ad2f91dcf",
"type": 300,
"height": 1053,
"blockHash": "c0469c4f20d8719bf6d53404d8e58805b7c6945a2bd2dc4839b402e615dd3a1a",
"time": 1720427842,
"s1": "mv7NYsv4DgaouV7eTUkmAXz8EP5z9AwF6Q",
"s2": "a3c5f9ba693a9d399ab4a3c453dd6ee9d12e1a7ceb001d25622da2a45cb1d723", // Хэш транзакции приложения
"i1": 5
}
]
Получение комментариев к приложению
/rpc/getappcomments { <аргументы> }
Аргументы:
{
"app": "a3c5f9ba693a9d399ab4a3c453dd6ee9d12e1a7ceb001d25622da2a45cb1d723", // Хэш транзакции (корневой) приложения
"topHeight": 100, // Верхняя высота блока для начала пагинации
"pageStart": 0, // Номер первой страницы
"pageSize": 10, // Количество комментариев на странице
"orderBy": "height",
"orderDesc": true, // true | false
}
Пример ответа:
[
{
"hash": "6dd011619696548051bf266c8170522da8b7becdb87e6edebed4a9cfc9abc9f1",
"type": 204,
"height": 1054,
"blockHash": "a9de4f2b5a1498085049e8e55c3f8e542878b68473db82550a34fb80b44eb311",
"time": 1720427843,
"s1": "mv7NYsv4DgaouV7eTUkmAXz8EP5z9AwF6Q",
"s2": "6dd011619696548051bf266c8170522da8b7becdb87e6edebed4a9cfc9abc9f1", // Хэш корневой транзакции комментария
"s3": "a3c5f9ba693a9d399ab4a3c453dd6ee9d12e1a7ceb001d25622da2a45cb1d723", // Хэш транзакции приложения
"p": {
"s1": "текст комментария"
}
}
]