class Etherlite::Contract::Function
Attributes
inputs[R]
name[R]
outputs[R]
Public Class Methods
new(_name, _inputs, _outputs, _payable, _constant)
click to toggle source
# File lib/etherlite/contract/function.rb, line 5 def initialize(_name, _inputs, _outputs, _payable, _constant) @name = _name @inputs = _inputs @outputs = _outputs @payable = _payable @constant = _constant end
Public Instance Methods
constant?()
click to toggle source
# File lib/etherlite/contract/function.rb, line 14 def constant? @constant end
decode(_connection, _data)
click to toggle source
# File lib/etherlite/contract/function.rb, line 44 def decode(_connection, _data) return nil if @outputs.empty? result = Etherlite::Support::Array.decode(_connection, @outputs, _data[2..-1]) result.length > 1 ? result : result[0] end
encode(_values)
click to toggle source
# File lib/etherlite/contract/function.rb, line 29 def encode(_values) if _values.length != @inputs.count raise ArgumentError, "Expected #{@inputs.count} arguments, got #{_values.length} " end encoded_inputs = Etherlite::Support::Array.encode(@inputs.map(&:type), _values) if @name signature_hash = Etherlite::Utils.sha3 signature '0x' + signature_hash[0..7] + encoded_inputs else encoded_inputs # if no name is provided, just render arguments end end
payable?()
click to toggle source
# File lib/etherlite/contract/function.rb, line 18 def payable? @payable end
signature()
click to toggle source
# File lib/etherlite/contract/function.rb, line 22 def signature @signature ||= begin arg_signatures = @inputs.map &:signature "#{@name}(#{arg_signatures.join(',')})" end end