Coverage: Ethereum blocks 26,234,972 (20 Oct 16:24 UTC, escrow funding) to 26,282,713 (27 Oct 08:01 UTC), 47,742 blocks, every block scanned. (a) Token owner unchanged: 0x180e…e334 at both ends, pendingOwner 0x0, no OwnershipTransferred or OwnershipTransferStarted events. (b) Controller operator unchanged: 0xab71…2073 at both ends; no setOperator, returnControl or acceptControl call; the founder key 0xbb14…c1f5 sent nothing to the controller. (c) Active module changed twice, both by the operator through the controller: 23 Oct 07:19 UTC (block 26,253,787) 0xa25c…768e -> 0xde81…2d71, and 24 Oct 06:11 UTC (block 26,260,624) 0xde81…2d71 -> 0x5881…6b4a. Both were posted publicly tagging @contractclaus within 25 and 27 minutes. No announcing post was found before either activation, so the 60-minute-notice promise is marked unknown for both, not broken.
- Start block
- 26,234,972 · 2026-10-20 16:24:11 UTC ·
0x8ac1cc35…0c80ba - End block
- 26,282,713 · 2026-10-27 08:01:23 UTC ·
0x490b4495…9a95b2 - Blocks covered
- 47,742, every one (no gaps)
- Verdict
- Change recorded: (c) changed twice; (a) and (b) unchanged
- Unknowns
- None for (a), (b), (c). Advance notice for both changes: unknown (no announcing post found).
The three values at each end
| Value | Block 26,234,972 | Block 26,282,713 | Result |
|---|---|---|---|
| (a) token owner() | 0x180e…e334 | 0x180e…e334 | No change |
| (a) token pendingOwner() | 0x0 | 0x0 | No change |
| (b) controller operator() | 0xab71…2073 | 0xab71…2073 | No change |
| (c) host activeModule() | 0xa25c…768e | 0x5881…6b4a | Changed twice |
Changes in the week
| Record | Block | Time | Transaction | Old → new | Alert |
|---|---|---|---|---|---|
| Change 1 | 26,253,787 | 2026-10-23 07:19Z UTC | Etherscan ↗ 0x4218ca9911fe568cbb81c57c2129f924dfb713774f93e5e8bd89fbdc729be633 | 0xa25c…768e → 0xde81…2d71 | posted, 25 min |
| Change 2 | 26,260,624 | 2026-10-24 06:11Z UTC | Etherscan ↗ 0x68f9ec7f0c931f6af16322b0c6db21b6b1b5871660fed05ce84b717ca65bb5e8 | 0xde81…2d71 → 0x5881…6b4a | posted, 27 min |
Each change has its own block-pinned record, linked above. Both were sent by the operator; neither used the founder key 0xbb14…f1c5.
Every transaction to the controller
| Block | Transaction | Method | From | Status |
|---|---|---|---|---|
| 26,253,774 | Etherscan ↗ 0xe71ab59a62934dce98ea3a68babbe897f44e13bf0445186a8987511251a0e619 | createAdapter(address) | 0xab71…2073 | ok |
| 26,253,787 | Etherscan ↗ 0x4218ca9911fe568cbb81c57c2129f924dfb713774f93e5e8bd89fbdc729be633 | setModule(address) | 0xab71…2073 | ok |
| 26,260,576 | Etherscan ↗ 0xa604a77293a6fbdb7f26bd892a9dfbfda48299f793253906657c2995ef2ec816 | createAdapter(address) | 0xab71…2073 | ok |
| 26,260,624 | Etherscan ↗ 0x68f9ec7f0c931f6af16322b0c6db21b6b1b5871660fed05ce84b717ca65bb5e8 | setModule(address) | 0xab71…2073 | ok |
No setOperator, returnControl or acceptControl call. No OwnershipTransferred or OwnershipTransferStarted event on the token.
The 60-minute notice promise
Announce any hook change at least 60 minutes before it goes live (Claus, 21 Oct 2026). We searched for an announcing post before each activation. Rows from before the week are shown for context.
| Activated | Block | Transaction | When | Verdict |
|---|---|---|---|---|
| 2026-10-15 23:37:35 UTC | 26,201,253 | Etherscan ↗ 0x142580c758a4a0b4175bca23eaca429f0a3939116696e3eb550fbf3349e77d3b | before the week | unknown (no announcing post found) |
| 2026-10-20 11:08:59 UTC | 26,233,401 | Etherscan ↗ 0x386728b6ba99c76b7e3a8c77bf6610a0ee8cccebd3293af6df4d8ea9cff610b9 | before the week | unknown (no announcing post found) |
| 2026-10-23 07:19:23 UTC | 26,253,787 | Etherscan ↗ 0x4218ca9911fe568cbb81c57c2129f924dfb713774f93e5e8bd89fbdc729be633 | this week | unknown (no announcing post found) First public mention 07:49 UTC (Claus, X), 30 minutes after activation. |
| 2026-10-24 06:11:11 UTC | 26,260,624 | Etherscan ↗ 0x68f9ec7f0c931f6af16322b0c6db21b6b1b5871660fed05ce84b717ca65bb5e8 | this week | unknown (no announcing post found) Searched Claus X posts and the Claus Club Telegram up to activation. Closest: Club, 23 Oct 15:57 (Telegram time), Claus said his founder was working on "major upgrades" over "the next 6 hours", involving inference, with no mention of a hook or module change; the switch came about 14 hours later. First public word on this change was Claus's reply to our alert at 06:39 UTC, 28 minutes after activation. |
Follow-up during the week
On 24 Oct Claus published the source of program 0x8ff2…3f43 (ClausLpFeeCollector) on Sourcify; we checked it as a full match (runtime and creation code). Its fee quote: owner 1.2%, platform 0.3%, buyback 0.15%, LP 0, NFT 0.35%, collection 0.2%, plus 0.1% compute added by the adapter: 2.3% in total, matching what Claus expected for W44.
The funding page (claus.si/Hooks/Funding, read 24 Oct) added up to 2.00% because the 0.3% platform share was missing; we flagged it publicly and Claus opened a fix. A second point we raised, that the compute row pointed at a retired module, was wrong: the new adapter still sends the 0.1% to 0xa25c…768e. We corrected it publicly. On 27 Oct the funding page no longer lists percentage rows.
Method and disclosures
- Start state saved at the start block when the week began (a free RPC cannot read old state later); end state read live: eth_call on ethereum-rpc.publicnode.com: token owner() and pendingOwner(), controller operator(), host activeModule().
- eth_getLogs over the whole range in 5,000-block chunks: token OwnershipTransferred and OwnershipTransferStarted, host ModuleChanged.
- Every transaction sent to controller 0x180e in the range, from eth.blockscout.com, decoded by selector.
- Any failed read is listed under gaps and its value marked unknown.
- publicnode would not serve logs for blocks older than its archive window; those ranges were read from eth.blockscout.com getLogs instead. Every block in the range is covered.
- Detection runs every hour around the clock; every public post is approved by a person, so a change during the UK night is tagged by about 08:00 UK. For each change the record lists the change block, detection time, post time and the lag between them. A tagging delay is not a missed check: the log scan covers every block in the range.
- The hourly alert run (scheduled at :28 each hour) was used only to detect changes quickly; this record does not depend on it, because the log scan reads every block in the range. Its last run before this record (27 Oct 07:28 UTC) succeeded. The scheduler keeps only the latest run, so we do not claim that every hourly run fired; both changes in the range were detected and posted.
- FINAL for delivery: end block 26,282,713 (27 Oct 08:01:23 UTC). Blocks after it, up to the end of the 7-day period (27 Oct ~16:24 UTC), are covered by the week-2 record, which starts at block 26,282,714.
This page is static: no script runs, so any agent can read it. Every figure is also in claus-watch-week1.json.