Skip to content

Commit d31e90f

Browse files
MaxBrychclaude
andcommitted
feat(contracts): CommunityRegistry LIVE on Gnosis — 0x1c4B…F889, Blockscout-verified, the address book opens
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent f6866c8 commit d31e90f

4 files changed

Lines changed: 27 additions & 2 deletions

File tree

CLAUDE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ Full Base→Gnosis consolidation. **Fresh `AttesterNFTv2` + `CitizenNFTv2`** wit
106106
- Timelock: `0x5b358A77E89FF3d699607b4fC235b381d67f3d05` (Governor=proposer; deployer renounced admin; original v2 Timelock `0xB5605f9F…` archived 2026-06-27)
107107
- MaciAttesterGovernor: `0x5F5e499Dc1872c2Ce19a4b50cd10f680e78E3Ba3` (wired to v2 NFTs + new MACI; reuses the existing Shamir coordinator pubkey/EOA `0x5e6528D2…`; **re-deployed twice on 2026-06-27** — originals `0x140F0eC6…` + `0xDC250315…` archived under timestamped keys in `deployments/gnosis-v2.json`; source of truth = that manifest + `packages/blockchain/src/index.ts`)
108108
- NFT owner = Attester **Safe** `0x3A08c86Efc5ff38CC35d850F1D4d564e497bFDEa` (threshold changes = Safe tx; D2 keeps Safe ownership for bootstrap — hand to Timelock later for full on-chain governance).
109+
- CommunityRegistry: `0x1c4B243a5f72248aEFcd6F11caf0d3cFAe9fF889` (deployed + Blockscout-verified 2026-07-31 — unowned, admin-free community address book, one per chain; records self-sovereign under each community's timelock/Safe; written by `scripts/community-factory.cjs`, consumed by `netizen deploy --merge`; record: [`deployments/community-registry.json`](contracts/governor-contract/deployments/community-registry.json))
109110
- Source of truth: [`contracts/governor-contract/deployments/gnosis-v2.json`](contracts/governor-contract/deployments/gnosis-v2.json).
110111
- **App cutover SHIPPED — merged to `main` (branch fully merged, 0 unique commits; cutover commit `e75270d`, 2026-06-25).** The chain flip (`base``gnosis`), v2-ABI changes, and the apps targeting the v2 contracts are live on `main`: [`packages/blockchain/src/index.ts`](packages/blockchain/src/index.ts) marks the Gnosis v2 addresses as the **active** set and the Base stack as **archived**. `feat/gnosis-v2-sybil-hardening` is now 142 commits behind `main` with nothing to merge. The remaining rollout steps are **operational, not code** (MACI re-signup per citizen; Vercel/Fly env for chain / `GNOSIS_BUNDLER_RPC_URL` / coordinator). The earlier "Gnosis migration" was identity-only (the v1 `0x6FF3…`/`0x7bD6…` NFTs that gate Circles); those are **superseded** by the v2 contracts above.
111112

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"chain": "gnosis",
3+
"chainId": 100,
4+
"contract": "CommunityRegistry",
5+
"address": "0x1c4B243a5f72248aEFcd6F11caf0d3cFAe9fF889",
6+
"deployedAt": "2026-07-31",
7+
"deployer": "0xd5028284017A32C672CbD73Fe35aCD897bA874cf",
8+
"creationTx": "0xb548c68ed3c518966e563426bfda37c81a66285aeacaa6a34968fcc537c02702",
9+
"verified": "https://gnosis.blockscout.com/address/0x1c4B243a5f72248aEFcd6F11caf0d3cFAe9fF889",
10+
"note": "Unowned, admin-free community address book — one per chain. FCFS bytes32 ids (keccak256 of the community slug); each record is writable only by its own controller (the community's timelock/Safe). A phone book, not a root of trust. Registered by community-factory.cjs stage C; consumed by netizen deploy --merge, Atlas, and any indexer. Spec: docs/superpowers/specs/2026-07-31-community-registry-and-manifest-presets-design.md."
11+
}

contracts/governor-contract/hardhat.config.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,21 @@ module.exports = {
6969
// Etherscan v2 unified API — single key works across all chains; the chain is
7070
// selected via the network name + chainId. Per-chain apiKey objects were
7171
// deprecated when Basescan/Etherscan v1 endpoints were sunset (May 2025).
72-
apiKey: BASESCAN_API_KEY,
72+
// Blockscout (gnosis) accepts any non-empty key; Etherscan v2 needs the real one.
73+
apiKey: {
74+
base: BASESCAN_API_KEY,
75+
baseSepolia: BASESCAN_API_KEY,
76+
gnosis: "blockscout",
77+
},
7378
customChains: [
79+
{
80+
network: "gnosis",
81+
chainId: 100,
82+
urls: {
83+
apiURL: "https://gnosis.blockscout.com/api",
84+
browserURL: "https://gnosis.blockscout.com",
85+
},
86+
},
7487
{
7588
network: "base",
7689
chainId: 8453,

contracts/governor-contract/scripts/community-config.example.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,6 @@
3333
},
3434
"votingPeriodSeconds": 3600,
3535
"tallyGracePeriodSeconds": 604800,
36-
"registry": "<CommunityRegistry address on the target chain>",
36+
"registry": "0x1c4B243a5f72248aEFcd6F11caf0d3cFAe9fF889",
3737
"skipVk": false
3838
}

0 commit comments

Comments
 (0)