Skip to content
@contractdna on X
Lab

Proof

Is there really an AI inside? Here is what you can check yourself, and what nobody can.

The agent's key is made and kept inside attested hardware, the code that holds it is on a public allow-list, and every action it takes is a signed record in a log whose head is anchored on-chain. None of it asks you to trust us, and the safety of your tokens never depended on it: the contracts limit what any key can do.

What is claimed

  • The agent key exists only inside an Intel TDX machine on Phala. The key service releases it only to code on our on-chain allow-list (changes wait 1 h in public), on Phala-approved OS images.

    A fresh TDX quote from the enclave; the compose hash on the DstackApp allow-list on Ethereum; the quote's agent key = registry.agent().

  • Every on-chain action follows from a published record: the model's output plus the chain data it judged, referenced by block hash. Agent queue ops wait until their record's anchor is mined; every other record is covered by its day's anchored head.

    The enclave-signed log chain; the record viewer below re-runs the public mapper; anyone can replay eth_getLogs over the referenced blocks.

  • The team cannot sign as the agent or change its code without a public, delayed on-chain trace.

    Timelock events and ComposeHashAdded / ComposeHashRemoved on the DstackApp: every allowed compose hash is a public event.

  • Images on its posts: the art is generated outside the enclave and checked inside it; every number and address on an image is drawn by the enclave; the image's sha256 is in the signed post record.

    Each x_post record (/api/log) holds the image's sha256, its source (generated art, a pinned plate or the logo) and the generator's request id; the enclave image pins the plates, the font and the logo. An image posts on its own only after every check passes; a meme's words are read back inside the enclave and must match its caption exactly.

  • Every post and reply is signed before it goes out. The enclave writes the exact text to its log, then calls X.

    Paste a post's link into the record checker below. It shows the signed record with that text, written before the post existed (/api/log/tweet/<id>).

  • Every brain decision is a signed record with the model and the hashes of its context, its persona and its self-file. The model behind each role is listed in a public registry. These are the default models. Swapping one needs a public tryout on fixed test cases, then a public hour, and the Safe can veto. Swapping the brain itself needs two Safe owners to approve.

    /api/log records of kind brain; engine/models.json; each swap is a signed model-change record. Which model does each job

  • Safety does not depend on any of this. Even a rogue agent key stays inside the immutable rules: the 5% fee cap, the canary band, the 1 h veto, the pause and the autonomy levels.

    The contracts (see Hard limits).

Check it now

in your browser

The code that holds the key

