rlp/rlp_ethereum.hpp
Namespaces
Types
|
Name |
| using std::array< uint8_t, 20 > |
Address |
| using std::array< uint8_t, 32 > |
Hash256 |
| using std::array< uint8_t, 65 > |
Signature |
| using std::array< uint8_t, 256 > |
Bloom |
Functions
|
Name |
| EncodingOperationResult |
addAddress(RlpEncoder & encoder, const Address & addr) |
| EncodingOperationResult |
addHash(RlpEncoder & encoder, const Hash256 & hash) |
| EncodingOperationResult |
addSignature(RlpEncoder & encoder, const Signature & sig) |
| EncodingOperationResult |
addBloom(RlpEncoder & encoder, const Bloom & bloom) |
| DecodingResult |
readAddress(RlpDecoder & decoder, Address & addr) |
| DecodingResult |
readHash(RlpDecoder & decoder, Hash256 & hash) |
| DecodingResult |
readSignature(RlpDecoder & decoder, Signature & sig) |
| DecodingResult |
readBloom(RlpDecoder & decoder, Bloom & bloom) |
Types Documentation
using Address
using rlp::Address = std::array<uint8_t, 20>;
using Hash256
using rlp::Hash256 = std::array<uint8_t, 32>;
using Signature
using rlp::Signature = std::array<uint8_t, 65>;
using Bloom
using rlp::Bloom = std::array<uint8_t, 256>;
Functions Documentation
function addAddress
inline EncodingOperationResult addAddress(
RlpEncoder & encoder,
const Address & addr
)
function addHash
inline EncodingOperationResult addHash(
RlpEncoder & encoder,
const Hash256 & hash
)
function addSignature
inline EncodingOperationResult addSignature(
RlpEncoder & encoder,
const Signature & sig
)
function addBloom
inline EncodingOperationResult addBloom(
RlpEncoder & encoder,
const Bloom & bloom
)
function readAddress
inline DecodingResult readAddress(
RlpDecoder & decoder,
Address & addr
)
function readHash
inline DecodingResult readHash(
RlpDecoder & decoder,
Hash256 & hash
)
function readSignature
inline DecodingResult readSignature(
RlpDecoder & decoder,
Signature & sig
)
function readBloom
inline DecodingResult readBloom(
RlpDecoder & decoder,
Bloom & bloom
)
Source code
#ifndef RLP_ETHEREUM_HPP
#define RLP_ETHEREUM_HPP
#include "common.hpp"
#include "rlp_encoder.hpp"
#include "rlp_decoder.hpp"
#include <array>
namespace rlp {
// ============================================================================
// Ethereum-Specific Type Aliases
// ============================================================================
using Address = std::array<uint8_t, 20>; // Ethereum address (20 bytes)
using Hash256 = std::array<uint8_t, 32>; // Keccak-256 hash (32 bytes)
using Signature = std::array<uint8_t, 65>; // ECDSA signature (65 bytes: r, s, v)
using Bloom = std::array<uint8_t, 256>; // Bloom filter (256 bytes)
// ============================================================================
// Free Functions for Ethereum Types - Encoder
// ============================================================================
// Encode Ethereum address (20 bytes)
inline EncodingOperationResult addAddress(RlpEncoder& encoder, const Address& addr) {
return encoder.add(ByteView(addr.data(), addr.size()));
}
// Encode Ethereum hash (32 bytes)
inline EncodingOperationResult addHash(RlpEncoder& encoder, const Hash256& hash) {
return encoder.add(ByteView(hash.data(), hash.size()));
}
// Encode Ethereum signature (65 bytes)
inline EncodingOperationResult addSignature(RlpEncoder& encoder, const Signature& sig) {
return encoder.add(ByteView(sig.data(), sig.size()));
}
// Encode Ethereum bloom filter (256 bytes)
inline EncodingOperationResult addBloom(RlpEncoder& encoder, const Bloom& bloom) {
return encoder.add(ByteView(bloom.data(), bloom.size()));
}
// ============================================================================
// Free Functions for Ethereum Types - Decoder
// ============================================================================
// Read Ethereum address (20 bytes)
inline DecodingResult readAddress(RlpDecoder& decoder, Address& addr) {
return decoder.read(addr);
}
// Read Ethereum hash (32 bytes)
inline DecodingResult readHash(RlpDecoder& decoder, Hash256& hash) {
return decoder.read(hash);
}
// Read Ethereum signature (65 bytes)
inline DecodingResult readSignature(RlpDecoder& decoder, Signature& sig) {
return decoder.read(sig);
}
// Read Ethereum bloom filter (256 bytes)
inline DecodingResult readBloom(RlpDecoder& decoder, Bloom& bloom) {
return decoder.read(bloom);
}
} // namespace rlp
#endif // RLP_ETHEREUM_HPP
Updated on 2026-04-13 at 23:22:46 -0700