class Eth::Contract::Function

Provides the methods for smart contract function.

def self.calc_signature(name, inputs)

Returns:
  • (String) - function string.

Parameters:
  • inputs (Array) -- function input class list.
  • name (String) -- function name.
def self.calc_signature(name, inputs)
  "#{name}(#{inputs.collect { |x| x.raw_type }.join(",")})"
end

def self.encoded_function_signature(signature)

Returns:
  • (String) - encoded function signature string.

Parameters:
  • signature (String) -- function signature.
def self.encoded_function_signature(signature)
  Util.bin_to_hex Util.keccak256(signature)[0..3]
end

def initialize(data)

Parameters:
  • data (Hash) -- function input and output data.
def initialize(data)
  @name = data["name"]
  @constant = data["constant"]
  @inputs = data["inputs"].map do |input|
    Eth::Contract::FunctionInput.new(input)
  end
  @outputs = data["outputs"].collect do |output|
    Eth::Contract::FunctionOutput.new(output)
  end
  @function_string = self.class.calc_signature(@name, @inputs)
  @signature = self.class.encoded_function_signature(@function_string)
end