Skip to content

Storage Layout

DISCLAIMER // NFA // DYOR

This analysis is based on observations of the contract behavior. We are not smart contract security experts. This document aims to explain what the contract appears to do based on the code. It should not be considered a comprehensive security audit or financial advice. Always verify critical information independently and consult with blockchain security professionals for important decisions.

⊙ generated by robots | curated by humans

METADATA
Contract Address 0x00000000...4e6f2a (etherscan)
Network Ethereum Mainnet
Analysis Date 2026-10-27

Variables

SafeSummoner declares no State Variables. Every function is either pure, view, or writes only to other contracts, and slot 0 reads as zero at block 26,284,732.

SLOT VARIABLE NAME TYPE CURRENT VALUE PURPOSE
— none — 0x00…00 at slot 0 No storage layout

Its configuration lives in six file-level constants, compiled into the runtime bytecode. They cannot be changed; a different set of addresses would require a different deployment.

CONSTANT TYPE VALUE USE
SUMMONER ISummoner (Majeur factory) 0x00000000...eE9138 (etherscan) Called by every summon path; also the CREATE2 deployer in the Decentralized Autonomous Organization (DAO) address prediction
MOLOCH_IMPL address 0x643A45B5...0673C1 (etherscan) Embedded in the clone creation code for DAO address prediction. Never called
SHARES_IMPL address 0x71E9b38d...Acf600 (etherscan) Shares clone address prediction
LOOT_IMPL address 0x6f1f2aF7...7bc6A5 (etherscan) Loot clone address prediction
SHARE_BURNER address 0x00000000...c3Aa9f (etherscan) Default permit target when burnSingleton is zero
RENDERER address 0x00000000...D6E654 (etherscan) Passed as the renderer by every preset

The prediction constants have to agree with the Summoner's implementation immutable and with the Moloch implementation's sharesImpl and lootImpl immutables for the encoded init calls to land on the right addresses. The Majeur analysis records SUMMONER, sharesImpl and lootImpl in the Moloch runtime bytecode; the prediction check compares them against every summoned DAO.

Account-level state that does exist:

FIELD VALUE AT BLOCK 26,284,732 MEANING
ETH balance 0 No funds held
Nonce 91 1 at creation plus one per successful create2Deploy. Summons do not increment it, because the Summoner performs that CREATE2
Code size 18,730 bytes Runtime bytecode; 5,846 bytes below the EIP-170 limit

Diagrams

graph TB
    subgraph Storage["Contract Storage"]
        S0["Slot 0..n: unused — always zero"]
    end

    subgraph Constants["Bytecode Constants — immutable by construction"]
        C1["SUMMONER<br/>0x00000000...eE9138"]
        C2["MOLOCH_IMPL<br/>0x643A45B5...0673C1"]
        C3["SHARES_IMPL<br/>0x71E9b38d...Acf600"]
        C4["LOOT_IMPL<br/>0x6f1f2aF7...7bc6A5"]
        C5["SHARE_BURNER<br/>0x00000000...c3Aa9f"]
        C6["RENDERER<br/>0x00000000...D6E654"]
    end

    subgraph Account["Account State"]
        A1["balance: 0"]
        A2["nonce: 91"]
    end

    C1 --> PRED["DAO address prediction"]
    C2 --> PRED
    PRED --> TOK["Shares / Loot prediction"]
    C3 --> TOK
    C4 --> TOK

    style S0 fill:#e1f0ff
    style C1 fill:#ffe1e1
    style PRED fill:#fff4d6