evm v0.1.14 EVM.Helpers
Various helper functions with no other home.
Link to this section Summary
Functions
Defined as Eq.(224) in the Yellow Paper, this is “all but one 64th”, written as L(x)
Encodes signed ints using twos compliment
Helper function to print an instruction message
Inverts a map so each key becomes a value, and vice versa
Left pad binary with bytes
Reads a length of data from a binary, filling in all unknown values as zero
Right pad binary with bytes
Take the last n bytes of a binary
Wrap ints greater than the maximum allowed address size
Wrap ints greater than the max int around back to 0
Link to this section Functions
Defined as Eq.(224) in the Yellow Paper, this is “all but one 64th”, written as L(x).
Examples
iex> EVM.Helpers.all_but_one_64th(5)
5
iex> EVM.Helpers.all_but_one_64th(1000)
985
Encodes signed ints using twos compliment
Examples
iex> EVM.Helpers.encode_signed(1)
1
iex> EVM.Helpers.encode_signed(-1)
EVM.max_int() - 1
Helper function to print an instruction message.
Inverts a map so each key becomes a value, and vice versa.
Examples
iex> EVM.Helpers.invert(%{a: 5, b: 10})
%{5 => :a, 10 => :b}
iex> EVM.Helpers.invert(%{dog: "cat"})
%{"cat" => :dog}
iex> EVM.Helpers.invert(%{cow: :moo})
%{moo: :cow}
iex> EVM.Helpers.invert(%{"name" => "bob"})
%{"bob" => "name"}
iex> EVM.Helpers.invert(%{})
%{}
left_pad_bytes(binary | integer, integer) :: integer
Left pad binary with bytes
Examples
iex> EVM.Helpers.left_pad_bytes(1, 3)
<<0, 0, 1>>
iex> EVM.Helpers.left_pad_bytes(<<1>>, 3)
<<0, 0, 1>>
iex> EVM.Helpers.left_pad_bytes(<<1, 2, 3>>, 2)
<<1, 2, 3>>
read_zero_padded(binary, integer, integer) :: binary
Reads a length of data from a binary, filling in all unknown values as zero.
Examples
iex> EVM.Helpers.read_zero_padded(<<5, 6, 7>>, 1, 3)
<<6, 7, 0>>
iex> EVM.Helpers.read_zero_padded(<<5, 6, 7>>, 0, 2)
<<5, 6>>
iex> EVM.Helpers.read_zero_padded(<<5, 6, 7>>, 0, 3)
<<5, 6, 7>>
iex> EVM.Helpers.read_zero_padded(<<5, 6, 7>>, 4, 3)
<<0, 0, 0>>
right_pad_bytes(binary | integer, integer) :: integer
Right pad binary with bytes
Examples
iex> EVM.Helpers.right_pad_bytes(1, 3)
<<1, 0, 0>>
iex> EVM.Helpers.right_pad_bytes(<<1>>, 3)
<<1, 0, 0>>
iex> EVM.Helpers.right_pad_bytes(<<1, 2, 3>>, 2)
<<1, 2, 3>>
Take the last n bytes of a binary
Wrap ints greater than the maximum allowed address size.
Examples
iex> EVM.Helpers.wrap_address(1)
1
iex> EVM.Helpers.wrap_address(<<1>>)
<<1>>
iex> EVM.Helpers.wrap_address(EVM.Address.max() + 1)
1