RLPTrait
Fully qualified path: alexandria_encoding::rlp_byte_array::RLPTrait
#![allow(unused)] fn main() { pub trait RLPTrait }
Trait functions
encode_byte_array
Encodes a Span of RLPItemByteArray
(which can be either strings or lists) into a single RLP-encoded ByteArray. This function handles recursive encoding for nested lists.
Parameters
input
: A Span containing RLP items, where each item is either a string (ByteArray) or a nested list (Span).prefix
: can be used for ex eip1559 is 0x2
Returns
Result<@ByteArray, RLPError>
: The RLP-encoded result or an error if input is empty.
Fully qualified path: alexandria_encoding::rlp_byte_array::RLPTrait::encode_byte_array
#![allow(unused)] fn main() { fn encode_byte_array(input: Span<RLPItemByteArray>, prefix: u8) -> Result<@ByteArray, RLPError> }
encode_byte_array_string
Encodes a ByteArray as an RLP string (not a list).
Parameters * input
: A reference to the ByteArray to encode.
Returns
Result<@ByteArray, RLPError>
: The RLP-encoded result or an error.
RLP Encoding Rules for Strings:
- For empty string, the encoding is 0x80.
- For single byte less than 0x80, it’s the byte itself (no prefix).
- For strings with length < 56, prefix is 0x80 + length.
- For strings with length >= 56, prefix is 0xb7 + length-of-length, followed by actual length and data.
Fully qualified path: alexandria_encoding::rlp_byte_array::RLPTrait::encode_byte_array_string
#![allow(unused)] fn main() { fn encode_byte_array_string(input: @ByteArray) -> Result<@ByteArray, RLPError> }
encode_byte_array_list
Encodes a list of RLP-encoded ByteArrays into a single RLP list item. Assumes all input elements are already RLP-encoded. Used for creating composite structures like transaction lists or EIP-1559 typed payloads.
Arguments
inputs
- Span of RLP-encoded@ByteArray
items to be wrapped in a list.prefix
- Optional prefix byte (e.g., 0x2 for EIP-1559), 0 if unused.
Returns
@ByteArray
- a new RLP-encoded ByteArray representing the list.
Behavior
- Uses short or long list prefix depending on total payload size.
- Adds prefix byte if
prefix > 0
.
Fully qualified path: alexandria_encoding::rlp_byte_array::RLPTrait::encode_byte_array_list
#![allow(unused)] fn main() { fn encode_byte_array_list(inputs: Span<@ByteArray>, prefix: u8) -> Result<@ByteArray, RLPError> }
decode_byte_array
Recursively decodes a rlp encoded byte array as described in https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/
Arguments
input
- ByteArray decode
Returns
Span<ByteArray>
- decoded ByteArray
Errors
- input too short - if the input is too short for a given
- empty input - if the input is len is 0
Fully qualified path: alexandria_encoding::rlp_byte_array::RLPTrait::decode_byte_array
#![allow(unused)] fn main() { fn decode_byte_array(input: @ByteArray) -> Result<Span<ByteArray>, RLPError> }
decode_byte_array_type
Decodes the RLP prefix of the input and determines the type (String or List), returning the decoded payload, the total bytes read, and the inferred RLP type.
Parameters
input
: Reference to a ByteArray that represents RLP-encoded data.
Returns
-
Ok((payload, total_bytes_read, RLPType))
: On success, returns the decoded payload, how many bytes were consumed from input, and whether it was a String or List. -
Err(RLPError)
: If decoding fails due to invalid input length, or size issues.
Fully qualified path: alexandria_encoding::rlp_byte_array::RLPTrait::decode_byte_array_type
#![allow(unused)] fn main() { fn decode_byte_array_type(input: @ByteArray) -> Result<(ByteArray, u32, RLPType), RLPError> }