Have a bunch of accounts and need to assign Witness proxies? Check out this script
So you have a lot of accounts and want them all to be assigned a single Witness proxy...
There are many people on STEEM that have much more than just one account. Some for businesses, some for projects, some for nefarious purposes. Whatever the reason may be, I have written a script that takes a file of accounts and active_private_keys and mass assigns their Witness proxy as the account you specify.
This can save considerable amounts of time, as well as helping to ensure no accounts SP is wasted when it comes to helping to determine the top Witnesses.
Without further ado... the Script!
#!/usr/bin/env ruby
require 'radiator'
require 'colorize'
class WitnessProxy
attr_reader :logger, :proxy, :bots_file
def initialize(*args)
@logger = Logger.new(STDOUT)
@logger.level = :info
@proxy = args[0]
@bots_file = args[1]
end
def set_bots_proxy
puts "This will set bots in file #{bots_file} to #{proxy} as proxy. Continue? (yes/no)"
response = STDIN.gets.chomp.downcase
if response == 'yes'
puts "Continuing."
@output = []
make_proxy_txs(bots_file).each_slice(100) do |tx_group|
tx_group.each do |tx,wif|
client = Radiator::Transaction.new(url: 'https://steemd.steemit.com', wif: wif)
client.operations = []
client.operations << tx
result = client.process(true)
if result.error
@output << "[Bot - #{tx.payload.last[:account]}] An error happened: #{result.error.message.match(/^(.*?)\.\n/m)[0..1]}".red
else
@output << "[Bot - #{tx.payload.last[:account]}] Success: #{tx.payload.last[:account]} proxy set to #{proxy}".green
end
end
end
logger.info { "\n#{@output.join("\n")}" }
elsif response == 'no'
puts "Aborting. User request."
else
puts "You did not enter yes or no. Please retry and provide only 'yes' or 'no'."
end
end
private
def make_proxy_txs(bots)
txs = []
File.open("#{Dir.pwd}/#{bots_file}").read.each_line do |bot|
txs << [Radiator::Operation.new(
type: :account_witness_proxy,
account: bot.chomp.split(',')[0],
proxy: proxy
), bot.chomp.split(',')[1]] unless bot.chomp.empty?
end
txs
end
def help_text
%Q{#{('*'*50).green}
#{'Dependencies:'.yellow}
gem install radiator
gem install colorize
#{'Bots File:'.yellow}
This file should be in the same directory as the script and be formatted like:
bot_name1,active_private_key1
bot_name2,active_private_key2
bot_name3,active_private_key3
#{'Usage:'.yellow}
./witness_proxy.rb proxy_account bots_file.txt
#{('*'*50).green}}
end
end
witness_proxy = WitnessProxy.new(ARGV[0], ARGV[1])
if ARGV.count != 2 || (ARGV[0] == ('help' || '-h' || '--h'))
puts witness_proxy.send(:help_text)
else
witness_proxy.set_bots_proxy
end
Usage instructions (assumes you have Ruby 1.9+ installed)
- Copy/paste the entire contents above (inside the code block) to a file named something like
proxy.rb
- Save the file
- Install the dependencies the script wants:
gem install colorize
gem install radiator
- Create the accounts file (example format):
account1,active_private_key1,
account2,active_private_key2,
account3,active_private_key3
- Run the script:
ruby proxy.rb proxy_account accounts_file.txt
Results
After everything is finished, you should get a result list of the accounts and their result, either error or success.
Now go vote for @netuoso as Witness with your super powered account
Vote for @netuoso as Witness
- Go to the witness voting page on SteemIt.com
- Scroll to the bottom of the page and locate the vote box (shown below)
- Input my name (netuoso) and hit vote.
- Give yourself a high-five for making such an awesome decision
PSSST:
You could also reverse engineer this script for an example of how to broadcast a transaction via Radiator gem and a Ruby script :)
More creatively delicious Steem hacking! Thx...oh, and @netuoso for president (errr...witness) 🙏🏻
All about derivatives...hence Tayken Design :)
lol netuoso only 8500 or so followers short for his presidential nomination :)
I was wondering could you write a simple script to show followers by the date in which they started following you? Would be so so handy.
Like to sort them in that order on the site? Possibly. I am planning on digging into condenser later on.
If you mean a command line script, easily.
Honestly I am using the word script liberally because other than some html I know nothing about coding. It could possibly be an add on to steemdb rather than steemit. Would simplify things no?
I just imagine it would not be hard to sort followers chronologically with possibly what you call a command line script :)
This needs more upvotes and resteems.
I think I just found an exploit for steemit. Any chance you take a look? I'm afraid it's creating a lot of spam.
You are my witness after all ;)
https://steemit.com/steemit/@gnimeets/i-think-i-just-found-a-steem-exploit
Def checking this out