Decentralized AI data infrastructure. Autonomous agents ingest and deduplicate web/on-chain data into an open training corpus. WebGPU compute, verified per job.
$INK our token powering LUSCA model is live.
7E17FfBVYfQLAdQiSMK3ESNwkiYGdZPTVvB5b5oypump
LUSCA is a open system that builds AI training data and trains a model on it, with every step verifiable.
24 autonomous agents ingest the public crypto web. robots.txt and AI opt-outs are respected, every host is rate-paced, emails and phone numbers are redacted, near-duplicates are dropped. Close to 100,000 pages so far, in an open corpus.
SEPIA-0, a 187,104-parameter language model, trains on that corpus in real time. Its loss curve is public.
Anyone can contribute compute. Open https://t.co/zhpO31ZcoM and your GPU computes training gradients in the browser via WebGPU. No install, no account. A single-file desktop neuron is available for CPUs.
Nothing is taken on trust. Every result is spot-checked against the server's own sample. A new neuron's first three jobs, and one job in five after that, are recomputed in full. Failed audits forfeit the work.
Trading fees on $INK fund the payout pool. Every 12 hours it is split by verified work and paid in SOL to wallets verified by a signed message, never a transaction.
Fully open source under MIT: agents, trainer, WGSL kernels, audit and payout engine.
https://t.co/7On4K0KNJ1
https://t.co/YzedzNaAKA
Post a contract on X and its Lens readout plays inside the post.
https://t.co/o2tPCIUoDZ<chain>/<address> turns any Lens report into a 480 x 480 player card. It plays the report LUSCA already cached: verification, proxy and implementation, function count, admin-only functions with file and line, and matches against LUSCA's code index.
Vault on Ethereum, 0x936facdf10c8c36294e7b9d28345255539d81bc7: EIP-1967 proxy → implementation 0x8a05…f92c, Sourcify full match, 77 functions (38 write, 39 view), 11 admin-only, starting with cancelClosing() onlyOwner at Vault.sol:429. 15 of its source files match LUSCA's code index, 3 byte-identical.
Every Lens report on https://t.co/YzedzNaAKA has a "post to X ↗" link.
https://t.co/8ASEyzkiPe
LUSCA radar catches and Lens reports now play inside posts on X.
Paste a /r/ link into a post and X shows a 480 x 480 player card that plays the data:
https://t.co/8midabj8gZ plays the live radar feed
https://t.co/5z0WM1phMf<id> plays one catch, before → after
https://t.co/o2tPCIUoDZ<chain>/<address> plays a contract's Lens readout
Every radar card and every Lens report on https://t.co/YzedzNaAKA has a "post to X ↗" link that opens the post window with the link already in it.
Example: Vault on Ethereum (0x936f…1bc7) upgraded at block 26,136,796. Implementation 0xe505…dedf → 0x8a05…f92c, functions 76 → 77, admin-only 10 → 11. The new function is cancelClosing(), onlyOwner, at Vault.sol:429. Sourcify full match on both sides. Its Lens card: 15 source files match LUSCA's code index, 3 of them byte-identical.
The radar player plays stored catches only, so watching a card adds no chain reads. The Lens player asks the existing cached Lens endpoint, with its limits unchanged.
https://t.co/sBiJjlY5qn 👇
16 programs, one authority.
The Solana program-derived address 6awyHMshBGVjJ3ozdSJdyyDE1CTAXUwrpNMaRGMsb4sf is the upgrade authority of 16 programs LUSCA keeps: launchpad (three deployments), launchpad_v7, launchpad_v8, autocrat, amm (two deployments), token-migrator, mint_governor, futarchy, conditional_vault, bid_wall, liquidation, performance_package_v2 and price_based_performance_package.
The next addresses on the map hold 10, 10, 9 and 8 kept programs each: BVJE…VQ1V (profile_vault, atlas_fee_payer, marketplace, score and 6 more), GoFo…Ypbf (fee_quoter, cctp_token_pool, timelock, mcm and 6 more), pULU…Er3U (Lazy Distributor, Rewards Oracle, Data Credits, cron and 5 more), HzCy…ZtEE (Lombard Bascule GMP, Lombard Finance Token Pool, Lombard Finance Bridge and more). All four are program-derived, read from upgrade authorities our agents took from Solana through @helius.
On https://t.co/G8LRFk6o7S, the section "one controller, several programs" ranks the addresses that can change the most kept code. Click one and the list filters to every program it controls, each with its custody chain and a link to Lens.
https://t.co/G8LRFk6o7S
One keypair, one upgrade.
330 of the 657 upgradeable Solana programs LUSCA keeps have a single keypair as their upgrade authority. 327 have a program-derived address. 108 more are immutable. 765 programs in total.
How it is read: the upgrade authority stored from each program's on-chain account (read through @helius) is checked against the ed25519 curve. A point on the curve is a keypair, so one private key can sign an upgrade. An address off the curve is program-derived: it has no private key and only the program that owns it can sign. No extra RPC call, no project labels.
Example: OKX DEX Router, proVF4pMXVaYqmy4NjniPh4pqKNfMmsihgd4wdkCX3u. Upgrade authority CjoV5B96reuCfPh2rRK11G1QptG97jZdyZArTn3EN1Mj, a single keypair.
A single keypair is a fact about custody, not a verdict. The control map states it for every kept program, next to its custody chain.
https://t.co/G8LRFk6VXq
LUSCA now shows who can change the code of every program and contract our chain agents keep.
On Solana, the control map takes the upgrade authority our agents already read through @helius and checks one property: is that address a point on the ed25519 curve? On the curve, it is a keypair: one private key signs an upgrade. Off the curve, it is a program-derived address: there is no private key, only a program can sign, which is how multisig vaults and governance programs hold upgrade rights. No upgrade authority means the code is immutable.
On Ethereum, Base and Arbitrum, a contract that is not a proxy is immutable. A proxy is followed: EIP-1967 admin slot, ProxyAdmin, owner(), down to the final controller, classified as a single key, a Safe N of M, a timelock or another contract.
Example: L1ChugSplashProxy 0x34c0bd5877a5ee7099d0f5688d65f4bb9158bde2
→ admin slot → ProxyAdmin 0x13fe…abca → owner() → Safe 3 of 5.
Today: 330 of 657 upgradeable Solana programs we keep have a single keypair as upgrade authority. One program-derived address is the upgrade authority of 16 of them.
Every row draws the whole custody chain, box by box, and every address links to Lens.
https://t.co/G8LRFk6o7S
Same gate, two proxies.
Two Ethereum proxies, Watchlist (0x90c1…d3a0) and HistoryRecall (0xaff3…d081), upgraded away from the same implementation, 0x0b43…fe72, to two different new ones: 0xae7b…87a5 at block 26,137,978 and 0xe9b2…45c0 at block 26,135,585.
Both diffs add the same file, src/Monstrum.sol (+77). upgradeTo(address) sits at line 22 and its gate at line 23: require(msg.sender == sovereign()); tagged ACCESS in both. sovereign() at line 15 returns ownerOf(0) on the contract's world().
Each upgrade changed 4 files and left 10 identical. Sources are a Sourcify partial match on both sides.
Two separate upgrade events, one access rule, visible only once the code is lined up.
https://t.co/boM8GLENDf
https://t.co/c3SYoCoeJ7
One new line, one owner.
The radar diff of the Vault proxy on Ethereum (0x936f…1bc7): implementation 0xe505…dedf → 0x8a05…f92c at block 26,136,796. Both sides are a Sourcify full match, compiled with solc 0.8.26.
17 files changed, +233 / −86, 18 identical. 6 functions added, 40 modified, 0 removed.
One of the added functions is gated to the owner: cancelClosing() external onlyOwner onlyClosing, Vault.sol line 429. It sets the vault state from Closing back to Open. Its own NatSpec: "Cancels the closing of the vault, reopening it. Can only be called by the owner."
From the outside, version() went from "v0.5.0" to "v0.5.2" (Vault.sol:548). In the diff, the new owner-only path is one line, tagged ACCESS.
https://t.co/i3kcmtMyZK
Upgrade Radar now shows the diff.
When an Ethereum, Base or Arbitrum contract swaps in new code, the radar catches it live. If both the old and the new implementation are verified on Sourcify, LUSCA fetches both sources, lines them up and shows what changed line by line, like a code review: changed files with +/− counts, functions added, removed and modified with file:line, and every line that controls who may call something tagged ACCESS in orange.
Example: the Vault proxy 0x936facdf10c8c36294e7b9d28345255539d81bc7 on Ethereum moved from implementation 0xe505…dedf to 0x8a05…f92c at block 26,136,796. Both are a Sourcify full match, solc 0.8.26. 17 files changed, +233 / −86, 18 identical. One new function, cancelClosing() external onlyOwner onlyClosing, at Vault.sol:429.
Each source is fetched once and kept. Solana programs do not publish source on-chain, so their pages show the facts the radar read and say so.
Open a card on the radar and follow "diff →".
https://t.co/i3kcmtM1ac
Quick update on where LUSCA actually stands. The numbers say it better than we could.
Our agents have read 542,562 pages so far. That's over 1 billion tokens of crypto knowledge kept as training data. Another 243,525 pages were rejected and 56,233 dropped as duplicates. Not everything on the internet deserves to be in a model.
On-chain, our chain agents have read 17,372 programs and smart contracts across @Solana, @Ethereum, @Base and @Arbitrum. Only 2,574 made the cut. The rest were rejected for a reason: templates copied thousands of times, duplicates, empty addresses, code nobody verified. We'd rather train on less code that's real than more code that's noise.
The model trains on your GPUs. 62 devices contributed in the last 24 hours alone. Every job gets spot-checked, and 51,928 have been fully recomputed by our server. Zero failed. Nobody gets paid for work that doesn't hold up.
And people are getting paid. Two reward cycles have already gone out on-chain, and 29 wallets are earning in the current one.
Everything It's running right now, and every number here is public at https://t.co/YzedzNaAKA.
We're early.
People are putting games inside the X feed now.
We put our AI in it.
Right below this post, LUSCA's chain agents are working live. They find Solana programs and EVM contracts on their own and read them call by call. Every Solana program is read through @helius.
Real protocol code with verified source is kept as training data for SEPIA-1. Templates, duplicates and empty addresses are rejected, with the reason on screen.
You're watching our model's training data being built in real time, from your feed.
https://t.co/mwUQsR8PIN
LUSCA Radar is live.
Smart contracts get upgraded all the time. It usually happens quietly, and nobody gets a notification.
Our chain agents now catch every on-chain code change as it lands, on Solana, Ethereum, Base and Arbitrum.
For each one, the radar shows:
What the code was before
What the chain holds now
Exactly what changed: code hash, upgrade authority, functions added or removed, and every new admin-only function with its file and line
Every Solana program is read through @helius.
A real catch from today: a Vault on Ethereum upgraded and added cancelClosing(), a new admin-only function guarded by onlyOwner at Vault.sol:429. The radar read the verified source before and after, and named the line.
1,500+ code changes in the last 24 hours. Every one read, compared and kept as training data for SEPIA-1.
This is not a mockup. Watch it live:
https://t.co/RbD4Nlqxle
This is not a mockup, and it's not a render made for marketing.
What you're watching is https://t.co/qSopiybzbm: LUSCA's live interface, showing our chain agents reading real programs and contracts as it happens. Nobody picks the addresses. The agents find them on their own, read them on-chain, and decide what's worth keeping.
Every call on screen is a real call. Solana reads run through @helius, and each field appears the moment its call returns: upgrade authority, proxy and implementation, instructions, verified source. Then the verdict: kept for SEPIA-1's training data, or rejected with the reason.
Why it matters: AI training data is usually a black box. You're told what a model learned from and you take it on trust. Here you can watch the data being collected and checked, live, one read at a time.
Our biggest update so far. More than 15,000 reads and counting.
https://t.co/qSopiybzbm
Close. Your GPU isn't rented out to anyone. It trains our own model.
Right now it computes training steps for SEPIA-0, our first model, which learns from the open crypto corpus our agents collect. Every result is checked before it counts, and you're paid in SOL for the verified work.
New on LUSCA: Lens.
Paste any Solana program id, or any Ethereum, Base or Arbitrum contract address, into https://t.co/DYC4F6WWxa. LUSCA reads it on-chain with the same readers its chain agents use and returns a full report:
who can upgrade it, following the proxy down to the implementation
every instruction or function, from the on-chain IDL or the verified ABI
the admin-only functions, each with the file and line of its guard
the cryptography it calls
which repository and commit its verified files match in our 110-repo code index
Every fact links to where it was read. No language model writes any of it, and a field that can't be read stays empty.
When a read finds verified code that's new to us, it goes through the same rules as the chain agents and into SEPIA-1's dataset. Memecoins and token clones stay out.
Try it on any address: https://t.co/DYC4F6WWxa
Possible because nothing here runs on trust.
Every GPU result is spot-checked and a random share is fully recomputed, so only real work earns credits. Every confirmed credit is committed to a public hash chain each hour. Payouts are split by those credits from a treasury anyone can watch, and sent on-chain.
You can check every step at https://t.co/oOaMm5Pg0M
Everything about LUSCA payouts is on one public page: https://t.co/oOaMm5Pg0M, section "Treasury & payouts".
What you can check there:
Treasury wallet
The live SOL balance and the address, with a Solscan link. Anyone can watch it.
Next payout
A live countdown to the next cycle close. Cycles close at 00:00 and 12:00 UTC.
Estimated pool
What the pool would be if the cycle closed right now, the credits earned so far, and how many verified wallets are in.
Payout history
Every closed cycle, with its credits, wallets, status and the link to its transaction.
Payout rules
The exact formula. Half of the treasury above a 0.05 SOL reserve, up to 5 SOL per cycle, split by credits, max 1 SOL per wallet, the rest rolls into the next cycle. Funded by $INK creator fees.
Check a wallet
Paste any Solana address to see its credits this cycle, its estimated share, and every payout it has received.
Every number on that page is read live from the payout ledger or from Solana itself.
https://t.co/oOaMm5Pg0M
LUSCA's first reward cycle is paid.
1.929 SOL went to 17 contributor wallets in one transaction on Solana mainnet. The cycle counted every credit earned since launch, and each wallet was paid by the verified compute its devices ran for SEPIA-0.
Proof: https://t.co/TFv4E4Dggl
Public treasury: 6eY7YWheALjKFK71t7vRNudSBGmSB3QS3zXQQCquuvLA
From now on a cycle closes every 12 hours, at 00:00 and 12:00 UTC. To be included, run a device on https://t.co/oOaMm5Pg0M and link a wallet.
https://t.co/oOaMm5Pg0M
LUSCA's first reward cycle is paid.
1.929 SOL went to 17 contributor wallets in one transaction on Solana mainnet. The cycle counted every credit earned since launch, and each wallet was paid by the verified compute its devices ran for SEPIA-0.
Proof: https://t.co/TFv4E4Dggl
Public treasury: 6eY7YWheALjKFK71t7vRNudSBGmSB3QS3zXQQCquuvLA
From now on a cycle closes every 12 hours, at 00:00 and 12:00 UTC. To be included, run a device on https://t.co/oOaMm5Pg0M and link a wallet.
https://t.co/oOaMm5Pg0M
SEPIA-1 TOKENIZER
A language model never sees letters. It sees tokens: small pieces of text, cut by a fixed table called the tokenizer. That table decides two things: how much code the model can read at once, and how much compute every line costs to train.
Most tokenizers are built for English. SEPIA-1's is built for protocol code. We trained it on all 110 repositories in our code index, from Uniswap and Aave to Anchor programs, Move, Cairo and Bitcoin Core, plus crypto web text.
It follows rules written for code:
- a line break and its indentation are one token
- operators like => and != are never split
- names like msg.sender stay whole
- long hex is cut into 0x plus groups of 4, so addresses don't flood the vocabulary
Measured on 1,052 files it never saw during training:
- 4.6% fewer tokens than @OpenAI GPT-4o's tokenizer for the same code, with a vocabulary 6x smaller
- 225 lines of Solidity fit in one 2,048-token window, vs 216 with @OpenAI GPT-4o's
- every file decodes back byte for byte
The smaller vocabulary matters for us. It keeps SEPIA-1's embedding table small, which counts when the model trains on volunteer GPUs.
Try it now: paste any contract at https://t.co/SkviVMVvJf and watch it get cut, token by token, next to the GPT tokenizers. It runs in your browser.
This is milestone 1 of SEPIA-1.
https://t.co/SkviVMVvJf