blockchain_attestation
SKILL.md
Blockchain Attestation (EAS)
This skill creates onchain or offchain attestations of completed work using the Ethereum Attestation Service (EAS).
Opinionated defaults:
- Default chain: Base mainnet
- Default mode: offchain (zero gas, still verifiable)
- Default data model: store hashes of the task and the deliverable (plus a small agent id and metadata string)
Safety and privacy rules
- Never put secrets, private keys, tokens, or private user data into onchain attestations.
- Prefer offchain attestations for most use cases.
- If you need a public timestamp anchor for an offchain attestation, use the timestamp command which anchors the UID onchain without publishing the full payload.
- Only run onchain transactions after the user explicitly requests it or has approved costs.
Environment variables
Required for signing (offchain or onchain):
EAS_PRIVATE_KEY
Required for onchain transactions and onchain reads:
EAS_RPC_URL(an RPC endpoint for the selected chain)
Optional:
EAS_CHAIN(baseorbase_sepolia, default isbase)CLAWDBOT_AGENT_ID(overrides theagentIdfield)
One time setup
Install Node dependencies once:
cd {baseDir} && npm install
One time per chain: register the schema
This skill uses a single schema:
bytes32 taskHash, bytes32 outputHash, string agentId, string metadata
Register it (onchain transaction) and persist the resulting schema UID into schemas.json:
cd {baseDir} && node attest.mjs schema register --chain base
For Base Sepolia:
cd {baseDir} && node attest.mjs schema register --chain base_sepolia
Create an attestation (recommended: offchain)
Best default workflow:
- Provide the task description text
- Provide the deliverable file path (or deliverable text)
- Create an offchain attestation
- Save the signed payload to a file
- Return UID plus the explorer link to the user
Example:
cd {baseDir} && node attest.mjs attest \
--mode offchain \
--chain base \
--task-text "Summarize Q4 board deck into 1 page memo" \
--output-file ./deliverables/memo.pdf \
--recipient 0x0000000000000000000000000000000000000000 \
--metadata '{"hashAlg":"sha256","artifact":"memo.pdf"}' \
--save ./attestations/latest.offchain.json
Timestamp an offchain UID onchain (optional anchor)
cd {baseDir} && node attest.mjs timestamp --chain base --uid <uid>
Create an onchain attestation (costs gas)
cd {baseDir} && node attest.mjs attest \
--mode onchain \
--chain base \
--task-text "..." \
--output-file ./path/to/output \
--metadata '{"hashAlg":"sha256"}'
Verify
Verify an onchain UID:
cd {baseDir} && node attest.mjs verify --chain base --uid <uid>
Verify an offchain attestation JSON file (as produced by this skill):
cd {baseDir} && node attest.mjs verify --offchain-file ./attestations/latest.offchain.json
Hash helper
If you need hashes without creating an attestation:
cd {baseDir} && node attest.mjs hash --file ./deliverables/memo.pdf
Output contract
All commands print a single JSON object to stdout.
- On success:
{ "success": true, ... } - On error:
{ "success": false, "error": { "code": "...", "message": "...", "details": ... } }
This is deliberate so the agent can reliably parse results.
Weekly Installs
4
Repository
clawdbot/skillsInstalled on
opencode3
windsurf2
clawdbot2
trae2
codex2
claude-code2