EIP712.Util (eip712 v0.1.0)
Summary
Functions
Checksums an Ethereum address per EIP-55, the result is a string-encoded version of the address.
Decodes a hex string, specifically requiring that the string begins
with 0x
and allows mixed-case typing.
Decodes hex, allowing it to either by "0x..." or <<1::160>>.
Encodes a number as a binary representation of a certain number of bytes.
Encodes a hex string, adding a 0x
prefix.
Returns an Ethereum address from a given DER-encoded public key.
Returns the nibbles of a binary as a list.
Pads a binary to a given length
Parses a chain id, which can be given as an integer or an atom of a known network.
Converts a number to wei, possibly from gwei, etc.
Functions
checksum_address(address)
Checksums an Ethereum address per EIP-55, the result is a string-encoded version of the address.
Examples
iex> EIP712.Util.checksum_address("0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed")
"0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed"
iex> EIP712.Util.checksum_address("0xFB6916095CA1DF60BB79CE92CE3EA74C37C5D359")
"0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359"
iex> EIP712.Util.checksum_address("0xdbf03b407c01e7cd3cbea99509d93f8dddc8c6fb")
"0xdbF03B407c01E7cD3CBea99509d93f8DDDC8C6FB"
iex> EIP712.Util.checksum_address("0xd1220a0cf47c7b9be7a2e6ba89f429762e7b9adb")
"0xD1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb"
decode_hex(arg)
Decodes a hex string, specifically requiring that the string begins
with 0x
and allows mixed-case typing.
Examples
iex> EIP712.Util.decode_hex("0x1122")
iex> EIP712.Util.decode_hex("0x1")
iex> EIP712.Util.decode_hex("0xGG") :error
decode_hex!(hex)
decode_hex_input!(hex)
Decodes hex, allowing it to either by "0x..." or <<1::160>>.
Note: a hex-printed string, in this case, must start with 0x,
otherwise it will be interpreted as its ASCII values.
Examples
iex> EIP712.Util.decode_hex_input!("0x55")
<<0x55>>
iex> EIP712.Util.decode_hex_input!(<<0x55>>)
<<0x55>>
encode_bytes(b, size)
Encodes a number as a binary representation of a certain number of bytes.
Examples
iex> EIP712.Util.encode_bytes(257, 4) <<0, 0, 1, 1>>
iex> EIP712.Util.encode_bytes(nil, 4) nil
encode_hex(hex, short \\ false)
Encodes a hex string, adding a 0x
prefix.
Note: if short
is set, then any leading zeros will be stripped.
Examples
iex> EIP712.Util.encode_hex(<<0x11, 0x22>>) "0x1122"
iex> EIP712.Util.encode_hex(<<0xc>>) "0x0c"
iex> EIP712.Util.encode_hex(<<0xc>>, true) "0xc"
iex> EIP712.Util.encode_hex(<<0x0>>, true) "0x0"
get_eth_address(public_key)
Returns an Ethereum address from a given DER-encoded public key.
Examples
iex> public_key = EIP712.Util.decode_hex!("0x0422") iex> EIP712.Util.get_eth_address(public_key) |> EIP712.Util.encode_hex() "0x759f1afdc24aba433a3e18b683f8c04a6eaa69f0"
keccak(value)
See EIP712.Hash.keccak/1
.
nibbles(v)
Returns the nibbles of a binary as a list.
Examples
iex> EIP712.Util.nibbles(<<0xF5,0xE6,0xD0>>)
[0xF, 0x5, 0xE, 0x6, 0xD, 0x0]
pad(bin, size)
Pads a binary to a given length
Examples
iex> EIP712.Util.pad(<<1, 2>>, 2) <<1, 2>>
iex> EIP712.Util.pad(<<1, 2>>, 4) <<0, 0, 1, 2>>
iex> EIP712.Util.pad(<<1, 2>>, 1) ** (FunctionClauseError) no function clause matching in EIP712.Util.pad/2
parse_chain_id(chain_id)
Parses a chain id, which can be given as an integer or an atom of a known network.
Examples
iex> EIP712.Util.parse_chain_id(5)
5
iex> EIP712.Util.parse_chain_id(:goerli)
5
to_wei(amount)
Converts a number to wei, possibly from gwei, etc.
Examples
iex> EIP712.Util.to_wei(100)
100
iex> EIP712.Util.to_wei({100, :gwei})
100000000000