ETH Price: $3,833.29 (-4.02%)

Contract

0x000000006551c19487814612e58FE06813775758
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
111012382024-11-07 20:44:5131 days ago1731012291
0x00000000...813775758
 Contract Creation0 ETH
111012382024-11-07 20:44:5131 days ago1731012291
0x00000000...813775758
 Contract Creation0 ETH
110219292024-11-06 0:41:1333 days ago1730853673
0x00000000...813775758
 Contract Creation0 ETH
110218872024-11-06 0:39:4933 days ago1730853589
0x00000000...813775758
 Contract Creation0 ETH
110149952024-11-05 20:50:0533 days ago1730839805
0x00000000...813775758
 Contract Creation0 ETH
110148292024-11-05 20:44:3333 days ago1730839473
0x00000000...813775758
 Contract Creation0 ETH
110147282024-11-05 20:41:1133 days ago1730839271
0x00000000...813775758
 Contract Creation0 ETH
110146002024-11-05 20:36:5533 days ago1730839015
0x00000000...813775758
 Contract Creation0 ETH
110144892024-11-05 20:33:1333 days ago1730838793
0x00000000...813775758
 Contract Creation0 ETH
110144472024-11-05 20:31:4933 days ago1730838709
0x00000000...813775758
 Contract Creation0 ETH
103471732024-10-21 9:49:2149 days ago1729504161
0x00000000...813775758
 Contract Creation0 ETH
103219512024-10-20 19:48:3749 days ago1729453717
0x00000000...813775758
 Contract Creation0 ETH
103219322024-10-20 19:47:5949 days ago1729453679
0x00000000...813775758
 Contract Creation0 ETH
103218522024-10-20 19:45:1949 days ago1729453519
0x00000000...813775758
 Contract Creation0 ETH
103218252024-10-20 19:44:2549 days ago1729453465
0x00000000...813775758
 Contract Creation0 ETH
103216872024-10-20 19:39:4949 days ago1729453189
0x00000000...813775758
 Contract Creation0 ETH
103216872024-10-20 19:39:4949 days ago1729453189
0x00000000...813775758
 Contract Creation0 ETH
101800772024-10-17 12:59:2953 days ago1729169969
0x00000000...813775758
 Contract Creation0 ETH
101800772024-10-17 12:59:2953 days ago1729169969
0x00000000...813775758
 Contract Creation0 ETH
101800422024-10-17 12:58:1953 days ago1729169899
0x00000000...813775758
 Contract Creation0 ETH
101800422024-10-17 12:58:1953 days ago1729169899
0x00000000...813775758
 Contract Creation0 ETH
101365982024-10-16 12:50:1154 days ago1729083011
0x00000000...813775758
 Contract Creation0 ETH
101365982024-10-16 12:50:1154 days ago1729083011
0x00000000...813775758
 Contract Creation0 ETH
101365712024-10-16 12:49:1754 days ago1729082957
0x00000000...813775758
 Contract Creation0 ETH
101365712024-10-16 12:49:1754 days ago1729082957
0x00000000...813775758
 Contract Creation0 ETH
View All Internal Transactions

Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ERC6551Registry

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at blastscan.io on 2024-04-06
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

interface IERC6551Registry {
    /**
     * @dev The registry MUST emit the ERC6551AccountCreated event upon successful account creation.
     */
    event ERC6551AccountCreated(
        address account,
        address indexed implementation,
        bytes32 salt,
        uint256 chainId,
        address indexed tokenContract,
        uint256 indexed tokenId
    );

    /**
     * @dev The registry MUST revert with AccountCreationFailed error if the create2 operation fails.
     */
    error AccountCreationFailed();

    /**
     * @dev Creates a token bound account for a non-fungible token.
     *
     * If account has already been created, returns the account address without calling create2.
     *
     * Emits ERC6551AccountCreated event.
     *
     * @return account The address of the token bound account
     */
    function createAccount(
        address implementation,
        bytes32 salt,
        uint256 chainId,
        address tokenContract,
        uint256 tokenId
    ) external returns (address account);

    /**
     * @dev Returns the computed token bound account address for a non-fungible token.
     *
     * @return account The address of the token bound account
     */
    function account(
        address implementation,
        bytes32 salt,
        uint256 chainId,
        address tokenContract,
        uint256 tokenId
    ) external view returns (address account);
}

