Как объединять операции в одну транзакцию
Автор: @vik
Операции голосования своими 100+ аккаунтами, упакованные в ОДНУ транзакцию:
    Экономит время (100+ операций одновременно)
    Экономит bandwidth (новореги смогут совершать вXраз больше транзакций)
    Экономит ресурсы среды скрипта (браузер, сервер, приложение)
Для начала выбираем 1 свой основной аккаунт-ботовод и прописываем его логин своим ботам в постинг-авторити. Это можно сделать массово с помощью скрипта: https://github.com/vikxx/bots/blob/master/sample/setBotMaster.js
Нужно заполнить массив
1
const GolosBots = [
2
["логин бота1",["posting","5**************ACTIVE WIF****"]],
3
["логин бота 3",["posting","5*****************"]],
4
5
// бесконечный список аккаунтов...
6
7
["логин последнего бота",["posting","5******************"]]
8
9
]
Copied!
В переменной прописываем аккаунты и ключи. Заполнять posting не обязательно, требуется только активный ключ.(Я храню оба ключа для удобства, так как разные скрипты используя массовые действия смотрят список аккаунтов и обращаются к тому или иному ключу)
В переменнуюconst BOTMASTER = "логин ботовода"записываем логин аккаунта, который будет иметь права на постинг.
После выполнения скрипта он запишется в постинг авторизацию
Операция выше делается единожды и дальше вы можете используя только ОДИН постинг ключ своего аккаунта-ботовода подписать апвоты ВСЕХ ботов.
Прописывать ключи всем аккаунтам не нужно, достаточно перечислить логины:
1
const GolosBots = [
2
"vikx",
3
"vikxx",
4
// Endless list...
5
"vikxxx"
6
]
Copied!
И для каждого логина сделаем свою операцию, записав их все в одну переменную votes
1
for(let botname of GolosBots){
2
3
votes.push(["vote",
4
{
5
"voter":botname,
6
"author":author,
7
"weight":10000,
8
"permlink":permlink
9
}])
10
11
}
Copied!
Затем сформируем одну транзакцию, добавим в нее все операции votes и подпишем все операции постинг ключем аккаунта-ботовода
1
const unsignedTX = {
2
'expiration': expire,
3
'extensions': [],
4
'operations': votes,
5
'ref_block_num': 60419,
6
'ref_block_prefix': 2937707173
7
}
8
9
let signedTX = null
10
11
try {
12
signedTX = golos.auth.signTransaction(unsignedTX,{"posting":wif})
13
}
14
catch (error)
15
golos.api.broadcastTransactionSynchronous(signedTX)
Copied!
Скрипт полностью здесь: https://github.com/vikxx/bots/blob/master/sample/botVotes.js
По материалам статьи
Last modified 1yr ago
Copy link