Decentralized
Digital Credentials.

Ethereum Credential Service (ECS) is a decentralized credentials protocol for discovering, retrieving, and verifying digital credentials built on Ethereum.

9:41
Vitalik Buterin

vitalik.eth

Canadian Flag

Ethereum Co-founder

12K

4K Followers

vitalik.eth.limo
@VitalikButerin

Credentials

EthStars

eth.ecs.ethstars.stars

EFP Followers

eth.ecs.efp.followers

NationalitE

eth.ecs.nationalite.state

Powered by ECS Protocol

About ECS Protocol

Ethereum Credential Service (ECS) is a decentralized credentials protocol for discovering, retrieving, and verifying digital credentials built on Ethereum. It enables any application or service to create custom credentials with guaranteed namespace ownership and flexible onchain/offchain data storage.

Credentials are core primitives for identity, and can be understood broadly to be any record or attestation made by a third party about an identity versus records made by the owner of the identity. A simple example is a reputation system where third parties attest to the "realness" of the identity. For example, vitalik.eth is the "real" ENS name of Vitalik Buterin, the co-founder of Ethereum.

ECS unifies blockchain-based credentials into a single service with namespace ownership, custom credential logic, flexible data storage, universal resolution, and cross-chain interoperability.

v0.1.0-beta - Deployed on Ethereum Sepolia Testnet

Flexible Storage

Onchain transparency or offchain efficiency

Unruggable Gateways

Secure L1 settlement layer access to L2s

Cross-Chain Data

Unified credentials from multiple chains

Namespace Ownership

Guaranteed control of credential domains

ENS Compatible

Works with existing ENS tooling

Custom Logic

Smart contract credential resolution

Built for Developers

ECS provides the infrastructure to create, manage, and resolve digital credentials with the security and decentralization of Ethereum.

ENS-Based Resolution

Credentials are resolved using ENS as a foundational protocol. Each credential uses a special ENS subname like vitalik.eth.name.ecs.eth.

Custom Credential Logic

Deploy smart contracts that define how credentials are resolved and validated with the ICredentialResolver interface.

Cross-Chain Support

Access and aggregate data from multiple L2s into a single credential, leveraging Ethereum L1 as the settlement layer.

Namespace Registration

Register and own credential namespaces like myservice.ecs.eth with guaranteed ownership and control.

Learn ECS

Get started with the ecs.js client library to easily integrate credential resolution into your applications.

Quick Start Example

// Install the ecs.js client
npm install @nxt3d/ecsjs

// Example: Resolve user credentials
import { createECSResolver } from '@nxt3d/ecsjs';

const resolver = createECSResolver({ network: 'sepolia' });

// Resolve vitalik.eth credentials
const result = await
  resolver.resolve('vitalik.eth', 'eth.ecs.ethstars.stars');

console.log(`vitalik.eth has ${result} stars!`);

Resources

ecs.js GitHub Repository

View the source code, documentation, and examples for the ecs.js library.

View on GitHub →

ecs.js NPM Package

Install the ecs.js client directly from the NPM registry.

View on NPM →

Build with ECS

Create custom credential resolvers, register namespaces, and integrate ECS into your applications with our developer tools.

Custom Resolver Example

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;

import "./ICredentialResolver.sol";

contract MyCustomResolver is ICredentialResolver {
    mapping(bytes => mapping(string => string)) private credentials;

    function credential(
        bytes memory identifier,
        string memory credential_
    ) external view override returns (string memory) {
        // The DNS-encoded identifier (address.cointype or domain)
        // Implement your credential logic here

        return credentials[identifier][credential_];
    }

    function setCredential(
        bytes memory identifier,
        string memory credential,
        string memory value
    ) external {
        credentials[identifier][credential] = value;
    }
}

Development Steps

1

Implement ICredentialResolver

Create a smart contract that implements the credential resolution interface.

2

Register Namespace

Register your custom namespace (e.g., myservice.ecs.eth) with the ECS registry.

3

Deploy & Configure

Deploy your resolver and register it with the address or name ECS mono-resolver.

4

Test Integration

Use the test framework to verify your credential resolution works correctly.

ECS GitHub Repository

View the source code, documentation, and examples for the ECS protocol.

View on GitHub →

Supported by

Full Logo