Операции на бирже
Создание ордера
На внутренней бирже GolosDEX можно покупать и продавать средства в GOLOS, GBG и токенах UIA. Чтобы продать или купить средства, нужно создать ордер.
golos.config.set('websocket', 'wss://api.golos.today/ws')
const acc = 'snake' // имя аккаунта, который будет создавать ордер
const wif = '5JFZC7AtEe1wF2ce6vPAUxDeevzYkPgmtR14z9ZVgvCCtrFAaLw' // приватный active-ключ
const orderid = Math.floor(Date.now() / 1000) // у каждого ордера должен быть уникальный id, который необходимо сгенерировать. Здесь применяется один из способов
let expiration = new Date()
expiration.setHours(expiration.getHours() + 1)
expiration = expiration.toISOString().substr(0, 19) // получается формат вида 2022-01-18T11:33:00
try {
const res = await golos.broadcast.limitOrderCreateAsync(wif, acc, orderid, '1.000 GOLOS', '0.010 GBG', false, expiration)
console.log('order created')
} catch (err) {
console.error('cannot create order', err)
}
В этом примере:
1.000 GOLOS продаем. Они спишутся с баланса в момент создания ордера
0.010 GBG покупаем за 1.000 GOLOS
false означает, что не следует использовать Immediate-Or-Cancel, то есть если нет подходящего ордера для сделки, то ордер будет висеть до момента expiration. Если заменить false на true, то при создании ордера сработает IOC и если нет подходящего ордера, то созданный ордер сразу самоуничтожится.
expiration - сколько времени висеть ордеру (в данном случае 1 час)
Отмена ордера
Аккаунт может отменить созданный им ордер, если по нему еще не прошли сделки.
const orderid = 13548 // а так неправильно: orderid = '13548'
try {
const res = await golos.broadcast.limitOrderCancelAsync(wif, acc, orderid)
console.log('order canceled')
} catch (err) {
console.error('cannot cancel order', err)
}jaja
Балансы пользователя
const res = await golos.api.getAccounts(['snake'])
if (!data[0]) {
console.log('no such account')
} else {
console.log(data[0].balance) // GOLOS
console.log(data[0].sbd_balance) // GBG
}
// для UIA следует использовать get_accounts_balances
const balances = await golos.api.getAccountsBalances(['lex'])
const dogecoin = balances[0]['DOGECOIN']
if (dogecoin) {
console.log(dogecoin.balance)
console.log(dogecoin.tip_balance)
console.log(dogecoin.market_balance)
} else {
console.log('no DOGECOIN balance')
}
Разработка на JavaScript
В этом случае требуется Node.js, и его версия должна быть не ниже 11, а рекомендуется - 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 установлен, проверьте, что он доступен из Терминала.
Проверьте работу npm:
npm --version
Она должна выдать ответ наподобие "8.1.2", а не ошибку.
Проверьте работу самого Nodejs:
nodejs --version
А если эта команда выдает ошибку, то должна работать эта:
node --version
Если все команды выдают ошибку, то в случае Windows необходимо сделать следующее:
Найдите, по какому пути установлен nodejs. Обычно это
C:\Program Files\nodejs
, но возможно такжеC:\Program Files (x86)\nodejs
Открыть "Панель управления", выбрать "Система", нажать синюю надпись "Дополнительные параметры системы", нажать кнопку "Переменные среды", в списке "Переменные среды пользователя" выбрать переменную Path или PATH, нажать кнопку "Изменить", затем "Создать" и вставить туда путь из пункта 1. Затем нажмите "OK", снова "ОК", затем "Применить", и закройте панель управления.
Откройте новый PowerShell и снова проверьте команды.
Создание скрипта
После того, как Node.js будет корректно установлен, можно создать свой первый скрипт, который будет работать на вашем ПК и взаимодействовать с Golos.
Создайте папку hellogolos
Откройте эту папку в терминале. В случае с Windows, сначала просто откройте папку, затем, щелкните "Файл", и затем "Запустить PowerShell".
Выполните команду
npm install golos-lib-js
Создайте в папке скрипт index**.mjs** со следующим кодом:
import golos from 'golos-lib-js'
async function main() {
const dgp = await golos.api.getDynamicGlobalProperties()
console.log(dgp.head_block_number)
process.exit(0)
}
main()
А если используете Node.js старше 14, то переименуйте файл в index**.js** и вместо import используйте
const golos = require('golos-lib-js')
Запустите с помощью:
node index.mjs
Разработка на Python
Необходим Python версии не ниже 3.6.1, но не 4.0.0 и выше.
Установка Python и инструментов для сборки
Чтобы установить Python на Linux и не приходилось собирать его из исходного кода, добавьте этот репозиторий:
sudo add-apt-repository ppa:deadsnakes/ppa
Затем используйте эти команды:
sudo apt-get update
sudo apt-get install python3.7 python3.7-dev python3.7-venv
(Пакет -dev нужен для сборки golos-lib-python. А пакет -venv для установки pip.) Установите pip:
python3.7 -m ensurepip
Готово.
Windows
Если у вас Windows, используйте эту страницу. Найдите там самую новую версию, которая имеет ссылку типа "Download Windows installer (64-bit)". В случае, если Windows 32-битный и этот установщик не работает, используйте "Download Windows installer (32-bit)". Важно: при установке обязательно отметьте флажок "Add Python to PATH", чтобы Python был доступен из PowerShell (терминала). Если вы установили Python без этого флажка, переустановите Python.
Затем необходимо установить Microsoft Visual Studio не ниже 2015, а рекомендуется 2019 (https://visualstudio.microsoft.com/visual-cpp-build-tools/ и выбрать пункт "Классические приложения C++", остальное по умолчанию). Это необходимо для работы библиотеки python-golos.
Кроме того, необходимо установить OpenSSL.
macOS
Используйте эту страницу, а затем выполните эти инструкции.
Создание скрипта
Создайте папку hellogolospy
Установите библиотеку golos-lib-python:
python3.7 -m pip install golos-lib-python
или (Windows)
python -m pip install golos-lib-python
Библиотеки устанавливаются для всей системы (в site-packages), а не в конкретную папку. 3. Создайте скрипт:
#!/usr/bin/env python3
from golos.steem import Steem
steem = Steem('wss://api.golos.today/ws')
print('Connected to GOLOS successfully!')
dgp = steem.get_dynamic_global_properties()
print(dgp['head_block_number'])
Last updated