В последнее время замечаю частые перебои с автоматическим подтягиванием прайсфида через контейнер от @vvk, поэтому набросала на коленке java-скрипт, помогающий быстро ввести прайсфид вручную. В двух вариантах. Оба варианта нормально работают с нашей стандартной библиотекой golos-lib-js и не имеют других внешних зависимостей. В обоих вариантах указан путь к блокчейну через ноду от Лекса, которая гарантированно работает (wss://golos.lexai.top/ws
), но вы ее можете также заменить и на свою (или любую другую), если хотите. В общем, может кому-то пригодится.
В варианте 1 (самом быстром), ваше имя делегатского аккаунта и активный ключ, необходимый для публикации фида, будут сохранены в самом скрипте и их не надо будет вводить каждый раз. Вводим только курс GBG к GOLOS. Разумеется, скрипт перед работой надо будет отредактировать под себя,обратите внимание на строки:
"ЗДЕСЬ ДОЛЖНO БЫТЬИМЯ АККАУНТА"
и "ЗДЕСЬ ДОЛЖЕН БЫТЬ АКТИВНЫЙ КЛЮЧ"):
const golos = require("golos-lib-js");
const readline = require("readline");
golos.config.set('websocket','wss://golos.lexai.top/ws');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('Курс GBG к 1 GOLOS: ', (baseValue) => {
const publisher = {
name: 'ЗДЕСЬ_ДОЛЖНO_БЫТЬ_ИМЯ_АККАУНТА',
wif: 'ЗДЕСЬ_ДОЛЖЕН_БЫТЬ_АКТИВНЫЙ_КЛЮЧ'
};
const exchangeRate = {
base: `${baseValue} GBG`,
quote: "1.000 GOLOS"
};
console.log(`\n🔁 Отправка курса от ${publisher.name}...`);
golos.broadcast.feedPublish(publisher.wif, publisher.name, exchangeRate, (err, result) => {
if (err) {
console.log(`❌ Ошибка:`, err);
} else {
console.log(`✅ Успешно: ${exchangeRate.base} = ${exchangeRate.quote} от ${publisher.name}`);
}
console.log('\n🏁 Выход...');
rl.close();
process.exit(0);
});
});
И второй вариант более универсальный, но вводить надо всё: имя, активный ключ и непосредственно прайсфид:
const golos = require("golos-lib-js");
const readline = require("readline");
golos.config.set('websocket','wss://golos.lexai.top/ws');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('Имя аккаунта: ', (accountName) => {
rl.question('Приватный активный ключ: ', (wifKey) => {
rl.question('курс GBG к 1 GOLOS: ', (baseValue) => {
const publisher = { wif: wifKey, name: accountName };
const exchangeRate = {
base: `${baseValue} GBG`,
quote: "1.000 GOLOS"
};
console.log(`\n🔁 Отправка курса от ${accountName}...`);
golos.broadcast.feedPublish(wifKey, accountName, exchangeRate, (err, result) => {
if (err) {
console.log(`❌ Ошибка:`, err);
} else {
console.log(`✅ Готово: ${exchangeRate.base} = ${exchangeRate.quote} от ${accountName}`);
}
console.log('\n🏁 Выход...');
rl.close();
process.exit(0);
});
});
});
});
@lindsay, а цена опечатки высока? Я в подобный код всегда зашиваю sanity check, вроде того, что введённое значение не отличается от предыдущего в десять раз.
@shuler, В данном скрипте цена опечатки нулевая. Это просто прайсфид, некорректная публикация которого сразу же автоматом подкорректируется другими делегатами. Да и конвертировать с такой комиссией - занятие весьма сомнительное. А покупать, так все равно реальная цена давно уже не идет нога в ногу с официальной, это как в анекдоте:
На бирже провалился курс акций до 1 цента. Инвестор думает: "Дальше им падать некуда, могут только расти" - и велит брокеру купить их на $100000. На следующий день — уже по 2 цента. "Подержу, может, ещё вырастут..." — на следующий день уже по 3 цента. Звонит брокеру: - Срочно продавай! Усталый голос в трубке: — Кому?
Но на самом деле я когда-то неплохо конвертнула ГБГ, когда Рудекс переезжал на другой блокчейн и из-за похуизма делегатов, которым было лень не то что выставить вручную курс, а даже посмотреть туда, и он несколько дней автоматом публиковался 0.001 при реальном где-то 0,025.
А вот при публикации этого поста, я почти допустила "опечатку", цена которой реально могла быть высока - чуть не выложила код с сохраненным в нем своим ключом от реального аккаунта 😱
Хорошо что еще раз перепроверила перед тем как отправлять.