1use crate::{keccak256, Address, B256};
3
4pub const INITCODE_TX_TYPE: u8 = 0x06;
6pub const MAX_INITCODE_COUNT: usize = 256;
8
9#[inline]
17pub fn new_eof_address(address: Address, salt: B256) -> Address {
18 let mut buffer = [0; 65];
19 buffer[0] = 0xff;
20 buffer[13..33].copy_from_slice(address.as_ref());
22 buffer[33..].copy_from_slice(salt.as_ref());
23 Address::from_word(keccak256(buffer))
24}
25
26#[cfg(test)]
27mod tests {
28 use super::*;
29 use alloy_primitives::{address, b256};
30
31 #[test]
32 fn test_new_eof_address() {
33 let address = address!("0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
34 let salt = b256!("0x0000000000000000000000000000000000000000000000000000000000000000");
35 let eof_address = new_eof_address(address, salt);
36 assert_eq!(
37 eof_address,
38 address!("0x02b6826e9392ee6bf6479e413c570846ab0107ec")
39 );
40 }
41}