contract ERC6551Registry is IERC6551Registry {
    function createAccount(
        address implementation,
        bytes32 salt,
        uint256 chainId,
        address tokenContract,
        uint256 tokenId
    ) external returns (address) {
        assembly {
            // Memory Layout:
            // ----
            // 0x00   0xff                           (1 byte)
            // 0x01   registry (address)             (20 bytes)
            // 0x15   salt (bytes32)                 (32 bytes)
            // 0x35   Bytecode Hash (bytes32)        (32 bytes)
            // ----
            // 0x55   ERC-1167 Constructor + Header  (20 bytes)
            // 0x69   implementation (address)       (20 bytes)
            // 0x5D   ERC-1167 Footer                (15 bytes)
            // 0x8C   salt (uint256)                 (32 bytes)
            // 0xAC   chainId (uint256)              (32 bytes)
            // 0xCC   tokenContract (address)        (32 bytes)
            // 0xEC   tokenId (uint256)              (32 bytes)

            // Silence unused variable warnings
            pop(chainId)

            // Copy bytecode + constant data to memory
            calldatacopy(0x8c, 0x24, 0x80) // salt, chainId, tokenContract, tokenId
            mstore(0x6c, 0x5af43d82803e903d91602b57fd5bf3) // ERC-1167 footer
            mstore(0x5d, implementation) // implementation
            mstore(0x49, 0x3d60ad80600a3d3981f3363d3d373d3d3d363d73) // ERC-1167 constructor + header

            // Copy create2 computation data to memory
            mstore8(0x00, 0xff) // 0xFF
            mstore(0x35, keccak256(0x55, 0xb7)) // keccak256(bytedcode)
            mstore(0x01, shl(96, address())) // registry address
            mstore(0x15, salt) // salt

            // Compute account address
            let computed := keccak256(0x00, 0x55)

            // If the account has not yet been deployed
            if iszero(extcodesize(computed)) {
                // Deploy account contract
                let deployed := create2(0, 0x55, 0xb7, salt)

                // Revert if the deployment fails
                if iszero(deployed) {
                    mstore(0x00, 0x20188a59) // `AccountCreationFailed()`
                    revert(0x1c, 0x04)
                }

                // Store account address in memory before salt and chainId
                mstore(0x6c, deployed)

                // Emit the ERC6551AccountCreated event
                log4(
                    0x6c,
                    0x60,
                    // `ERC6551AccountCreated(address,address,bytes32,uint256,address,uint256)`
                    0x79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf88722,
                    implementation,
                    tokenContract,
                    tokenId
                )

                // Return the account address
                return(0x6c, 0x20)
            }

            // Otherwise, return the computed account address
            mstore(0x00, shr(96, shl(96, computed)))
            return(0x00, 0x20)
        }
    }

    function account(
        address implementation,
        bytes32 salt,
        uint256 chainId,
        address tokenContract,
        uint256 tokenId
    ) external view returns (address) {
        assembly {
            // Silence unused variable warnings
            pop(chainId)
            pop(tokenContract)
            pop(tokenId)

            // Copy bytecode + constant data to memory
            calldatacopy(0x8c, 0x24, 0x80) // salt, chainId, tokenContract, tokenId
            mstore(0x6c, 0x5af43d82803e903d91602b57fd5bf3) // ERC-1167 footer
            mstore(0x5d, implementation) // implementation
            mstore(0x49, 0x3d60ad80600a3d3981f3363d3d373d3d3d363d73) // ERC-1167 constructor + header

            // Copy create2 computation data to memory
            mstore8(0x00, 0xff) // 0xFF
            mstore(0x35, keccak256(0x55, 0xb7)) // keccak256(bytedcode)
            mstore(0x01, shl(96, address())) // registry address
            mstore(0x15, salt) // salt

            // Store computed account address in memory
            mstore(0x00, shr(96, shl(96, keccak256(0x00, 0x55))))

            // Return computed account address
            return(0x00, 0x20)
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"name":"AccountCreationFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"implementation","type":"address"},{"indexed":false,"internalType":"bytes32","name":"salt","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"chainId","type":"uint256"},{"indexed":true,"internalType":"address","name":"tokenContract","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC6551AccountCreated","type":"event"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"account","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"createAccount","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5061023b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063246a00211461003b5780638a54c52f1461006a575b600080fd5b61004e6100493660046101b7565b61007d565b6040516001600160a01b03909116815260200160405180910390f35b61004e6100783660046101b7565b6100e1565b600060806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff60005360b76055206035523060601b60015284601552605560002060601b60601c60005260206000f35b600060806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff60005360b76055206035523060601b600152846015526055600020803b61018b578560b760556000f580610157576320188a596000526004601cfd5b80606c52508284887f79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf887226060606ca46020606cf35b8060601b60601c60005260206000f35b80356001600160a01b03811681146101b257600080fd5b919050565b600080600080600060a086880312156101cf57600080fd5b6101d88661019b565b945060208601359350604086013592506101f46060870161019b565b94979396509194608001359291505056fea2646970667358221220ea2fe53af507453c64dd7c1db05549fa47a298dfb825d6d11e1689856135f16764736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063246a00211461003b5780638a54c52f1461006a575b600080fd5b61004e6100493660046101b7565b61007d565b6040516001600160a01b03909116815260200160405180910390f35b61004e6100783660046101b7565b6100e1565b600060806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff60005360b76055206035523060601b60015284601552605560002060601b60601c60005260206000f35b600060806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff60005360b76055206035523060601b600152846015526055600020803b61018b578560b760556000f580610157576320188a596000526004601cfd5b80606c52508284887f79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf887226060606ca46020606cf35b8060601b60601c60005260206000f35b80356001600160a01b03811681146101b257600080fd5b919050565b600080600080600060a086880312156101cf57600080fd5b6101d88661019b565b945060208601359350604086013592506101f46060870161019b565b94979396509194608001359291505056fea2646970667358221220ea2fe53af507453c64dd7c1db05549fa47a298dfb825d6d11e1689856135f16764736f6c63430008110033

Deployed Bytecode Sourcemap

1522:4408:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4688:1239;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;827:32:1;;;809:51;;797:2;782:18;4688:1239:0;;;;;;;1574:3106;;;;;;:::i;:::-;;:::i;4688:1239::-;4875:7;5135:4;5129;5123;5110:30;5208:32;5202:4;5195:46;5287:14;5281:4;5274:28;5347:42;5341:4;5334:56;5509:4;5503;5495:19;5565:4;5559;5549:21;5543:4;5536:35;5630:9;5626:2;5622:18;5616:4;5609:32;5688:4;5682;5675:18;5819:4;5813;5803:21;5799:2;5795:30;5791:2;5787:39;5781:4;5774:53;5904:4;5898;5891:18;1574:3106;1762:7;2752:4;2746;2740;2727:30;2825:32;2819:4;2812:46;2904:14;2898:4;2891:28;2964:42;2958:4;2951:56;3126:4;3120;3112:19;3182:4;3176;3166:21;3160:4;3153:35;3247:9;3243:2;3239:18;3233:4;3226:32;3305:4;3299;3292:18;3406:4;3400;3390:21;3506:8;3494:21;3484:1027;;3619:4;3613;3607;3604:1;3596:28;3705:8;3695:155;;3751:10;3745:4;3738:24;3826:4;3820;3813:18;3695:155;3959:8;3953:4;3946:22;;4385:7;4349:13;4312:14;4223:66;4099:4;4072;4045:366;4491:4;4485;4478:18;3484:1027;4619:8;4615:2;4611:17;4607:2;4603:26;4597:4;4590:40;4657:4;4651;4644:18;14:173:1;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:466::-;287:6;295;303;311;319;372:3;360:9;351:7;347:23;343:33;340:53;;;389:1;386;379:12;340:53;412:29;431:9;412:29;:::i;:::-;402:39;;488:2;477:9;473:18;460:32;450:42;;539:2;528:9;524:18;511:32;501:42;;562:38;596:2;585:9;581:18;562:38;:::i;:::-;192:466;;;;-1:-1:-1;192:466:1;;647:3;632:19;619:33;;192:466;-1:-1:-1;;192:466:1:o

Swarm Source

ipfs://ea2fe53af507453c64dd7c1db05549fa47a298dfb825d6d11e1689856135f167

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.