mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 19:09:54 +00:00
feat: add deploy tx helper to e2e utils (#11117)
This commit is contained in:
@ -12,24 +12,46 @@ use eyre::Ok;
|
||||
pub struct TransactionTestContext;
|
||||
|
||||
impl TransactionTestContext {
|
||||
/// Creates a static transfer and signs it, returning bytes
|
||||
/// Creates a static transfer and signs it, returning an envelope.
|
||||
pub async fn transfer_tx(chain_id: u64, wallet: PrivateKeySigner) -> TxEnvelope {
|
||||
let tx = tx(chain_id, None, 0);
|
||||
let tx = tx(chain_id, 21000, None, 0);
|
||||
Self::sign_tx(wallet, tx).await
|
||||
}
|
||||
|
||||
/// Creates a static transfer and signs it, returning bytes
|
||||
/// Creates a static transfer and signs it, returning bytes.
|
||||
pub async fn transfer_tx_bytes(chain_id: u64, wallet: PrivateKeySigner) -> Bytes {
|
||||
let signed = Self::transfer_tx(chain_id, wallet).await;
|
||||
signed.encoded_2718().into()
|
||||
}
|
||||
|
||||
/// Creates a deployment transaction and signs it, returning an envelope.
|
||||
pub async fn deploy_tx(
|
||||
chain_id: u64,
|
||||
gas: u128,
|
||||
init_code: Bytes,
|
||||
wallet: PrivateKeySigner,
|
||||
) -> TxEnvelope {
|
||||
let tx = tx(chain_id, gas, Some(init_code), 0);
|
||||
Self::sign_tx(wallet, tx).await
|
||||
}
|
||||
|
||||
/// Creates a deployment transaction and signs it, returning bytes.
|
||||
pub async fn deploy_tx_bytes(
|
||||
chain_id: u64,
|
||||
gas: u128,
|
||||
init_code: Bytes,
|
||||
wallet: PrivateKeySigner,
|
||||
) -> Bytes {
|
||||
let signed = Self::deploy_tx(chain_id, gas, init_code, wallet).await;
|
||||
signed.encoded_2718().into()
|
||||
}
|
||||
|
||||
/// Creates a tx with blob sidecar and sign it
|
||||
pub async fn tx_with_blobs(
|
||||
chain_id: u64,
|
||||
wallet: PrivateKeySigner,
|
||||
) -> eyre::Result<TxEnvelope> {
|
||||
let mut tx = tx(chain_id, None, 0);
|
||||
let mut tx = tx(chain_id, 210000, None, 0);
|
||||
|
||||
let mut builder = SidecarBuilder::<SimpleCoder>::new();
|
||||
builder.ingest(b"dummy blob");
|
||||
@ -63,7 +85,7 @@ impl TransactionTestContext {
|
||||
nonce: u64,
|
||||
) -> Bytes {
|
||||
let l1_block_info = Bytes::from_static(&hex!("7ef9015aa044bae9d41b8380d781187b426c6fe43df5fb2fb57bd4466ef6a701e1f01e015694deaddeaddeaddeaddeaddeaddeaddeaddead000194420000000000000000000000000000000000001580808408f0d18001b90104015d8eb900000000000000000000000000000000000000000000000000000000008057650000000000000000000000000000000000000000000000000000000063d96d10000000000000000000000000000000000000000000000000000000000009f35273d89754a1e0387b89520d989d3be9c37c1f32495a88faf1ea05c61121ab0d1900000000000000000000000000000000000000000000000000000000000000010000000000000000000000002d679b567db6187c0c8323fa982cfb88b74dbcc7000000000000000000000000000000000000000000000000000000000000083400000000000000000000000000000000000000000000000000000000000f4240"));
|
||||
let tx = tx(chain_id, Some(l1_block_info), nonce);
|
||||
let tx = tx(chain_id, 210000, Some(l1_block_info), nonce);
|
||||
let signer = EthereumWallet::from(wallet);
|
||||
<TransactionRequest as TransactionBuilder<Ethereum>>::build(tx, &signer)
|
||||
.await
|
||||
@ -90,12 +112,12 @@ impl TransactionTestContext {
|
||||
}
|
||||
|
||||
/// Creates a type 2 transaction
|
||||
fn tx(chain_id: u64, data: Option<Bytes>, nonce: u64) -> TransactionRequest {
|
||||
fn tx(chain_id: u64, gas: u128, data: Option<Bytes>, nonce: u64) -> TransactionRequest {
|
||||
TransactionRequest {
|
||||
nonce: Some(nonce),
|
||||
value: Some(U256::from(100)),
|
||||
to: Some(TxKind::Call(Address::random())),
|
||||
gas: Some(210000),
|
||||
gas: Some(gas),
|
||||
max_fee_per_gas: Some(20e9 as u128),
|
||||
max_priority_fee_per_gas: Some(20e9 as u128),
|
||||
chain_id: Some(chain_id),
|
||||
|
||||
Reference in New Issue
Block a user