BastyonBastyon
  • Начало работы

    • Начало работы
    • Руководство по настройке Easy Node
    • Руководство по настройке Full Node
  • Монетизация

    • Руководство по монетизации Bastyon
  • Обзор платформы

    • Обзор платформы
    • Участие в разработке Bastyon
  • Блокчейн-узел

    • Начало работы
    • Исходный код
    • Сборка
    • Использование
    • RPC
  • API

    • Введение
    • Начало работы
    • RPC
    • Мини-приложения
  • Мини-приложения

    • Начало работы
    • Разрешения
    • SDK
  • Barteron

    • API Barteron
  • English
  • Русский
  • Начало работы

    • Начало работы
    • Руководство по настройке Easy Node
    • Руководство по настройке Full Node
  • Монетизация

    • Руководство по монетизации Bastyon
  • Обзор платформы

    • Обзор платформы
    • Участие в разработке Bastyon
  • Блокчейн-узел

    • Начало работы
    • Исходный код
    • Сборка
    • Использование
    • RPC
  • API

    • Введение
    • Начало работы
    • RPC
    • Мини-приложения
  • Мини-приложения

    • Начало работы
    • Разрешения
    • SDK
  • Barteron

    • API Barteron
  • English
  • Русский
  • Приложения

    • /ru/dev/apps/introduction_ru.html
    • /ru/dev/apps/get-started_ru.html
    • Мини-приложения в Bastyon
    • Бастион Бартер (Barteron)

Бастион Бартер (Barteron)

Транзакция Pocketnet версии 2

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

Поля верхнего уровня используются для реализации правил консенсуса и будут проверяться на уровне узла. Поля второго уровня (объект p, Payload) могут быть заполнены свободно для реализации функциональности приложения.

Для реализации нестандартной логики данные Payload могут использоваться узлом для индексации дополнительных таблиц. Соглашения о структуре данных должны быть описаны и согласованы с кодом приложения.

Транзакции Barteron имеют переходную форму перед Transaction v2 и начинают использовать механизмы нового консенсуса и индексации дополнительных данных.

Общая структура полей транзакции

{
  "s1": <ADDRESS>, # Зарезервировано
  "s2": <VARIANT>, # Зарезервировано
  "s3": <VARIANT>, # Зарезервировано
  "s4": <VARIANT>, # Зарезервировано
  "s5": <VARIANT>, # Зарезервировано
  "i1": <VARIANT>, # Зарезервировано
  "p": {
    "s1": <CUSTOM>,
    "s2": <CUSTOM>,
    "s3": <CUSTOM>,
    "s4": <CUSTOM>,
    "s5": <CUSTOM>,
    "s6": <CUSTOM>,
    "s7": <CUSTOM>
  }
}

Аккаунт Barteron

Код OP_RETURN

6272746163636f756e74

Обязательные элементы payload:

{
  "p": {
    "s4": {
      // Разрешенные фиксированные теги аккаунта для бартера
      "a": [
        <TAG>,
        <TAG>,
        ...
      ],
      "g": <GEOHASH>,
      "r": <RADIUS>
    }
  }
}

Предложение Barteron

Код OP_RETURN

6272746f66666572

Обязательные элементы payload:

{
  "p": {
    "s1": "язык",
    "s2": "заголовок",
    "s3": "описание",
    "s4": {
      // Общий тег предложения
      "t": <TAG>,
      // Разрешенные теги предложения для бартера
      "a": [
        <TAG>,
        <TAG>,
        ...
      ],
      "c": <CONDITION>
    },
    "s5": [
      "url_изображения_1",
      "url_изображения_2"
    ],
    "s6": "геохеш локации",
    "s7": <не_используется>,
    "i1": <цена>
  }
}

API Barteron

Получение транзакций аккаунтов

> /rpc/getbarteronaccounts [ <адрес1>, <адрес2>, ... ]
{
  "result": "success",
    "data": [
      {
        "hash": "d574b6389d91c42b37cd8bc5ec257ceb803986ad38ebb83cf7fdabee34fe9af7",
        "type": 104,
        "height": 1063,
        "blockHash": "031e4da9305a5d9e8269155a9ad2586c4945bf560c89c2ee584663687a0fad4f",
        "time": 1690098322,
        "s1": "muA1gPR5JjsxZbeCj7HB2wrx4h3Ky8iHY3",
        "p": {
            "s4": "{\"t\": <TAG>, \"a\": [1, 2, 3, 4, 5], \"c\": <CONDITION>}"
        },
        "additional": {
            "regdate": 1690012312,
            "rating": 35
        }
      }
  ]
}

Примечание: rating - это целое число, представляющее float * 10, поэтому 35 означает, что рейтинг пользователя 3.5

Получение информации о предложениях по адресу

> /rpc/getbarteronoffersbyaddress <адрес>
{
  "result": "success",
    "data": [
      {
        "hash": "2e3d9b2c5ee988c2462d4a9a35be6986e8124092b62adf651d0b7d7cbcd11697",
        "type": 211,
        "height": 1068,
        "blockHash": "d6893b30850b3fad44e0da7296d14e099fe6c8f3a54e26437d9a93b47bf403b4",
        "time": 1690198349,
        "s1": "n1GN91byHmHGvvKTsDp15dcQzF5cekVCPy",
        "s2": "2e3d9b2c5ee988c2462d4a9a35be6986e8124092b62adf651d0b7d7cbcd11697",
        "p": {
          "s4": "{\"t\": <TAG>, \"a\": [1, 2, 3, 4, 5], \"c\": <CONDITION>}"
        }
      }
    ]
}

Получение информации о предложениях

