ByAUJay
Summary: A concrete, end-to-end playbook for commissioning and shipping production‑grade web3 contracts in 2025—covering specification, architecture (AA via ERC‑4337 and EIP‑7702), testnets and forks to target, audit strategy (static/dynamic/formal), verification (Sourcify/Etherscan V2), and mainnet launch hardening aligned to Pectra (May 7, 2025) and Fusaka (Dec 3, 2025). (blog.ethereum.org)
web3 contract development service: From Specs to Audits to Mainnet Launch
Decision-makers don’t need another high-level primer—you need a dependable path from an approved spec to a safe mainnet launch, with the 2025 protocol landscape (Pectra, Fusaka, 7702, PeerDAS) baked into every step. This is how 7Block Labs runs full‑cycle web3 engagements that ship.
What changed in 2025 (and why it affects your build plan)
- Ethereum’s Pectra hard fork activated on May 7, 2025. It shipped EIP‑7702 (opt‑in “programmable EOAs”), raised validator limits (EIP‑7251), and doubled blob capacity for rollups (EIP‑7691). If your roadmap includes wallet UX or layer‑2 cost models, your requirements changed. (blog.ethereum.org)
- Fusaka activated on Dec 3, 2025 at 21:49:11 UTC (slot 13,164,544). Headliners: PeerDAS (EIP‑7594) for cheaper L2 data, a default L1 gas limit of 60M (EIP‑7935), a new CLZ opcode (EIP‑7939), and the secp256r1 (P‑256) signature precompile (EIP‑7951). Expect immediate BPO blob‑throughput bumps on Dec 9, 2025 and Jan 7, 2026. Plan your fee, ops, and cryptography choices accordingly. (blog.ethereum.org)
- Testnet targeting shifted: Holesky support sunsets in 2025; Hoodi is now the validator/staking testnet; Sepolia remains the default app/dev testnet. If your CI/CD or test playbooks still assume Goerli/Holesky only, update them. (blog.ethereum.org)
- Solidity advanced meaningfully: 0.8.30 aligned defaults with Pectra and 0.8.31 (Dec 3, 2025) brought Fusaka support plus stronger storage‑layout tooling—important for upgradeable systems and 7702 storage placement. (soliditylang.org)
The 7Block Labs delivery track
We deliver in four gated phases. Each gate outputs artifacts your legal, risk, and engineering leaders can sign off on.
1) Product spec, threat model, and chain selection
Outputs: PRD + spec with measurable acceptance criteria, adversarial model, data/fee model, and chain/testnet plan.
What we lock down:
- Target forks and EIPs: confirm Pectra+Fusaka assumptions (e.g., per‑tx gas cap ≈ 16.78M via EIP‑7825; default L1 gas limit 60M via EIP‑7935; PeerDAS live). Your multicalls/batches and gas‑heavy admin ops must fit under EIP‑7825 or be split. (blog.ethereum.org)
- Account model: choose ERC‑4337 smart accounts, EIP‑7702 “smart EOAs,” or a hybrid (7702 for seamless address continuity + 4337 for mature infra like bundlers/paymasters). We document paymaster policy, rate‑limits, and signer UX (passkeys now first‑class thanks to P‑256 on L1). (docs.erc4337.io)
- Upgrade strategy: UUPS/proxy vs. modular diamonds (ERC‑2535) vs. immutable. If upgradeable, we standardize storage hygiene via storage gaps and/or ERC‑7201 namespaced storage. (docs.openzeppelin.com)
- Testnets and CI: Sepolia for app flows; Hoodi for validator‑adjacent logic (e.g., staking, blob producers). We codify which flows run where and why. (blog.ethereum.org)
2) Architecture and PoC
Outputs: reference architecture, proto contracts, interface docs, and a measurable security budget.
Concrete 2025 choices we recommend:
- Programmable EOAs (EIP‑7702) for smoother migrations: keep users’ EOA address while temporarily delegating to audited logic. Tooling matured: MetaMask’s Smart Accounts Kit exposes 7702 flows; Foundry’s forge‑std now provides 7702 cheatcodes to test authorizations locally. (docs.metamask.io)
- Passkey‑native auth without bridges: with EIP‑7951, verify P‑256 signatures on L1. This reduces friction for enterprise SSO and mobile biometrics. We add guardrails where non‑malleability or hardware policies are required. (blog.ethereum.org)
- Data availability economics: PeerDAS (EIP‑7594) changes blob proof formats and DA costs. We validate your rollup/L2 interactions against the new “cell proofs” and the BPO schedule, and size infra (indexers, explorers) accordingly. (blog.ethereum.org)
Example: 7702 authorization and execution with MetaMask Smart Accounts Kit
import { createWalletClient, http } from "viem"; import { sepolia } from "viem/chains"; import { privateKeyToAccount } from "viem/accounts"; import { getDeleGatorEnvironment, toMetaMaskSmartAccount, Implementation, } from "@metamask/delegation-toolkit"; const account = privateKeyToAccount(process.env.PK as `0x${string}`); const wallet = createWalletClient({ account, chain: sepolia, transport: http() }); const env = getDeleGatorEnvironment(sepolia.id); const delegatorImpl = env.implementations.EIP7702StatelessDeleGatorImpl; // 1) authorize contract code to your EOA (7702) const mmSmartAccount = await toMetaMaskSmartAccount({ walletClient: wallet, implementation: Implementation.EIP7702StatelessDeleGator, delegatorImplAddress: delegatorImpl, }); // 2) batch safe operations while EOA delegates await mmSmartAccount.sendTransaction({ to: targetAddress, data: batchedCalldata, });
This pattern gives you batching and sponsored gas while users keep their familiar address. (docs.metamask.io)
3) Dev, testing, and proofs
Outputs: code in a hardened monorepo, coverage/invariant dashboards, formal specs where applicable.
Toolchain we standardize (2025‑ready):
-
Solidity 0.8.31 set to the appropriate EVM version (Pectra/Prague or Fusaka/Osaka) and via‑IR pipeline for better analysis artifacts. For experimental EOF paths, we pin exact versions and disallow inline assembly that would break under EOF. (soliditylang.org)
-
Foundry for unit/integration/fuzz/invariant tests. New forge‑std helpers (7702, EIP‑712 helpers, deeper traces) make AA and complex signatures testable without scaffolding. Sample flags we use in CI:
forge test -vvv --fork-url $RPC --isolate --fail-fastforge coverage --report lcov --ffiforge test --fuzz-runs 20000 --match-path test/invariants/*.t.sol
We also enable Anvil trace logging and depth‑limited tree traces for exploit triage. (github.com)
-
Static and symbolic analysis:
- Slither (fast detectors, architectural printers) wired into PR gates. (github.com)
- Mythril for targeted symbolic paths in high‑risk modules. (github.com)
-
Property‑based fuzzing and invariants:
- Echidna 2.2+ with coverage guidance; we run long‑haul campaigns and store corpus artifacts. Example config:
testMode: assertion coverage: true seqLen: 40 testLimit: 500000 maxTime: 14400 # 4 hours per target multi-abi: true allContracts: true
-
Formal verification where it pays off:
- Certora Prover with CVL specs for critical invariants (e.g., collateralization, mint/burn conservation, role gated flows). We version rules, leverage parametric rules, and run the prover in CI on changed modules. (docs.certora.com)
-
Storage safety for upgradeables:
- Enforce storage gap reductions and/or ERC‑7201 namespaces; run OZ Upgrades validations in CI to block unsafe upgrades. (docs.openzeppelin.com)
4) Audit, verification, and launch readiness
Outputs: auditor‑ready repo, signed audit checklist, verified artifact links, and an incident response runbook.
What we do before you press “deploy”:
-
Attack‑surface freeze and audit package: threat model, dependency matrix, 3P oracle/price feeds, and fork‑specific risks (e.g., 7702 validation rules; P‑256 signature handling). We include coverage/invariant reports and Certora proofs.
-
External audit coordination: we front‑load findings with our internal pass so external time buys you delta confidence rather than first‑pass fixes.
-
Verification and reproducibility:
- Sourcify “exact_match” verification using compiler metadata (reproducible builds); expose ABIs and metadata programmatically via Sourcify API v2. (docs.sourcify.dev)
- Etherscan API V2 migration and multichain verification, with proxy verification endpoints for UUPS/transparent proxies. Note V1 deprecation deadlines (May 31, 2025 switch; full V1 shutdown Aug 15, 2025). (info.etherscan.com)
-
Operational drills: pause/guardian flows; break‑glass signer runbooks; event schema and analytics; production alerting on anomalous state transitions.
Practical examples we ship with your repo
A. Foundry config for Fusaka‑ready builds (Solidity 0.8.31)
# foundry.toml [profile.default] solc_version = "0.8.31" evm_version = "osaka" # Fusaka execution layer optimizer = true optimizer_runs = 200 via_ir = true ffi = true [fuzz] runs = 20000 seed = "auto" [invariant] runs = 512 depth = 128 fail_on_revert = false
Solidity 0.8.31 adds Fusaka support and extends storage layout specifiers—useful for namespaced storage in AA/7702 code paths. (soliditylang.org)
B. Invariant test skeleton for asset conservation
contract Invariants is Test { DeployedSystem sys; function setUp() external { sys = new DeployedSystem(); } function invariant_totalSupplyConserved() external { uint256 minted = sys.token().totalMinted(); uint256 burned = sys.token().totalBurned(); uint256 supply = sys.token().totalSupply(); assertEq(minted - burned, supply, "supply conservation"); } }
C. Slither and Echidna in CI
# Static analysis slither . --config-file slither.config.json # Property-based fuzzing docker run --rm -v "$PWD:/src" trailofbits/echidna:2.2.7 \ echidna-test /src/out/Your.t.sol/Your.json --config /src/echidna.yml
Slither provides fast structural findings; Echidna 2.2.7 adds better coverage and ARM builds for wider CI runners. (github.com)
D. Sourcify verification via metadata JSON
# Assuming build-info JSON or per-contract metadata.json available curl -X POST https://sourcify.dev/server/v2/verify \ -F "address=0xYourContract" \ -F "chainId=1" \ -F "files=@./artifacts/build-info/123.json"
Sourcify uses Solidity’s compiler metadata for byte‑exact verification and now exposes v2 lookup endpoints for programmatic checks. (docs.sourcify.dev)
E. Etherscan V2 multichain contract verification (proxy included)
# Source-code verification (V2) curl -X POST "https://api.etherscan.io/api" \ -d 'chainId=1&module=contract&action=verifysourcecode&...&apikey=$KEY' # Proxy verification (enforce expected implementation) curl -X POST "https://api.etherscan.io/api" \ -d 'chainId=1&module=contract&action=verifyproxycontract&address=0xProxy&expectedimplementation=0xImpl&apikey=$KEY'
Migrate to Etherscan API V2 to avoid deprecation; use proxy endpoints to keep explorer UX “Read/Write as Proxy” consistent for users. (info.etherscan.com)
2025‑aware best practices we enforce
- Don’t let single transactions exceed ≈16.78M gas (EIP‑7825). Split admin batches and design upgrade steps to fit the cap. (blog.ethereum.org)
- Prefer ERC‑7201 namespaced storage (or conservative storage gaps) for upgradeables; validate with OZ Upgrades on every PR. (eips.ethereum.org)
- If adopting 7702, keep delegator contracts stateless/minimal and time‑box authorizations. Test with forge‑std 7702 helpers and MM Smart Accounts Kit flows. (github.com)
- If adopting passkeys (P‑256), implement explicit malleability policies where needed; the precompile eases verification but your app‑layer UX/security policies still matter. (blog.ethereum.org)
- If you rely on blobs (L2 rollups), update tooling for PeerDAS proof formats and monitor BPO throughput changes beginning Dec 9, 2025. (blog.ethereum.org)
- Sunset Holesky in your CI; prefer Sepolia for app flows and Hoodi for validator lifecycle testing. (blog.ethereum.org)
Risk and audit reality check
Crypto losses swung wildly in 2025 (including a record Q1 dominated by CeFi incidents), but DeFi remains a persistent target. Our audit plan assumes motivated, well‑resourced adversaries and bakes in layered testing (static, fuzz, symbolic, formal) before external audit time. (theblock.co)
What our audit gate includes:
- Coverage and invariant thresholds (hard fails below targets).
- Manual review checklists for proxy/initializer footguns, cross‑chain bridges/oracles, reentrancy/approval races, rounding/overflow in fee math, and role/RBAC drift.
- Formal specs for monetary invariants and permission boundaries (Certora rules kept alongside code). (docs.certora.com)
Launch and post‑launch
- Verify everywhere (Sourcify exact match + Etherscan V2). Publish metadata and NatSpec to reduce support load and enable downstream integrators. (docs.sourcify.dev)
- Roll out feature flags and pausable modules. Practice break‑glass cutovers and emergency comms before mainnet.
- Observe on‑chain: alerts on unexpected storage deltas, event gaps, and price/oracle variance.
What you get with 7Block Labs
- A signed, testable spec aligned to Pectra/Fusaka realities.
- A repo with tests (unit/integration/fuzz/invariants), Slither/Mythril reports, and optional Certora proofs.
- An audit‑ready package and coordinated external review.
- Verified artifacts (Sourcify + Etherscan V2), an incident playbook, and a stable launch.
If you’re exploring wallets, fintech, DeFi, RWAs, or enterprise chain extensions, we’ll help you choose the right AA approach (4337, 7702, or both), design for PeerDAS blob economics, and ship without surprises.
References and change‑sensitive details we track for you
- Pectra and EIP‑7702 activation and scope. (blog.ethereum.org)
- Fusaka mainnet activation, BPO schedule, and included EIPs (PeerDAS, CLZ, secp256r1, gas‑limit). (blog.ethereum.org)
- Testnet transitions (Holesky → Hoodi; use Sepolia for app dev). (blog.ethereum.org)
- Solidity 0.8.30/0.8.31 releases and defaults (Prague/Osaka), storage layout updates. (soliditylang.org)
- Etherscan API V2 migration deadlines and proxy verification endpoints. (info.etherscan.com)
- PeerDAS proof‑format updates and blob throughput scaling plan. (blog.ethereum.org)
Ready to scope your build? We’ll turn your spec into a mainnet launch plan that reflects where Ethereum actually is today—not where it was last cycle.
Like what you're reading? Let's build together.
Get a free 30‑minute consultation with our engineering team.

