BTSDEX v0.6.0
Вот и вышла новая версия пакета btsdex
. Вначале я планировал выпустить пакет увеличив последнее число (патч), но в связи с потерей совместимости пришлось увеличить минорное число. Надеюсь изменения вам понравятся.
Потеря совместимости
Во всех предыдущих версиях, перед использованием класса BitShares
необходимо было его инициализировать:
BitShares.init(<node>, <autoconnect>, <autoreconnect>)
Cейчас этого метода нет. Зато метод connect
обогатился параметрами:
BitShares.connect(<node>, <autoreconnect>)
Если вы используете систему событий для установления соединения, и хотите указать параметры соединения, для этого воспользуйтесь BitShares.node
и BitShares.autoreconnect
const BitShares = require("btsdex");
BitShares.node = "wss://api.bts.blckchnd.com";
BitShares.autoreconnect = false; // default true
BitShares.subscribe("connected", start);
async function start() {
// code here
}
Это единственная несовместимость с остальными версиями
Конструктор транзакций
Каждая транзакция считается принятой после включения в блок. Блоки создаются каждый 3 секунды. Если необходимо выполнить несколько операций, их последовательное выполнение может занять значительное время. К счастью, несколько операций могут быть включены в одну транзакцию. Для этого необходимо воспользоваться конструктором транзакций.
Для создания новой транзакции:
let tx = BitShares.newTx([<activePrivateKey>,...])
или если у вас уже есть экземпляр класса BitShares
:
let acc = await BitShares.login(<accountName>, <password>);
let tx = acc.newTx()
У каждой операции доступной "из коробки", появился метод (<name>Operatin
), который формирует объект операции, но не посылает в блокчейн.
Для получения объектов операций:
let operation1 = await acc.transferOperation("scientistnik", "BTS", 10)
let operation2 = await acc.assetIssueOperation("scientistnik", "ABC", 10)
...
Добавление операций в транзакцию:
tx.add(operation1)
tx.add(operation2)
...
Можно узнать стоимость транзакции:
let cost = await tx.cost()
console.log(cost) // { BTS: 1.234 }
После этого транзакцию можно отправлять:
await tx.broadcast()
или
await acc.broadcast(tx)
Операций доступные аккаунту в сети BitShares намного больше, чем доступно объекту класса BitShares
. Если вы знаете какие поля для операции нужны, вы можете воспользоваться конструктором транзакций для отправки этой операции.
Пример создания нового аккаунта:
let BitShares = require("btsdex")
BitShares.subscribe("connected", start)
async function start() {
let acc = await BitShares.login(<accountName>, <password>)
let params = {
fee: {amount: 0, asset_id: "1.3.0"},
name: "trade-bot3",
registrar: "1.2.21058",
referrer: "1.2.21058",
referrer_percent: 5000,
owner: {
weight_threshold: 1,
account_auths: [],
key_auths: [[<ownerPublicKey>, 1]],
address_auths: []
},
active: {
weight_threshold: 1,
account_auths: [],
key_auths: [[<activePublicKey>, 1]],
address_auths: []
},
options: {
memo_key: <memoPublicKey>,
voting_account: "1.2.5",
num_witness: 0,
num_committee: 0,
votes: []
},
extensions: []
};
let tx = acc.newTx()
tx.account_create(params) // 'account_create' это имя операции
await tx.broadcast()
}
Одноразовый запрос в REPL-режиме
Если необходимо сделать только один запрос, можно использовать --account
, --asset
, --block
, --object
, --history
, --node
или --transfer
ключи в командной строке:
$ btsdex --account <'name' or 'id' or 'last number in id'>
{
"id": "1.2.5992",
"membership_expiration_date": "1970-01-01T00:00:00",
"registrar": "1.2.37",
"referrer": "1.2.21",
...
}
$ btsdex --asset <'symbol' or 'id' or 'last number in id'>
{
"id": "1.3.0",
"symbol": "BTS",
"precision": 5,
...
}
$ btsdex --block [<number>]
block_num: 4636380
{
"previous": "0046bedba1317d146dd6afbccff94412d76bf094",
"timestamp": "2018-10-01T13:09:40",
"witness": "1.6.41",
...
}
$ btsdex --object 1.2.3
{
"id": "1.2.3",
"membership_expiration_date": "1969-12-31T23:59:59",
"registrar": "1.2.3",
"referrer": "1.2.3",
...
}
$ btsdex --history <account> [<limit>] [<start>] [<stop>]
[
{
"id": "1.11.98179",
"op": [
0,
...
}]
$ btsdex --node wss://api.bts.blckchnd.com
Connected to API node: wss://api.bts.blckchnd.com
$ btsdex --transfer <from> <to> <amount> <asset> [--key]
Transfered <amount> <asset> from '<from>' to '<to>' with memo '<memo>'
Обновление документации
Обновил документацию, добавил ее русскую версию.
Если у вас есть пожелания к дальнейшему развитию пакета, или возможно нет очень полезной функции, напишите на GitHub, или если хотите пообщаться лично, создал специально для этого канал btsdex.
На этом у меня все. Всем хороших выходных!