Skip to content

daccred/attest.so

Repository files navigation

attest.so

attest.so Logo

A Unified Trust Framework for Blockchain-Based Attestation Infrastructure

License: MIT GitHub Issues


Website & Docs

Live Environments

Network Stellar
Sandbox Try it now
Testnet Launch
Mainnet Launch

Smart Contracts

Stellar (Mainnet) · View on Stellar.Expert

Stellar (Testnet) · View on Stellar.Expert

NPM Packages

npm install @attestprotocol/stellar-sdk
npm install @attestprotocol/cli

Browse on npm: stellar-sdk · cli


Overview

attest.so provides enterprise-grade infrastructure for builders to create "Reputation Authorities" on-chain with verifiable and comprehensive identity proofs on Stellar.

Our framework addresses critical challenges in Web3:

  • Identity Verification: Robust mechanisms for verifying identities across blockchain ecosystems
  • Interoperable Trust: Consistent attestation standards on Stellar
  • Reputation Management: Infrastructure for building and maintaining on-chain reputation
  • Scalable Solutions: Enterprise-ready attestation infrastructure for builders

Architecture

Core Concepts

  • Attestations: Verifiable, cryptographically signed claims made by an Authority about a Subject. They are structured according to a Schema and recorded on-chain.
  • Schemas: Structured templates that define the format and data types for an attestation. They act as a blueprint, ensuring that attestations are consistent and machine-readable.
  • Authorities: Trusted entities with the permission to issue, manage, and revoke attestations. Authorities are registered on-chain, and their integrity is verifiable.
  • Subjects: The entities (e.g., users, smart contracts, organizations) about which attestations are made.
  • Resolvers: On-chain programs responsible for interpreting and verifying attestations. They provide a standardized interface to locate, decode, and validate attestation data, and can be designed to handle complex logic such as dynamic schema resolution, revocation checks, and integration with off-chain data sources.

Key Components

1. Smart Contracts

Our Stellar implementation, built with Soroban, provides a robust framework for on-chain attestations. It leverages Rust for performance and safety, and is designed to integrate seamlessly with the Stellar ecosystem, including Horizon and the Stellar SDK.

contracts/stellar/
├── protocol/         # Core attestation protocol logic
├── resolvers/        # Schema and attestation resolvers
└── ...               # Other configuration and build files

Key Features:

  • Authority Management: Contracts for registering, verifying, and managing attestation authorities.
  • Core Protocol: The central logic for creating, revoking, and managing attestations.
  • Resolvers: Efficient on-chain logic to resolve schemas and attestations.
  • Soroban Integration: Fully leverages Soroban's features for storage, authorization, and events.
  • Fee and Levy System: Optional fee collection mechanism for monetizing attestation services.

2. SDK (Software Development Kit)

A TypeScript SDK that provides a unified interface for interacting with our attestation infrastructure on Stellar.

// Example: Interacting with Stellar contracts via the SDK
import { AttestClient } from '@attestprotocol/sdk';
import { Keypair } from '@stellar/stellar-sdk';

// Initialize client for Stellar
const keypair = Keypair.fromSecret('YOUR_STELLAR_SECRET_KEY');
const client = new AttestClient({
  chain: 'stellar',
  network: 'testnet',
  secretKey: keypair.secret(),
});

// Create an attestation on Stellar
const attestation = await client.attest({
  schema: 'did:attest:identity',
  subject: 'G...', // Subject's Stellar public key
  claims: { verified: true, level: 'premium' },
});

Core Functionality:

  • Blockchain connection management
  • Schema creation and registration
  • Attestation lifecycle management
  • TypeScript-first for a better developer experience

3. CLI (Command Line Interface)

A powerful command-line tool for developers and administrators to interact with the protocol directly from the terminal.

# Install CLI
npm install -g @attestprotocol/cli

# Create a new attestation on the Stellar testnet
attest create \
  --schema did:attest:identity \
  --subject G... \
  --chain stellar \
  --network testnet \
  --claims '{"verified": true}'

4. Documentation and Examples

Comprehensive documentation and example implementations to facilitate integration:

  • Interactive API reference
  • Integration guides
  • Example applications
  • Best practices

Project Structure

The repository follows a monorepo structure using pnpm workspaces:

attest.so/
├── apps/
│   ├── docs/          # Documentation site (Mintlify)
│   └── horizon/       # Stellar blockchain indexer (Express.js + MongoDB)
├── contracts/
│   └── stellar/       # Soroban contracts (protocol, resolvers)
├── packages/
│   ├── sdk/           # Unified TypeScript SDK
│   ├── stellar-sdk/   # Stellar-specific SDK implementation
│   ├── cli/           # CLI tool
│   └── core/          # Core SDK abstractions
└── examples/

See NAMING.md for detailed information about naming conventions and directory structure standards.

Technical Stack

  • SDK/CLI: TypeScript, Node.js, Stellar SDK, Horizon Client
  • Smart Contracts: Rust with Soroban
  • Developer Experience:
    • pnpm workspaces for monorepo management
    • TypeScript
    • ESLint/Prettier
    • Vitest for testing

Getting Started

Installation

# Clone the repository
git clone https://github.com/daccred/attest.so.git
cd attest.so

# Install dependencies
pnpm install

# Build all packages
pnpm build

Running the Development Environment

# Start the documentation site
pnpm run dev:docs

# Run tests
pnpm test

Working with Contracts

# Build Soroban contracts
cd contracts/stellar
soroban contract build

# Deploy to Stellar testnet
soroban contract deploy \
  --wasm target/wasm32-unknown-unknown/release/authority.wasm \
  --network testnet \
  --source <YOUR_ACCOUNT>

Contributing

Contributions are welcome! Please see our CONTRIBUTING.md for guidelines.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'feat: add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Setting up Rust Analyzer

With Rust Analyzer installed, you can configure it to recognize our Rust-based contract project:

{
  "rust-analyzer.linkedProjects": [
    "contracts/stellar/Cargo.toml"
  ]
}

Resources & Links


Awards & Recognition

Solana Logo

Solana Radar Hackathon

Public Goods Award Winner

Recognized for building critical public infrastructure for the Solana ecosystem

View on X
Stellar Logo

Stellar Community Fund

SCF Award Recipient

Selected for advancing attestation infrastructure on the Stellar network

View on SCF

License

This project is licensed under the MIT License.