> /rpc/getbarteronoffersbyroottxhashes [ <хеш_транзакции1>, <хеш_транзакции2>, ... ]
{
  "result": "success",
    "data": [
      {
        "hash": "2e3d9b2c5ee988c2462d4a9a35be6986e8124092b62adf651d0b7d7cbcd11697",
        "type": 211,
        "height": 1068,
        "blockHash": "d6893b30850b3fad44e0da7296d14e099fe6c8f3a54e26437d9a93b47bf403b4",
        "time": 1690198349,
        "s1": "n1GN91byHmHGvvKTsDp15dcQzF5cekVCPy",
        "s2": "2e3d9b2c5ee988c2462d4a9a35be6986e8124092b62adf651d0b7d7cbcd11697",
        "p": {
          "s4": "{\"t\": <TAG>, \"a\": [1, 2, 3, 4, 5], \"c\": <CONDITION>}"
        }
      }
    ]
}

Получение ленты предложений

> /rpc/getbarteronfeed <JSON_ЗАПРОС>
{
  "result": "success",
    "data": [
      { экземпляр_предложения },
      { экземпляр_предложения },
      ...
    ]
}

<JSON_ЗАПРОС>
{
    "lang": "en", // en, ru и т.д.
    "tags": [1,2,3], // Теги для фильтрации предложений
    "location": "ABC", // локация как 'ABC%'
    "priceMax": 1000, // 0 для неиспользования
    "priceMin": 0, // 0 для неиспользования
    "search": "Строка для полнотекстового поиска в Заголовке и Описании",
    // Пагинация
    "topHeight": 100, // Верхняя высота для начала пагинации
    "pageStart": 0, // Номер первой страницы
    "pageSize": 10, // Количество предложений на странице
    "orderBy": "height", // height | location | price
    "orderDesc": true, // true | false
}

Получение потенциальных сделок по предложению

> /rpc/getbarterondeals <JSON_ЗАПРОС>
{
  "result": "success",
    "data": [
      { экземпляр_предложения },
      { экземпляр_предложения },
      ...
    ]
}

<JSON_ЗАПРОС>
{
    "addresses": ["АДРЕС1", "АДРЕС2"], // Фильтр потенциальных предложений с этими адресами аккаунтов
    "excludeAddresses": ["АДРЕС3", "АДРЕС4"], // Фильтр потенциальных предложений, исключая предложения с этими адресами
    "location": "v3g9s%", // Выражение на языке SQLite3 для использования с оператором `LIKE` при сравнении локаций
    "priceMax": 1000, // Максимальная цена предложения
    "priceMin": 10, // Минимальная цена предложения
    "search": "%some text%", // Полнотекстовый поиск в заголовке и описании предложения
    "mytags": [1,3,4], // Фильтр потенциальных предложений по тегам, на которые они обмениваются
    "theirTags": [5,6,7], // Фильтр потенциальных предложений по их тегам
    // Пагинация
    "topHeight": 100, // Верхняя высота для начала пагинации
    "pageStart": 0, // Номер первой страницы
    "pageSize": 10, // Количество предложений на странице
    "orderBy": "height", // height | location | price
    "orderDesc": true, // true | false
}

Примечание: location и search являются регулярными выражениями в следующем формате: Символ процента ("%") соответствует любой последовательности из нуля или более символов в строке. Подчеркивание ("_") соответствует любому одиночному символу в строке. Любой другой символ соответствует самому себе или его эквиваленту в нижнем/верхнем регистре (сравнение без учета регистра)

Получение потенциальных комплексных сделок (3-сторонний поиск)

> /rpc/getbarteroncomplexdeals <JSON_ЗАПРОС>
{
  "result": "success",
  "data": [
    {
      "target": { экземпляр_предложения },
      "intermediates": [
        { экземпляр_предложения },
        { экземпляр_предложения },
        ...
      ]
    },
    {
      "target": ...
    },
    ...
  ]
}

<JSON_ЗАПРОС>
{
    "myTag": 10,
    "theirTags": [1,2,3],
    "location": "ABC%",
    "excludeAddresses": ["АДРЕС1", "АДРЕС2"]
}

Примечание: location и excludeAddresses используются для фильтрации как целевых, так и промежуточных предложений

Получение деталей предложения

> /rpc/getbarteronoffersdetails <JSON_ЗАПРОС>
{
  "result": "success",
    "data": {
      "offerScores": [
        { транзакция_оценки },
        { транзакция_оценки },
        ...
      ],
      "comments": [
        { транзакция_комментария },
        { транзакция_комментария },
        ...
      ],
      "commentScores": [
        { транзакция_оценки_комментария },
        { транзакция_оценки_комментария },
        ...
      ],
      "accounts": [
        { транзакция_аккаунта_с_доп_информацией },
        { транзакция_аккаунта_с_доп_информацией },
        ...
      ]
    }
}

<JSON_ЗАПРОС>
{
  "offerIds": ["идентификатор_предложения1", "идентификатор_предложения2"], // Идентификаторы предложений для получения деталей
  "includeAccounts": true,
  "includeScores": true,
  "includeComments": true,
  "includeCommentScores": true
}

Примечание: транзакция_аккаунта_с_доп_информацией имеет тот же формат, что и в запросе getbarteronaccounts

Примечание: Если includeSmth не указан в запросе, то smth вообще не будет в ответе json.

Примечание: транзакция_оценки, транзакция_комментария, транзакция_оценки_комментария и транзакция_аккаунта_с_доп_информацией - это просто сырые транзакции, и связи между ними и предложениями должны быть построены на стороне клиента.

Последнее обновление:
Участники: gked
Prev
Мини-приложения в Bastyon