NoChain ClickFix kit
NoChain is a ClickFix kit that keeps its scripts and its lure page inside a smart contract on Base, loaded by a fake WordPress plugin. We have matched it on 3,140 sites since 2 August.
NoChain in numbers
Since 2 August, the first NoChain match in our records, counted on 12 November 2026. How we count.
| Sites with NoChain code | 3,140 |
|---|---|
| Sites with a match in the last 30 days | 1,214 |
| New sites in October | 135 |
| Still serving it when recaptured at least 25 days later | 1,169 of 1,582 sites (74%) |
| Sites running WordPress (captured since 25 September) | 93% |
A fake plugin and a service worker
NoChain installs a plugin in a folder named site-helper- followed by twelve hexadecimal characters. It ships its own copy of ethers.min.js and runtime files with harmless names: diag-runner.js, health-probe.js, runtime-sample.js, front-probe.js. The page carries a settings object, window.wpSiteDiag, holding the contract address, the local ethers file and timing settings. Older builds called it wpPerfSample.
The page also registers a service worker for the whole site, such as nochain-sw.js, which gives the kit a second way back in. The registration skips WordPress administrators, logged-in users and anyone with an nc_skip=1 cookie, so the people running the site are the last to see it.
The code lives in the contract
NoChain's contract on Base holds the code itself. It answers getActiveScripts() with lists of IDs, names and JavaScript, and the loader runs each script in order and caches it. A second pair of calls, hasDemoPage() and getDemoPage(), returns a page the loader installs over the whole screen. That page is the lure.
Large pages are packed. An nc-blob: value is split into chunks, Base64-encoded and gzipped. An ob: value shifts every byte by a seed plus its position modulo 13, then reverses the result. Any controller address sits inside the returned code. The loader reads the contract through several public Base RPC services with failover.
Leftovers after cleanup
On cleaned sites we have found the plugin's settings and script tag still in the page while the runtime file is gone, or the worker replaced by one that unregisters itself. WP Rocket can also delay the plugin script until a visitor interacts with the page, so a quick scan can miss a live file.
What we see
| Month | New sites |
|---|---|
| September | 848 |
| October | 135 |
| November so far | 21 |
We matched NoChain on 2,136 sites in August. Of the 1,582 sites recaptured at least 25 days after their first match, 1,169 were still serving it (74%). 93% of NoChain sites captured since 25 September run WordPress.
Checking a site
In WordPress, look for a plugin folder named site-helper- with a random suffix, or files named diag-runner.js, health-probe.js, runtime-sample.js or front-probe.js. In the page source, look for a wpSiteDiag or wpPerfSample object. In your browser's developer tools, check the Application panel for a service worker registered on your site that you did not add.
After removing the plugin, unregister the service worker and purge the site's cache, or the old copies keep running.
Contracts we read
We read 1 NoChain contract every day.
| Chain | Contract | Current destinations | Last changed |
|---|---|---|---|
| Base | 0x58460d0b3d4d6b03761c89120393c0c676676496 | timelevel12[.]com |
The EtherHiding contract tracker keeps the full destination history.
Hosts its commands download from
NoChain lure commands we captured download from 3 hosts.
| Host | Sites | Last seen | Latest command |
|---|---|---|---|
timelevel12[.]com | 543 | CommandURL First seen 29 September 2026, 1 URL on this host. | |
cache-assistant[.]com | 2 | CommandURL First seen 15 September 2026, 1 URL on this host. | |
journeylake11[.]com | 1 | CommandURL First seen 21 September 2026, 1 URL on this host. |
The ClickFix command tracker lists every host.