Skip to content

ERC1167 demonstration #182

Open
Open
@StackOverflowExcept1on

Description

@StackOverflowExcept1on

Component

consensus, eips, genesis

Describe the feature you would like

https://eips.ethereum.org/EIPS/eip-1167

use alloy::primitives::{hex, Address, FixedBytes};

const INITIALIZATION_CODE: FixedBytes<10> = FixedBytes::new(hex!("3d602d80600a3d3981f3"));
const RUNTIME_CODE_1: FixedBytes<10> = FixedBytes::new(hex!("363d3d373d3d3d363d73"));
const RUNTIME_CODE_2: FixedBytes<15> = FixedBytes::new(hex!("5af43d82803e903d91602b57fd5bf3"));

pub const fn minimal_proxy_bytecode(address: [u8; 20]) -> [u8; 55] {
    let address = Address::new(address);
    let part1: FixedBytes<20> = INITIALIZATION_CODE.concat_const(RUNTIME_CODE_1);
    let part2: FixedBytes<40> = part1.concat_const(address.0);
    let part3: FixedBytes<55> = part2.concat_const(RUNTIME_CODE_2);
    part3.0
}

We could also make an extension method (a trait in alloy-eips implemented for alloy::primitives::Address) similar to alloy::primitives::Address::create2(...).

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions