🎓 Экономим ресурс аккаунта и сервера совмещая 100 операций в ОДНОЙ транзакции.
Автор: @vik
Операции голосования своими 100+ аккаунтами, упакованные в ОДНУ транзакцию:
http://golosd.com/tx/522aa6fe847ea5b7fab6901d17f9f28c7a0f80c3
- Экономит время (100+ апвотов одновременно)
- Экономит bandwidth (Новореги смогут совершать в
X
раз больше транзакций?) - Экономит ресурсы среды в которой выполняется скрипт (браузер, сервер, приложение)
Для начала выбираем 1 свой основной аккаунт-ботовод и прописываем его логин своим ботам в постинг-авторити. Это можно сделать массово с помощью скрипта:
https://github.com/vikxx/bots/blob/master/sample/setBotMaster.js
Нужно заполнить массив
const GolosBots = [
["логин бота1",["posting","5**************ACTIVE WIF****"]],
["логин бота 3",["posting","5*****************"]],
// бесконечный список аккаунтов...
["логин последнего бота",["posting","5******************"]]
]
В переменной прописываем аккаунты и ключи. Заполнять posting не обязательно, требуется только активный ключ.(Я храню оба ключа для удобства, так как разные скрипты используя массовые действия смотрят список аккаунтов и обращаются к тому или иному ключу)
В переменнуюconst BOTMASTER = "логин ботовода"
записываем логин аккаунта, который будет иметь права на постинг.
После выполнения скрипта он запишется в постинг авторизацию
Операция выше делается единожды и дальше вы можете используя только ОДИН постинг ключ своего аккаунта-ботовода подписать апвоты ВСЕХ ботов.
Пример на JS:
https://github.com/vikxx/bots/blob/master/sample/botVotes.js
Прописывать ключи всем аккаунтам не нужно, достаточно перечислить логины:
const GolosBots = [
"vikx",
"vikxx",
// Endless list...
"vikxxx"
]
И для каждого логина сделаем свою операцию, записав их все в одну переменную votes
for(let botname of GolosBots){
votes.push(["vote",
{
"voter":botname,
"author":author,
"weight":10000,
"permlink":permlink
}])
}
Затем сформируем одну транзакцию, добавим в нее все операции votes и подпишем все операции постинг ключем аккаунта-ботовода
const unsignedTX = {
'expiration': expire,
'extensions': [],
'operations': votes,
'ref_block_num': 60419,
'ref_block_prefix': 2937707173
}
let signedTX = null
try {
signedTX = golos.auth.signTransaction(unsignedTX,{"posting":wif})
}
catch (error)
golos.api.broadcastTransactionSynchronous(signedTX)
Скрипт полностью здесь:
https://github.com/vikxx/bots/blob/master/sample/botVotes.js
В итоге получаем способ совершать массовые операции экономя ресурсы как аккаунтов, так и сервера.
http://golosd.com/tx/522aa6fe847ea5b7fab6901d17f9f28c7a0f80c3