AT Protocol Notary (atnotary)#
Create permanent, verifiable attestations of AT Protocol records using Ethereum Attestation Service (EAS).
Why#
- Standardized attestations - interoperable format used across ecosystem
- On-chain verification - stored on Ethereum/Base, immutable and public
- Composable - other projects can reference and build on attestations
- Infrastructure - explorers, indexers, and tooling already exist
- Multi-chain - works on Ethereum, Base, Optimism, Arbitrum
What Gets Attested#
recordURI- Full AT Protocol URIcid- AT Protocol's content identifiercontentHash- DAG-CBOR hashpds- Personal Data Server URLtimestamp- When attested
Install#
npm install -g atnotary
Setup#
- Create config file:
atnotary config
- Edit
.atnotary.yaml:
privateKey: "0x..." # private key for writing
network: base-sepolia # default network
- Get testnet ETH:
- Sepolia: https://sepoliafaucet.com/
- Base Sepolia: https://bridge.base.org/
That's it! Default schemas are provided for all networks.
Custom Schema (Optional)#
If you want to deploy your own schema:
atnotary init --network sepolia
Then add the schemaUID to your .atnotary.yaml file.
Usage#
# notarize
atnotary notarize "at://did:plc:xxx/app.bsky.feed.post/abc"
# verify
atnotary verify "0xabc..." --network sepolia
# compare with current state
atnotary verify "0xabc..." --compare
Library Usage#
import { ATProtocolNotary } from 'atnotary';
const notary = new ATProtocolNotary({
privateKey: "0x...", // optional, just for writing
}, 'sepolia');
const result = await notary.notarizeRecord('at://...');
const attestation = await notary.verifyAttestation('0x...');
const comparison = await notary.compareWithCurrent(attestation);
Networks#
- Ethereum Sepolia (testnet)
- Base Sepolia (testnet)
- Base (mainnet)
Use Cases#
- Political accountability
- Journalism evidence
- Open source governance
- Content authorship proof
- Legal documentation
License#
MIT