Skip to content

Latest commit

 

History

History
1039 lines (861 loc) · 38.7 KB

README_ru.md

File metadata and controls

1039 lines (861 loc) · 38.7 KB

Turtle Shell v1.0.7

en | ru

Приложение для хранения данных пользователя
и проведения транзакций в блокчейн сети Waves.
Информация о сети Waves

Turtle Shell API

На страницах браузера, работающим по протоколам http/https (не работает на локальных страничках по протоколу file://), с установленным расширением Turtle Shell становятся доступным глобальный объект TurtleShell в котором вы найдете следующие методы:

  • auth
  • publicState
  • signAndPublishCancelOrder
  • signAndPublishOrder
  • signAndPublishTransaction
  • signCancelOrder
  • signOrder,
  • signTransaction
  • signRequest
  • signTransactionPackage
  • on

Все методы кроме on работают асинхронно и возвращают Promise

При загрузке страницы в объекте TurtleShell нет методов апи до окончания инициализации плагина. Для облегчения работы с TurtleShell при инициализации в window.TurtleShell есть initialPromise который отрабатывает в момент окончания инициализации. Пример:

    TurtleShell.initialPromise
        .then((keeperApi) => {
            /*...инициализация работы приложения с TurtleShell*/
            keeperApi.publicState().then( state => startApp(state));
        })

В Turtle Shell, для большей безопасности и удобства использования, каждый новый сайт использующий API должен быть разрешен пользователем. При первой попытке использования API (кроме on) пользователю будет показан запрос на разрешение работы Turtle Shell с этим сайтом. Если пользователь согласен дать доступ, сайт становится доверенным, и получает возможность использовать API на своих страницах. В противном случае, сайт блокируется и на все запросы будет возвращена ошибка {message: "Api rejected by user", code: 12}, пользователь не увидит новых уведомлений. Для получения доступа, пользователь должен из интерфейса сделать сайт доверенным.

Описание методов

publicState

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

Пример:

    TurtleShell.publicState()
        .then(state => {
            console.log(state); //вывод в консоль результата
            /*...обработка данных */
        }).catch(error => {
            console.error(error); //вывод в консоль результата
            /*...обработка ошибок */
        })

или

    const getPublicState = async () => {
        try {
            const state = await TurtleShell.publicState();
            console.log(state); //вывод в консоль результата
            /*...обработка данных */
        } catch(error) {
            console.error(error); //вывод в консоль результата
            /*...обработка ошибок */
        }
      }

      const result = await getPublicState();

ОТВЕТ

{
    "initialized": true,
    "locked": true,
    "account": {
        "name": "foo",
        "publicKey": "bar",
        "address": "tn адресс",
        "networkCode": "байт сети",
        "balance": {
            "available": "баланс в tn",
            "leasedOut": "баланс в лизинге"
        }
    },
    "network": {
        "code": "L",
        "server": "https://privatenode2.blackturtle.eu/",
        "matcher": "https://privatematcher.blackturtle.eu/"
    },
    "messages": [],
    "txVersion": {
        "3": [ 2 ],
        "4": [ 2 ],
        "5": [ 2 ],
        ...
    }
}

Описание возвращаемых полей

  • initialized - boolean кипер проинициализирован
  • locked - boolean кипер в режиме ожидания
  • account - текущий аккаунт, если пользователь разрешит сайту доступ, или null
  • network - текущая сеть waves, адрес ноды и матчера
  • messages - статусы запросов на подпись
  • txVersion - доступные версии транзакций для каждого типа

Возможные ошибки

  • { message: "Init Turtle Shell and add account" } - кипер не проинициализирован
  • { message: "Add Turtle Shell account" } - вход в кипер произведен, но нет аккаунтов
  • { message: "User denied message" } - пользователь запретил сайту работать с кипером

on

Позволяет подписаться на события из Turtle Shell.

Поддерживает события:

  • update - подписаться на изменения стейта

Пример:

   TurtleShell.on("update", state => {
        //state бъект как из TurtleShell.publicState
   });

Если сайт не является доверенным, то события приходить не будут.

auth

Метод для получения подписи авторизационных данных при подтверждении пользователя Waves. Работает аналогично протоколу авторизации waves.

Пример:

    const authData = { data: "Auth on my site" };
    TurtleShell.auth(authData)
        .then(auth => {
            console.log(auth); //вывод в консоль результата
            /*...обработка данных */
        }).catch(error => {
            console.error(error); //вывод в консоль результата
            /*...обработка ошибок */
        })

или

    const getAuthData = async authData => {
        try {
            const state = await TurtleShell.auth(authData);
            console.log(state); //вывод в консоль результата
            /*...обработка данных */
        } catch(error) {
            console.error(error); //вывод в консоль результата
            /*...обработка ошибок */
        }
    }

    const authData = { data: "Auth on my site" };
    getAuthData(authData);

auth может принимать на вход следующие данные

  • name - название сервиса (не обязательное поле)
  • data - строка с любыми данными (обязательное поле)
  • referrer - полный url до сайта для редиректа (не обязательное поле)
  • icon - путь до лого, относительно referrer или origin сайта (не обязательное поле)
  • successPath - относительный путь до апи аунтификации сайта (не обязательное поле)

Например

    const authData = {
        data: "Generated string from server",
        name: "My test App",
        icon: "/img/icons/waves_logo.svg",
        referrer: "https://client.turtlenetwork.eu/",
        successPath: "login"
    };

    TurtleShell.auth(authData).then((data) => {
        //data - данные от кипера
        //проверка подписи и сохранение адреса...
        console.log(data);
    }).catch((error) => {
        //обработка ошибки
    });


При удачном подтверждении кипер в Promise вернет объект содержащий данные для проверки подписи:

  • host - хост, запросивший подпись
  • name - название приложения запрашивающее подпись
  • prefix - префикс учавствующий в подписи
  • address - адрес в сети Waves
  • publicKey - публичный ключ пользователя
  • signature - подпись
  • version - версия апи

Как проверить подпись?

ОШИБКИ

  • {message: "Invalid data", data: "[{"field":"data","type":"string","message":"field is required"}]", code: 9} - в данных на подпись есть ошибки
  • {message: "User denied message", code: 10} - пользователь отклонил запрос
  • {message: "Api rejected by user", code: 12}сайт не является доверенным

signTransaction

Метод для подписи транзакций в сети Waves.

Пример:

    const txData = {
        type: 4,
        data: {
            amount: {
               assetId: "TN",
               tokens: "1.567"
            },
            fee: {
                assetId: "TN",
                tokens: "0.001"
            },
            recipient: "test"
        }
    };
    TurtleShell.signTransaction(txData).then((data) => {
        //data - строка готовая для отсылки на ноду(сервер) сети Waves
    }).catch((error) => {
        //Обработка ошибок
    });

Апи возвращает строки, а не объект, так как в javascript при работе с 8 байтными целыми происходит потеря точности.

Описание поддерживаемых типов транзакций вы найдете ниже

В примере мы подписываем транзакцию на перевод токенов Waves на алиас test в сети Waves.

ОТВЕТ {"version":2,"assetId":"", "amount":156700000,"feeAssetId":"",fee:100000, "recipient":"получатель","attachment":"", "timestamp":1548770230589,"senderPublicKey":"публичный ключ","proofs":["подпись"],"type":4}

ОШИБКИ

  • {message: "User denied message", code: 10} - пользователь отклонил запрос
  • {message: "Api rejected by user", code: 12} - cайт является не доверенным
  • {message: "Invalid data", data: "Причина", code: 9} - неверные/неполные данные запроса

signAndPublishTransaction

Аналогичен signTransaction, но плюс еще отправляет транзакцию в блокчейн.

Пример:

   const txData = {
           type: 4,
           data: {
               amount: {
                  assetId: "TN",
                  tokens: "1.567"
               },
               fee: {
                   assetId: "TN",
                   tokens: "0.001"
               },
               recipient: "test"
           }
       };
       TurtleShell.signAndPublishTransaction(txData).then((data) => {
           //data - строка готовая для отсылки на ноду(сервер) сети Waves
       }).catch((error) => {
           //Обработка ошибок
       });

ОТВЕТ Возвращается строкой ответ от сети Waves - полное содержание прошедшей транзакции

ОШИБКИ

  • Аналогично signTransaction
  • {message: "Filed request", data: "Описание ошибки", code: 15} - реквест подписали, но не смогли отправить дальше

signTransactionPackage

Пакетная подпись транзакций. Иногда надо подписать сразу несколько транзакций, для удобства пользователя, допускается подписывать до 7 транзакций одновременно, и разрешены только определенные типы транзакций:

  • 3 - выпуск токена
  • 4 - перевод токенов
  • 5 - перевыпуск токенов
  • 6 - сжигание токенов
  • 10 - создaние алиса на адрес в сети waves
  • 11 - массовый перевод
  • 12 - транзакция с данными

Пример:

    const name = "For Test";
    const tx = [{
        type: 4,
        data: {
            amount: {
               assetId: "TN",
               tokens: "1.567"
            },
            fee: {
                assetId: "TN",
                tokens: "0.001"
            },
            recipient: "test"
    }},{
        type: 4,
        data: {
            amount: {
               assetId: "TN",
               tokens: "0.51"
            },
            fee: {
                assetId: "TN",
                tokens: "0.001"
            },
            recipient: "merry"
        }
    }];

    TurtleShell.signTransactionPackage(tx, name)

Подписать 2 транзакции:

  • перевода на алиас test 1.567 Waves
  • перевода на алиас merry 0.1 Waves

ОТВЕТ

массив из 2-х строк, подписанных и готовых к отправке транзакций.

ОШИБКИ Аналогично signTransaction.

У каждого пользователя в сети waves есть стейт (балансы, ассеты, данные, скрипты), любая прошедшая транзакция меняет эти данные.
В TurtleShell API - отличается от NODE REST API.

signTransaction, signAndPublishTransaction принимают транзакцию в следующем виде

{
    type: number //тип транзакции,
    data: {
        ... //данные транзакции
    }
}

Условные обозначения

* - необязательное поле, данные подставятся автоматически из TurtleShell.
[x,y] - oграничение длины от x, до y.
[,x] - oграничение длины до x.
[y,] - oграничение длины от y.
[x-y] - число от x до y. x/y - x или y. (JLM) - JAVA LONG MAX = 9 223 372 036 854 775 807
MoneyLike - цена

MoneyLike может иметь вид:

  • { tokens: 1, assetId: "TN" }
  • { coins: 100000000, assetId: "TN" };

В обоих записях указана одинаковая цена 1 TN. Можно свободно перевести coins в tokens и обратно, зная в каком ассете указана цена и получив его точность tokens = coins / (10 ** precision)
Если в поле указаны дополнительные типы кроме MoneyLike, например string/MoneyLike , сумма указывается числом в coins.


  • name [4, 16] string - Название токена,
  • description [0, 1000] string - Описание токена,
  • quantity [0 - (JLM)] number/string - количество,
  • precision [0 - 8] number - точность,
  • reissuable true|false - возможно перевыпускать,
  • fee MoneyLike -комиссия
  • *script string - скрипт для ассета
  • *senderPublicKey string - публичный ключ отправителя в base58
  • *timestamp number/string - время в мс

Пример:

   TurtleShell.signAndPublishTransaction({
        type: 3,
        data: {
             "name": "Best Token",
             "description": "Greate token",
             "quantity": 1000000,
             "precision": 2,
             "reissuable": true,
             fee: {
                 "tokens": "1",
                 "assetId": "TN"
             }
        }
   }).then((tx) => {
        console.log("Ура! Я создал свой ассет!!!");
   }).catch((error) => {
        console.error("Что-то пошло не так", error);
   });

В случае успеха мы выпускаем новыйй ассет в количестве 1000000 шт. которые будут на вашем балансе 10000.00 Best Token

  • amount MoneyLike - количество,
  • recipient string - адрес получателя или алиас
  • attachment[,140 bytes] string или Byte Array- доп информация
  • fee MoneyLike - комиссия
  • *senderPublicKey string - публичный ключ отправителя в base58
  • *timestamp number/string - время в мс

Пример:

    TurtleShell.signAndPublishTransaction({
        type: 4,
        data: {
            amount: { tokens: "3.3333333", assetId: "TN" },
            fee: { tokens: "0.001", assetId: "TN"},
            recipient: "merry"
        }
    }).then((tx) => {
         console.log("Ура! Я смог отправить Waves!!!");
    }).catch((error) => {
         console.error("Что-то пошло не так", error);
    });

  • assetId string - "Id ассета",
  • quantity [0 - (JLM)] number/string/MoneyLike - количество,
  • reissuable false - запретить перевыпускать
  • fee MoneyLike -комиссия
  • *senderPublicKey string - публичный ключ отправителя в base58
  • *timestamp number/string - время в мс

Пример:

      TurtleShell.signAndPublishTransaction({
           type: 5,
           data: {
                "quantity": 1000,
                "assetId": "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
                "reissuable": true,
                fee: {
                    "tokens": "1",
                    "assetId": "TN"
                }
           }
      }).then((tx) => {
           console.log("Ура! Я довыпустил ассет!!!");
      }).catch((error) => {
           console.error("Что-то пошло не так", error);
      });

В случае успеха мы довыпускаем новыйй ассет в количестве 1000000 coins. которые будут на вашем балансе 10000.00 Best Token

  • assetId string - Id ассета,
  • amount [0 - (JLM)] number/string/MoneyLike - количество,
  • fee MoneyLike -комиссия
  • *senderPublicKey string - публичный ключ отправителя в base58
  • *timestamp number/string - время в мс

Пример:

   TurtleShell.signAndPublishTransaction({
        type: 6,
        data: {
             amount: 1000,
             assetId: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
             fee: {
                 "tokens": "0.001",
                 "assetId": "TN"
             }
        }
   }).then((tx) => {
        console.log("Ура! Я сжег лишнее!!!");
   }).catch((error) => {
        console.error("Что-то пошло не так", error);
   });

В случае успеха сжигается 1000 coins.

  • recipient string - адрес получателя или алиас,
  • amount [0 - (JLM)] number/string/MoneyLike - количество,
  • fee MoneyLike -комиссия
  • *senderPublicKey string - публичный ключ отправителя в base58
  • *timestamp number/string - время в мс

Пример:

   TurtleShell.signAndPublishTransaction({
        type: 8,
        data: {
             "amount": 1000,
             "recipient": "merry",
             fee: {
                 "tokens": "0.001",
                 "assetId": "TN"
             }
        }
   }).then((tx) => {
        console.log("Ура! Я смог передать в лизинг!!!");
   }).catch((error) => {
        console.error("Что-то пошло не так", error);
   });

В случае успеха передается в лизинг 0.00001000 Waves.

  • leaseId string - id транзакции лизинга,
  • fee MoneyLike -комиссия
  • *senderPublicKey string - публичный ключ отправителя в base58
  • *timestamp number/string - время в мс

Пример:

   TurtleShell.signAndPublishTransaction({
        type: 9,
        data: {
             leaseId: "6frvwF8uicAfyEfTfyC2sXqBJH7V5C8he5K4YH3BkNiS",
             fee: {
                 "tokens": "0.001",
                 "assetId": "TN"
             }
        }
   }).then((tx) => {
        console.log("Ура! Я отменил лизинг!!!");
   }).catch((error) => {
        console.error("Что-то пошло не так", error);
   });

В случае успеха отменяется лизинг.

  • alias[4, 30] string - имя
  • fee MoneyLike -комиссия
  • *senderPublicKey string - публичный ключ отправителя в base58
  • *timestamp number/string - время в мс

Пример:

   TurtleShell.signAndPublishTransaction({
        type: 10,
        data: {
             alias: "testAlias",
             fee: {
                 "tokens": "0.001",
                 "assetId": "TN"
             }
        }
   }).then((tx) => {
        console.log("Ура! Я теперь с алиасом!!!");
   }).catch((error) => {
        console.error("Что-то пошло не так", error);
   });

В случае успеха для адреса создается алиас (дополнительное имя).

  • totalAmount moneyLike - итого отошлется // можно не считать сумму и вставить { assetId: "id отправляемого ассета", coins: 0},
  • transfers массив объектов
    • { recipient: string - адрес/алиас, amount: number/string/moneyLike }
  • fee MoneyLike -комиссия
  • attachment [,140 bytes в base58] string - доп информация
  • *senderPublicKey string - публичный ключ отправителя в base58
  • *timestamp number/string - время в мс

Пример:

   TurtleShell.signAndPublishTransaction({
        type: 11,
        data: {
             totalAmount: { assetId: "TN", coins: 0},
             transfers: [
                { recipient: "alias1", amount: "200000" },
                { recipient: "alias2", amount: "200000" },
             ],
             fee: {
                 "tokens": "0.002",
                 "assetId": "TN"
             }
        }
   }).then((tx) => {
        console.log("Ура! Я друзьям отправил приветов!!!");
   }).catch((error) => {
        console.error("Что-то пошло не так", error);
   });

В случае успеха на адреса alias1, alias2 прийдет по 0.002 Waves.

  • data массив объектов
    • type "binary"/string/"integer"/"boolean" - тип,
    • key string - название поля
    • value /string/string/number/boolean зависит от типа
  • fee MoneyLike -комиссия
  • *senderPublicKey string - публичный ключ отправителя в base58
  • *timestamp number/string - время в мс

Пример:

   TurtleShell.signAndPublishTransaction({
        type: 12,
        data: {
             data: [
                  { key: "string", value: "testVal", type: "string" },
                  { key: "binary", value: "base64:AbCd", type: "binary" },
                  { key: "integer", value: 20, type: "integer" },
                  { key: "boolean", value: false, type: "boolean" },
             ],
             fee: {
                 "tokens": "0.01",
                 "assetId": "TN"
             }
        }
   }).then((tx) => {
        console.log("Ура! Я сохранил данные!!!");
   }).catch((error) => {
        console.error("Что-то пошло не так", error);
   });

В случае успеха в стейте будут хранится новые данные.

  • script string - скрипт
  • fee MoneyLike -комиссия
  • *senderPublicKey string - публичный ключ отправителя в base58
  • *timestamp number/string - время в мс

Для снятия скрипта поле script равно ``. Разаработка скрипта в RIDE

Пример:

   TurtleShell.signAndPublishTransaction({
        type: 13,
        data: {
             script: "",
             fee: {
                 "tokens": "0.04",
                 "assetId": "TN"
             }
        }
   }).then((tx) => {
        console.log("Ура! Я отменил скрипт!!!");
   }).catch((error) => {
        console.error("Что-то пошло не так", error);
   });

В случае успеха удалится скрипт с аккаунта.

Пример2:

   TurtleShell.signAndPublishTransaction({
        type: 13,
        data: {
             script: "base64:AQa3b8tH",
             fee: {
                 "tokens": "0.01",
                 "assetId": "TN"
             }
        }
   }).then((tx) => {
        console.log("Ура! Я поставил скрипт!!!");
   }).catch((error) => {
        console.error("Что-то пошло не так", error);
   });

В случае успеха на аккаунте будет новый скрипт разрешающий на аккаунте любые транзакции без подписи (будте осторожны!).

  • minSponsoredAssetFee MoneyLike - цена комиссии в ассете.
  • fee MoneyLike - комиссия
  • *senderPublicKey string - публичный ключ отправителя в base58
  • *timestamp number/string - время в мс

Пример:

   TurtleShell.signAndPublishTransaction({
        type: 14,
        data: {
             minSponsoredAssetFee: {
                assetId: "6frvwF8uicAfyEfTfyC2sXqBJH7V5C8he5K4YH3BkNiS",
                tokens: 0.1
             },
             fee: {
                 "tokens": "1",
                 "assetId": "TN"
             }
        }
   }).then((tx) => {
        console.log("Ура! Я стал спонсором!!!");
   }).catch((error) => {
        console.error("Что-то пошло не так", error);
   });

В случае успеха, в ассете можно платить комиссию за трансфер

  • assetId string - id ассета
  • script string - скрипт
  • fee MoneyLike -комиссия
  • *senderPublicKey string - публичный ключ отправителя в base58
  • *timestamp number/string - время в мс

Снятие скрипта невозможно, только записать новый. Разаработка скрипта в RIDE

Пример:

   TurtleShell.signAndPublishTransaction({
        type: 15,
        data: {
             assetId: "",
             script: "base64:AQa3b8tH",
             fee: {
                 "tokens": "0.01",
                 "assetId": "TN"
             }
        }
   }).then((tx) => {
        console.log("Ура! Я переставил скрипт на ассете!!!");
   }).catch((error) => {
        console.error("Что-то пошло не так", error);
   });

В случае успеха на ассете будет переписан скрипт

  • dappAddress string адрес контракта
  • fee MoneyLike комиссия
  • call объект слкдующей структуры
    • function string название функции
    • args массив аргументов вида
      • type "binary"/string/"integer"/"boolean" - тип,
      • value /string/string/number/boolean зависит от типа
  • *payment массив MoneyLike (пока поддерживается 1 платеж)
  • *senderPublicKey string - публичный ключ отправителя в base58
  • *timestamp number/string - время в мс

Пример:

   TurtleShell.signAndPublishTransaction({
        type: 16,
        data: {
             fee: {
                 "tokens": "0.05",
                 "assetId": "TN"
             },
             dappAddress: '3N27HUMt4ddx2X7foQwZRmpFzg5PSzLrUgU',
             call: {
             		function: 'tellme',
             		args: [
             		    {
             		      "type": "string",
             		      "value": "Will?"
             		    }]
             	}, payment: [{assetId: "TN", tokens: 2}]
        }
   }).then((tx) => {
        console.log("Ура! Я выполнил скрипт!!!");
   }).catch((error) => {
        console.error("Что-то пошло не так", error);
   });

В случае успеха будет запущен скрипт


signOrder

Метод Turtle Shell для подписи ордера в матчер Принимает на вход объект похожий на транзакцию вида

    {
        type: 1002,
        data: {
            ...данные
        }
    }
  • amount MoneyLike - количество
  • price MoneyLike - цена
  • orderType 'sell'/'buy' - тип ордера
  • matcherFee MoneyLike - комиссия (мин 0.003 Waves),
  • matcherPublicKey string публичный ключ exchange сервиса
  • expiration string/number - время жизни ордера
  • *timestamp string/number щее время- теку
  • *senderPublicKey string публичный ключ в base58

Пример:

   TurtleShell.signOrder({
        type: 1002,
        data: {
             matcherPublicKey: "7kPFrHDiGw1rCm7LPszuECwWYL3dMf6iMifLRDJQZMzy",
             orderType: "sell",
             expiration: Date.now() + 100000,
             amount: {
                 tokens: "100",
                 assetId: "TN"
             },
             price: {
                 tokens: "0.01",
                 assetId: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"
             },
             matcherFee: {
                 tokens: "0.03",
                 assetId: "TN"
             }
        }
   }).then((tx) => {
        console.log("Ура! Я подписал ордер!!!");
   }).catch((error) => {
        console.error("Что-то пошло не так", error);
   });

ОТВЕТ: Строка с данными для отправки на матчер.

ОШИБКИ:

  • { message: "User denied message", code: 10 } - пользователь отклонил запрос
  • { message: "Api rejected by user", code: 12 } - cайт является не доверенным
  • { message: "Invalid data", data: "Причина", code: 9 } - неверные/неполные данные запроса

signAndPublishOrder

Метод Turtle Shell создания ордера на матчер работает идентично signOrder, но еще пытается отослать данные на матчер

ОТВЕТ: Строка ответ матчера об успешной постановке ордера.

ОШИБКИ:

  • аналогично signOrder
  • {message: "Filed request", data: "Описание ошибки", code: 15} - реквест подписали, но не смогли отправить дальше

signCancelOrder

Метод Turtle Shell подпись отмены ордера на матчер Принимает на вход объект похожий на транзакцию вида

    {
        type: 1003,
        data: {
            ...данные
        }
    }
  • id string - id ордера
  • *senderPublicKey string публичный ключ в base58

Пример:

    TurtleShell.signCancelOrder({
        type: 1003,
        data: {
            id: '31EeVpTAronk95TjCHdyaveDukde4nDr9BfFpvhZ3Sap'
        }
    });

ОТВЕТ: Строка с данными для отправки на матчер.

ОШИБКИ:

  • { message: "User denied message", code: 10 } - пользователь отклонил запрос
  • { message: "Api rejected by user", code: 12 } - cайт является не доверенным
  • { message: "Invalid data", data: "Причина", code: 9 } - неверные/неполные данные запроса

signAndPublishCancelOrder

Метод Turtle Shell для отмены ордера на матчер, работает идентично signCancelOrder, но еще пытается отослать данные на матчер

Пример:

    TurtleShell.signAndPublishCancelOrder({
        type: 1003,
        data: {
        	id: '31EeVpTAronk95TjCHdyaveDukde4nDr9BfFpvhZ3Sap'
        }
    }).then(() => {
        console.log('Ура! Я отменил ордер');
    }).catch((error) => {
        console.error('Что-то пошло не так', error);
    });

ОТВЕТ: Данные пришедшие с матчера

ОШИБКИ:

  • аналогично signCancelOrder
  • {message: "Filed request", data: "Описание ошибки", code: 15} - реквест подписали, но не смогли отправить дальше

signRequest

Метод Turtle Shell для подписи типизированных данных, для подтверждения запросов на разных сервисах Принимает на вход объект похожий на транзакцию вида

    {
        type: number,
        data: {
            ...данные
        }
    }

В данный момент метод поддерживает следующие типы:

1001 - подпись данных для запроса на матчер за своими ордерами

  • timestamp number/string
  • *senderPublicKey string публичный ключ в base58

Пример:

    TurtleShell.signRequest({
        type: 1001,
        data: {
            timestamp: 234234242423423
        }
    });

ОТВЕТ: Строка c подписью в base58.

ОШИБКИ:

  • { message: "User denied message", code: 10 } - пользователь отклонил запрос
  • { message: "Api rejected by user", code: 12 } - cайт является не доверенным
  • { message: "Invalid data", data: "Причина", code: 9 } - неверные/неполные данные запроса

1004 - подпись данных для запроса к Coinomat

  • timestamp number/string

Пример:

    TurtleShell.signRequest({
        type: 1004,
        data: {
            timestamp: 234234242423423
        }
    });

ОТВЕТ: Строка c подписью в base58.

ОШИБКИ:

  • { message: "User denied message", code: 10 } - пользователь отклонил запрос
  • { message: "Api rejected by user", code: 12 } - cайт является не доверенным
  • { message: "Invalid data", data: "Причина", code: 9 } - неверные/неполные данные запроса