class Platon::Deployment

Constants

DEFAULT_STEP
DEFAULT_TIMEOUT

Attributes

connection[RW]
contract_address[RW]
deployed[RW]
id[RW]
mined[RW]
valid_deployment[R]

Public Class Methods

new(txid, connection) click to toggle source
# File lib/platon/deployment.rb, line 11
def initialize(txid, connection)
  @id = txid
  @connection = connection
  @deployed = false
  @contract_address = nil
  @valid_deployment = false
end

Public Instance Methods

check_deployed() click to toggle source
# File lib/platon/deployment.rb, line 25
def check_deployed
  return false unless @id
  contract_receipt = @connection.platon_get_transaction_receipt(@id)
  result = contract_receipt["result"]
  has_contract_address = result && result["contractAddress"]
  @contract_address ||= result["contractAddress"] if has_contract_address
  has_contract_address && result["blockNumber"]
end
deployed?() click to toggle source
# File lib/platon/deployment.rb, line 34
def deployed?
  @valid_deployment ||= check_deployed
end
mined?() click to toggle source
# File lib/platon/deployment.rb, line 19
def mined?
  return true if @mined
  @mined = @connection.platon_get_transaction_by_hash(@id)["result"]["blockNumber"].present?
  @mined ||= false
end
wait_for_deployment(timeout: DEFAULT_TIMEOUT, step: DEFAULT_STEP) { || ... } click to toggle source
# File lib/platon/deployment.rb, line 38
def wait_for_deployment(timeout: DEFAULT_TIMEOUT, step: DEFAULT_STEP)
  start_time = Time.now
  loop do
    raise "Transaction #{@id} timed out." if ((Time.now - start_time) > timeout) 
    yield if block_given?
    return true if deployed?
    sleep step
  end
end