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

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.

На этом у меня все. Всем хороших выходных!

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