class Scale::Types::BoxProposal

Public Class Methods

decode(scale_bytes, metadata, chain_spec) click to toggle source
# File lib/scale/types.rb, line 890
def self.decode(scale_bytes, metadata, chain_spec)
  puts "BEGIN " + self::TYPE_NAME + ": #{scale_bytes}" if Scale::Types.debug == true
  call_index = scale_bytes.get_next_bytes(2).bytes_to_hex[2..]
  call_module, call = metadata.value.call_index[call_index]

  call_args = call[:args].map do |arg|
    arg_obj = Scale::Types.get(arg[:type], chain_spec).decode(scale_bytes)
    {name: arg[:name], type: arg[:type], value: arg_obj.encode, value_raw: arg_obj.value}
  end

  puts "  END " + self::TYPE_NAME + ": #{scale_bytes}" if Scale::Types.debug == true
  self.new({
    call_index: call_index, 
    call_function: call[:name],
    call_module: call_module[:name],
    call_args: call_args
  })
end

Public Instance Methods

encode() click to toggle source
# File lib/scale/types.rb, line 909
def encode
  value[:call_index] +
  value[:call_args]
    .map {|call_arg| call_arg[:value]}
    .join("")
end