pub struct EthereumParser;Expand description
Ethereum transaction parser.
This struct implements the Chain trait for parsing Ethereum transactions
into the unified ParsedTx format.
§Supported Transaction Types
- Legacy transactions (type 0 or no type prefix)
- EIP-2930 transactions (type 1)
- EIP-1559 transactions (type 2)
§Example
use txgate_chain::{Chain, EthereumParser};
let parser = EthereumParser::new();
// Check chain ID and curve
assert_eq!(parser.id(), "ethereum");
assert_eq!(parser.curve(), txgate_crypto::CurveType::Secp256k1);
// Check supported versions
assert!(parser.supports_version(0));
assert!(parser.supports_version(1));
assert!(parser.supports_version(2));
assert!(!parser.supports_version(3)); // EIP-4844 not yet supportedImplementations§
Source§impl EthereumParser
impl EthereumParser
Sourcepub const fn new() -> Self
pub const fn new() -> Self
Create a new Ethereum parser instance.
§Example
use txgate_chain::EthereumParser;
let parser = EthereumParser::new();Sourcepub fn assemble_signed(
raw: &[u8],
signature: &[u8],
) -> Result<Vec<u8>, ParseError>
pub fn assemble_signed( raw: &[u8], signature: &[u8], ) -> Result<Vec<u8>, ParseError>
Assemble a fully signed transaction from raw bytes and a 65-byte signature.
Takes the original raw transaction bytes (signed or unsigned) and the
signature (r[32] || s[32] || v[1]) and returns the RLP-encoded signed
transaction ready for broadcast.
§Arguments
raw- The raw transaction bytes (as originally passed toparse())signature- 65-byte signature:r(32) || s(32) || recovery_id(1)
§Returns
The fully assembled, RLP-encoded signed transaction bytes.
§Errors
Returns ParseError::AssemblyFailed if:
- The signature is not exactly 65 bytes
- The transaction cannot be decoded
- RLP encoding of the signed transaction fails
Trait Implementations§
Source§impl Chain for EthereumParser
impl Chain for EthereumParser
Source§fn parse(&self, raw: &[u8]) -> Result<ParsedTx, ParseError>
fn parse(&self, raw: &[u8]) -> Result<ParsedTx, ParseError>
Parse raw transaction bytes into a ParsedTx.
This method detects the transaction type and delegates to the appropriate parser:
- Legacy transactions (no type prefix or type 0)
- EIP-2930 transactions (type 1)
- EIP-1559 transactions (type 2)
§Arguments
raw- The raw transaction bytes
§Returns
Ok(ParsedTx)- Successfully parsed transactionErr(ParseError)- Parsing failed
§Errors
Returns a ParseError if:
- The transaction type is not supported
- The RLP encoding is invalid
- Required fields are missing or malformed
Source§fn supports_version(&self, version: u8) -> bool
fn supports_version(&self, version: u8) -> bool
Source§fn assemble_signed(
&self,
raw: &[u8],
signature: &[u8],
) -> Result<Vec<u8>, ParseError>
fn assemble_signed( &self, raw: &[u8], signature: &[u8], ) -> Result<Vec<u8>, ParseError>
Assemble a signed transaction from raw bytes and a signature. Read more
Source§impl Clone for EthereumParser
impl Clone for EthereumParser
Source§fn clone(&self) -> EthereumParser
fn clone(&self) -> EthereumParser
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for EthereumParser
impl Debug for EthereumParser
Source§impl Default for EthereumParser
impl Default for EthereumParser
Source§fn default() -> EthereumParser
fn default() -> EthereumParser
Returns the “default value” for a type. Read more
impl Copy for EthereumParser
Auto Trait Implementations§
impl Freeze for EthereumParser
impl RefUnwindSafe for EthereumParser
impl Send for EthereumParser
impl Sync for EthereumParser
impl Unpin for EthereumParser
impl UnwindSafe for EthereumParser
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more