class EvmClient::Function

Attributes

constant[RW]
function_string[RW]
inputs[RW]
minified_signature[RW]
name[RW]
outputs[RW]
signature[RW]

Public Class Methods

calc_id(signature) click to toggle source
# File lib/evm_client/function.rb, line 35
def self.calc_id(signature)
  Digest::SHA3.hexdigest(signature, 256)
end
calc_signature(name, inputs) click to toggle source
# File lib/evm_client/function.rb, line 31
def self.calc_signature(name, inputs)
  "#{name}(#{inputs.collect {|x| self.to_canonical_type(x.type) }.join(",")})"
end
new(data) click to toggle source
# File lib/evm_client/function.rb, line 6
def initialize(data)
  @name     = data["name"]
  @constant = data["constant"]

  @inputs   = data["inputs"].map do |input|
    EvmClient::FunctionInput.new(input)
  end

  @outputs = data["outputs"].collect do |output|
    EvmClient::FunctionOutput.new(output)
  end

  @function_string    = self.class.calc_signature(@name, @inputs)
  @signature          = self.class.calc_id(@function_string)
  @minified_signature = signature[0..7]
end
to_canonical_type(type) click to toggle source
# File lib/evm_client/function.rb, line 23
def self.to_canonical_type(type)
  type
  .gsub(/(int)(\z|\D)/, '\1256\2')
  .gsub(/(uint)(\z|\D)/, '\1256\2')
  .gsub(/(fixed)(\z|\D)/, '\1128x128\2')
  .gsub(/(ufixed)(\z|\D)/, '\1128x128\2')
end