skills/clawdbot/skills/blockchain_attestation

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

  1. Never put secrets, private keys, tokens, or private user data into onchain attestations.
  2. Prefer offchain attestations for most use cases.
  3. 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.
  4. 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 (base or base_sepolia, default is base)
  • CLAWDBOT_AGENT_ID (overrides the agentId field)

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:

  1. Provide the task description text
  2. Provide the deliverable file path (or deliverable text)
  3. Create an offchain attestation
  4. Save the signed payload to a file
  5. 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/skills
Installed on
opencode3
windsurf2
clawdbot2
trae2
codex2
claude-code2