Class: Zold::Routines::Bonuses
- Inherits:
-
Object
- Object
- Zold::Routines::Bonuses
- Defined in:
- lib/zold/commands/routines/bonuses.rb
Overview
Pay bonuses to random nodes
Instance Method Summary collapse
- #exec(_ = 0) ⇒ Object
-
#initialize(opts, wallets, remotes, copies, farm, log: Log::Quiet.new) ⇒ Bonuses
constructor
A new instance of Bonuses.
Constructor Details
#initialize(opts, wallets, remotes, copies, farm, log: Log::Quiet.new) ⇒ Bonuses
Returns a new instance of Bonuses.
35 36 37 38 39 40 41 42 |
# File 'lib/zold/commands/routines/bonuses.rb', line 35 def initialize(opts, wallets, remotes, copies, farm, log: Log::Quiet.new) @opts = opts @wallets = wallets @remotes = remotes @copies = copies @farm = farm @log = log end |
Instance Method Details
#exec(_ = 0) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/zold/commands/routines/bonuses.rb', line 44 def exec(_ = 0) sleep(10 * 60) unless @opts['routine-immediately'] raise '--private-key is required to pay bonuses' unless @opts['private-key'] raise '--bonus-wallet is required to pay bonuses' unless @opts['bonus-wallet'] raise '--bonus-amount is required to pay bonuses' unless @opts['bonus-amount'] winners = Remote.new(remotes: @remotes, log: @log, farm: @farm).run( ['remote', 'elect', @opts['bonus-wallet'], '--private-key', @opts['private-key']] ) return if winners.empty? winners.each do |score| Pull.new(wallets: @wallets, remotes: @remotes, copies: @copies, log: @log).run( ['pull', opts['bonus-wallet']] ) Pay.new(wallets: @wallets, remotes: @remotes, log: @log).run( [ 'pay', @opts['bonus-wallet'], score.invoice, @opts['bonus-amount'], "Hosting bonus for #{score.host}:#{score.port} #{score.value}", '--private-key', @opts['private-key'] ] ) Push.new(wallets: @wallets, remotes: @remotes, log: @log).run( ['push', @opts['bonus-wallet']] ) end end |