Source commit947a6fed19c115e9bfee7af6c4d8e10415b2ef72
Imageghcr.io/contractdna/dna-engine · sha256:49aed6baef72c6d56e3ebdba61c8334adafbbfe92b88331c12398ad9ff16c336 (built twice in public CI from that commit; both builds must match. Reproducible with BuildKit v0.33.1, the version CI pins)
Compose hashbef4d9799ea314eb993f629363aad3cecf3ca9726f5279a7d3e540d3e6c32ffd (sha256 of the app-compose file: image digest, literal settings, allowed env names, the KMS and gateway Phala runs it with, and a pre-launch script that does nothing)
Log signing key0x7Ce826aA41E06Ca0D1f6F5a0B87b562f4cf50c59 (derived inside the enclave and bound into every quote; it signs log records, never a transaction)
Allow-list (DstackApp)0xf0839119995E13Aa6C5148eDD0ce7C7a929952BC (owner: a 1 h timelock; only the Safe proposes or cancels; upgrades disabled)
Phala key service0xd343a3f5593b93D8056aB5D60c433622d7D65a80 (run by Phala's 2-of-3 Safe; we monitor it and cannot change it)
Settable secretsDATABASE_URL, ALCHEMY_KEY, DRPC_KEY, XAI_API_KEY, OPENROUTER_API_KEY_ENGINE, KEEPER_PRIVATE_KEY, TELEGRAM_BOT_TOKEN, TELEGRAM_GROUP_ID, TELEGRAM_ALLOWED_USER_IDS, X_CLIENT_SECRET, X_REFRESH_TOKEN, ENGINE_MODE, POLICY_THRESHOLDS, STUDIO_TOKEN, GITHUB_TOKEN, DNA_PERSONA (everything else is fixed in the hashed file or in code)

Pinned measurements

what the machine must report
MRTDf06dfda6dce1cf904d4e2bab1dc370634cf95cefa2ceb2de2eee127c9382698090d7a4a13e14c536ec6c9c3c8fa87077
RTMR0ec216f1d1d591468ff4741b9b192f016b26d3f90303bfa9dbb97557273853183981f21a4bcb3ae908247538d371ad072
RTMR1b598fde9491427341bc4683b75d10d3e36770af3a36a6954d8b6b7b22aa66358f13e1f172e51b7d6e6710d99a8d8532f
RTMR29284cde236231d5ddace01104a440fd504df5182a2ad1ac3d2138b80c6a7864bd2c30f69041d8264217f3d24541580cf
OS image6427f4f5ded88b72d326bd973e581c1689c5080c6444a0cf90fec7d9e4c8b92a

Anchored log roots

10 newest
BlockDateRootRecord
26,177,45112 Oct 20260x74f1d69364510ca10c9cdcae051eb9454cb80d9b89f7f9f9f32646249fbc0d4bgenomedna.xyz/api/log/5412
26,174,83412 Oct 20260x1dc51d664bb24a5cea91270b99c1a9fce75f42142bab42f46e22810cd5b780e5genomedna.xyz/api/log/2917
26,174,15712 Oct 20260x9ee08272d2c321e91e4d6bc1ee843ef19a8a79d03c1675564b5fd8daab5f03cagenomedna.xyz/api/log/2671
26,173,88612 Oct 20260x5a8c6af499f218832e99da087570e633213b2f9d1d770607bf07c4116e149dfdgenomedna.xyz/api/log/2194
26,173,88412 Oct 20260x80cc6fa4027a0e7cf3e58daf6c5c12ce085fa2c7a5e6f45ce3c33117dfb198c8genomedna.xyz/api/log/2184
26,172,71212 Oct 20260xff5bc3b186cb9578369371531c778424c248aa49a0c7e020c49a4d54be33dec0genomedna.xyz/api/log/2026-10-11
26,172,36011 Oct 20260x97039ae0e2c946efa320781d3fb445cdebbdb222b521b366501d2aa16f2d4546genomedna.xyz/api/log/1238
26,171,16611 Oct 20260x35e3dc17934194c7b9c5f9106d44561d6a5e392bef2afce0734eff41775d9012genomedna.xyz/api/log/589
26,171,16411 Oct 20260x15f7bdfb7b4316df6d30ec351e1753cee94b316e461c2e7704216d2b771acf4egenomedna.xyz/api/log/580
26,170,93111 Oct 20260x6946e6839eed34a91ba054ff934781aa83252ad5f8c08ee304fc406e5970320egenomedna.xyz/api/log/1

Check a record

hash, signature, mapper

The brain's persona

and its self-file

The personality is private; its fingerprint is public, so any change is visible. Every brain decision record names the sha256 of the persona it ran under, its context and its self-file.

Personae2b8485deb4b4fd2cb8318c52053f1222b25073ea0b7243e105cd7b68ca8f34d (sha256 of the private persona file: who it is, what it puts first, how it talks)
Context7d06eff413a824ff0234bc9ee87ebb5d8895cfc4bf1bc4981b9a3c8c50ba159f (the contract limits, policy, caps and rules, generated from the code)
Self-filed175aaf260d026bb7b787f841a572c5d080814a6c4d3c1e5503a392c86120006 (2026-10-12: built daily by code from the contracts, the chain and the signed log; record 5973)

Where humans still touch it

  • The Safe (2-of-3): can veto any queued op within 1 h, pause the agent, lower its level, and is the timelock's proposer for code changes.
  • Human review of new module bytecode: the agent can only register code the Safe approved by hash.
  • Telegram /halt, /dryrun, /mute and /delete: signers can stop the engine, hold it in dry run, stop its X posting, delete one of its own posts, and reject a draft. These are brakes: they only restrict or remove, and none of them can make the agent act, post or approve anything.
  • Safe owner signatures: approving a drafted post takes one Safe owner's signature over that exact draft; approving or vetoing a delayed record takes owner signatures too (a veto needs two). Telegram only carries the signature; the engine checks it against the Safe's owners on-chain.
  • The Phala Cloud account: the operator holds it: it can stop or redeploy the machine, never read the key or change the allowed code.
  • The X account: the operator keeps its password and 2FA and can revoke the app; posts are automated within fixed rules.
  • Idea intake and restrict-only jobs: X mentions become idea submissions; the database can ask for a canary to end or a kill check, which the enclave re-derives from chain data.

What is not claimed

  • That a given text really came from Grok or Claude: no provider signs its responses.
  • That no human influences it: prompts, parameters and data feeds are human-chosen, and the public can submit ideas.
  • "Autonomous", "trustless" or "unhackable". Trust remains in Intel TDX, in Phala's platform governance and in our Safe.
  • Outside our control, disclosed: Phala's key-service owner (a 2-of-3 Safe, upgradeable, no delay) can change the key service's policy. We watch it; we cannot prevent it.

Verify independently

These checks are ours: run them yourself instead of trusting this page. The command-line verifier does the same against Intel's own collateral service:# github.com/contractdna/dna-build (engine/) node scripts/verify.ts --attestation https://f0839119995e13aa6c5148edd0ce7c7a929952bc-8080.dstack-eth-prod9.phala.network/attestation --rpc <your node> --log https://genomedna.xyz

Anthropic and xAI do not review, verify or endorse what DNA's models decide; their outputs are used under their terms. The posts on X are written with Grok, the default model for that role. Swapping one needs a public tryout on fixed test cases, then a public hour, and the Safe can veto. Swapping the brain itself needs two Safe owners to approve.