Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
scientistnik
6 лет назад

Библиотека для работы с BitShares: BTSDEX.js v.0.2.0

Что это и зачем?!

Хочу представить вам свою библиотеку для работы с блокчейном BitShares написанная на JavaScript. На самом деле можно сказать, что это некая обертка над официальным bitshares.js (bitshares.js присутствует в зависимостях).

Почему же я решил написать что-то поверх bitshares.js? Он не так юзабелен для моих проектов, как мне бы хотелось. Решая свои приватные задачи, спустя какое-то время пришло понимание, что код разрастается и не очень удобен. Решил для унификации нескольких повторяющихся частей в разных проектах свести все в один пакет. А по мере написания этого пакета и появилось желание сделать ее более универсальным и удобным. Так и появился BTSDEX.

Реализация

Основной класс в пакете - BitShares. Все что нужно находится в нем. Есть еще парочка вспомогательных классов, но они не очень предназначены для использования во вне класса BitShares. Возможно на каком-то этапе это изменится.

Класс BitShares состоит из статических методов предназначенных для работы с публичным API блокчейна BitShares. Используя класс BitShares можно создать объект, методы которого предоставляют доступ к приватной части API блокчейна BitShares.

Пакет распространяется под MIT лицензией. Ссылка на github!
Для установки пакета:

$ npm install btsdex

Использование в своем проекте:

const BitShares = require("btsdex");

Немного примеров

Чтобы подключиться к сети BitShares необходимо проинициализировать и подключиться:

BitShares.init("wss://bitshares.openledger.info/ws")
await BitShares.connect();


Публичный API

После соединения, можно воспользоваться любым публичным методом из официальной документации (если метод еще актуален!).

Database API

Для доступа к Database API можно воспользоваться объектом BitShares.db.

Пример методов из Database API:
get_objects(const vector<object_id_type> &ids) const
list_assets(const string &lower_bound_symbol, uint32_t limit) const

Чтобы ими воспользоваться:

let obj = await BitShares.db.get_objects(["1.3.0"])
let bts = await BitShares.db.list_assets("BTS",100)


History API

Для доступа к Account History API, можно воспользоваться объектом BitShares.history.

Пример метода из Account History API:
get_account_history(account_id_type account, operation_history_id_type stop = operation_history_id_type (), unsigned limit = 100, operation_history_id_type start = operation_history_id_type ()) const

Чтобы им воспользоваться:

let ops = await BitShares.history.get_account_history("1.2.849826","1.11.0",10,"1.11.0")


Приватный API

Если вы хотите иметь доступ к операциям аккаунта, то необходимо создать объект класса BitShares:

let bot = new BitShares("accountName","privateActiveKey")

Пока данный объект может не много: покупать, продавать, отправлять, отменять ордера.


Сигнатуры методов:

bot.buy(buySymbol, baseSymbol, amount, price, fill_or_kill = false, expire = "2020-02-02T02:02:02")
bot.sell(sellSymbol, baseSymbol, amount, price, fill_or_kill = false, expire = "2020-02-02T02:02:02")
bot.cancelOrder(id)
bot.transfer(toName, assetSymbol, amount, memo)



Примеры использования:

await bot.buy("OPEN.BTC","BTS", 0.002, 140000)
await bot.sell("BTS", "USD", 187, 0.24)
await bot.transfer("scientistnik", "BTS", 10) 



Если хотите произвести отправку токенов с memo, то перед этим необходимо установить приватный memo-ключ:

bot.setMemoKey("privateMemoKey")
await bot.transfer("scientistnik", "USD", 10, "Thank you for BTSDEX!")


Вспомогательные классы

Есть еще парочку вспомогательных классов, таких как BitShares.assets и BitShares.accounts:

let usd = await BitShares.assets.usd;
let btc = await BitShares.assets["OPEN.BTS"];
let bts = await BitShares.assets["bts"];

let iam = await BitShares.accounts.scientistnik;
let tradebot = await BitShares.accounts["trade-bot"];

Возвращаемые объекты содержат все поля, которые возвращает блокчейн при запросе данного имени актива или аккаунта.

Что дальше

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


Если у Вас есть еще какие-то пожелания или предложения, можете написать! Всегда открыт для диалога!
Спасибо за внимание и до скорых встреч!

8
0.000 GOLOS
На Golos с July 2017
Комментарии (0)
Сортировать по:
Сначала старые