Skip to content

Как работать с Graphene на JavaScript

1aerostorm edited this page Mar 15, 2022 · 1 revision

Создание бота\скрипта\шлюза

В этом случае требуется Node.js, и его версия должна быть не ниже 10, а рекомендуется - 16.

Установка Node.js

В случае с Ubuntu выполните в приложении Терминал следующие команды, чтобы удалить существующий Node.js (если он имеется) и установить 16:

sudo apt-get remove nodejs
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs
  • Для других Linux см. здесь
  • Для Windows - здесь
  • Для 32-битных Windows - здесь (использовать только на компьютерах, где обычный вариант не работает)
  • Для macOS - здесь

После того, как Node.js установлен, проверьте, что он доступен из Терминала.

  1. Проверьте работу npm:
npm --version

Она должна выдать ответ наподобие "8.1.2", а не ошибку.

  1. Проверьте работу самого Nodejs:
nodejs --version

А если эта команда выдает ошибку, то должна работать эта:

node --version

Если все команды выдают ошибку, то в случае Windows необходимо сделать следующее:

  1. Найдите, по какому пути установлен nodejs. Обычно это C:\Program Files\nodejs, но возможно также C:\Program Files (x86)\nodejs
  2. Открыть "Панель управления", выбрать "Система", нажать синюю надпись "Дополнительные параметры системы", нажать кнопку "Переменные среды", в списке "Переменные среды пользователя" выбрать переменную Path или PATH, нажать кнопку "Изменить", затем "Создать" и вставить туда путь из пункта 1. Затем нажмите "OK", снова "ОК", затем "Применить", и закройте панель управления.
  3. Откройте новый PowerShell и снова проверьте команды.

Создание скрипта

После того, как Node.js будет корректно установлен, можно создать свой первый скрипт, который будет работать на вашем ПК и взаимодействовать с Graphene.

  1. Создайте папку hellographene
  2. Откройте эту папку в терминале. В случае с Windows, сначала просто откройте папку, затем, щелкните "Файл", и затем "Запустить PowerShell".
  3. Выполните команду
npm install bitsharesjs

На данный момент это рекомендуемая библиотека для работы с Graphene 4. Создайте в папке скрипт index**.mjs** со следующим кодом:

import { Apis } from 'bitsharesjs-ws' // эта библиотека входит в bitsharesjs
import { ChainStore } from 'bitsharesjs'

async function main() {
    console.log('Connecting...') 
    await Apis.instance('wss://gph.lexai.host/', true).init_promise

    console.log('Initializing chainstore...')
    await ChainStore.init(false)

    console.log('Done. Processing...')

    // чтобы получить дату и время последнего блока, есть хелпер
    console.log(ChainStore.getHeadBlockDate())

    // а вот чтобы получить номер последнего блока и другую информацию dynamic global property object,
    // надо потрудиться
    const dgps = await Apis.instance().db_api()
        .exec('get_objects', [['2.1.0']])
    let head_block_number = 0
    for (let i = 0; i < dgps.length; ++i) {
        if (dgps[i])
            head_block_number = dgps[i].head_block_number
    }
    console.log(head_block_number)

    process.exit(0)
}

main()

А если используете Node.js старше 14, то переименуйте файл в index**.js** и вместо import используйте

const { Apis } = require('bitsharesjs-ws') // эта библиотека входит в bitsharesjs
const { ChainStore } = require('bitsharesjs')
  1. Запустите с помощью:
node index.mjs

Распространение вашего скрипта

Чтобы перенести бот на другой компьютер, просто скопируйте всю папку hellographene (вместе с node_modules) на него, и установите Node.js. В этом случае повторно делать npm install не нужно, можно сразу запускать скрипт через node.

Однако при пользовании GitHub и прочими системами контроля версий не рекомендуется загружать туда папку node_modules, поскольку она занимает место и засоряет историю изменений (коммитов). В этом случае при каждом скачивании репозитория придется выполнять команду:

npm install

Которая автоматически создаст папку node_modules, установит в нее все библиотеки (в том числе bitsharesjs, ведь она уже числится в package.json и package-lock.json) и можно будет запускать скрипт.