Module Evm_node_lib_dev_encoding.Rlp

A simple RLP encoding library, see https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/ for the specification.

type Tezos_base.TzPervasives.error +=
  1. | Rlp_decoding_error of string
type item =
  1. | Value of bytes
  2. | List of item list

An RLP value is either a bytes value, or a list of RLP values.

val encode_int : int -> bytes

encode_int i encodes an integer in big endian in its smallest representation.

val encode_z : Z.t -> bytes

encode_z z encodes a big integer in big endian in its smallest representation.

val encode : item -> bytes

encode item takes an RLP item and returns its encoded form.

val decode_int : bytes -> int Tezos_base.TzPervasives.tzresult

decode_int bytes decodes an integer encoded in big endian from the given bytes. Returns an Rlp_decoding_error if the bytes is not a valid RLP encoded integer.

val decode_z : bytes -> Z.t Tezos_base.TzPervasives.tzresult

decode_z bytes decodes a big integer encoded in big endian from the given bytes. Returns an Rlp_decoding_error if the bytes is not a valid RLP encoded big integer.

decode bytes decodes an RLP value from the given bytes. Returns an Rlp_decoding_error if the bytes is not an RLP encoded value.

val decode_exn : bytes -> item

decode_exn bytes calls decode and raises Invalid_argument if it fails to decode.

decode_option decode_value optional_value decodes the option following Rust's RLP encoding.

val decode_result : (item -> 'a Tezos_base.TzPervasives.tzresult) -> (item -> 'b Tezos_base.TzPervasives.tzresult) -> item -> ('a, 'b) Stdlib.result Tezos_base.TzPervasives.tzresult

decode_result decode_ok decode_error value decodes an encoded result type.

decode_value decode item decodes an encapsulated value.

decode_list decode_item list_item decodes a list using decode_item on each list element.

val filter_decode_list : (item -> 'a option) -> item -> 'a list Tezos_base.TzPervasives.tzresult

filter_decode_list filter_decode list decodes and filter the item in a list: If filter_decode item is None then the item is filtered out, else it's decoded. Based on List.filter_map so slightly faster than two steps.

val decode_as_bytes : item -> bytes Tezos_base.TzPervasives.tzresult

decode_as_bytes item returns the bytes of item if it's a value, and returns a Rlp_decoding_error if it's a list.

val pp : Stdlib.Format.formatter -> item -> unit

pp ppf item pretty-prints an item.