cryptnox-sdk-esp32 1.0.0
ESP32 SDK for Cryptnox Hardware Wallet
Loading...
Searching...
No Matches
eth_rlp.h
Go to the documentation of this file.
1/*
2 * SPDX-License-Identifier: LGPL-3.0-or-later
3 * Copyright (c) 2026 Cryptnox SA
4 */
5
6#pragma once
7
8#include <stdint.h>
9#include <stddef.h>
10
11#ifdef __cplusplus
12extern "C" {
13#endif
14
15/* EIP-1559 (type 2) transaction parameters. */
16typedef struct {
17 uint64_t chain_id;
18 uint64_t nonce;
19 uint64_t max_priority_fee; /* wei */
20 uint64_t max_fee; /* wei */
21 uint64_t gas_limit;
22 uint8_t to[20]; /* recipient Ethereum address */
23 uint64_t eth_value; /* wei (0 for pure ERC-20 transfer) */
24 const uint8_t *calldata;
26} eth_tx_t;
27
28/*
29 * Encode an unsigned EIP-1559 transaction: 0x02 || RLP([chainId, nonce, ...]).
30 * Returns total bytes written, or 0 on overflow.
31 */
32size_t eth_rlp_encode_unsigned(const eth_tx_t *tx, uint8_t *out, size_t out_max);
33
34/*
35 * Encode a signed EIP-1559 transaction: 0x02 || RLP([..., v, r, s]).
36 * v must be 0 or 1. r and s are 32-byte big-endian values.
37 * Returns total bytes written, or 0 on overflow.
38 */
39size_t eth_rlp_encode_signed(const eth_tx_t *tx, uint8_t v,
40 const uint8_t r[32], const uint8_t s[32],
41 uint8_t *out, size_t out_max);
42
43#ifdef __cplusplus
44}
45#endif
size_t eth_rlp_encode_signed(const eth_tx_t *tx, uint8_t v, const uint8_t r[32], const uint8_t s[32], uint8_t *out, size_t out_max)
Definition eth_rlp.cpp:169
size_t eth_rlp_encode_unsigned(const eth_tx_t *tx, uint8_t *out, size_t out_max)
Definition eth_rlp.cpp:152
size_t calldata_len
Definition eth_rlp.h:25
uint64_t gas_limit
Definition eth_rlp.h:21
uint64_t eth_value
Definition eth_rlp.h:23
const uint8_t * calldata
Definition eth_rlp.h:24
uint64_t max_fee
Definition eth_rlp.h:20
uint64_t max_priority_fee
Definition eth_rlp.h:19
uint64_t chain_id
Definition eth_rlp.h:17
uint8_t to[20]
Definition eth_rlp.h:22
uint64_t nonce
Definition eth_rlp.h:18