Skip to content

Repository files navigation

ethr-did monorepo

Monorepo workspace for the did:ethr ecosystem libraries, managed with pnpm workspaces and released with changesets.

Packages

Package Description
ethr-did-resolver Resolve DID documents for Ethereum addresses and public keys
ethr-did-registry Ethereum contract for a registry of DIDs — the ERC-1056 contract anchoring did:ethr
ethr-7702 EIP-7702 PoC: EOA → ERC-1056 (did:ethr) interactions enabled by Pectra hardfork

Getting started

Requires Node.js ≥ 20 and pnpm (see packageManager in the root package.json; enable Corepack or install with npm i -g pnpm@11.20.0).

pnpm install        # install all workspace dependencies
pnpm build          # build every package (CJS + ESM)
pnpm test           # run every package's test suite
pnpm lint           # lint every package
pnpm format         # format every package

Individual packages can be targeted with pnpm --filter <name> <script>:

pnpm --filter ethr-did-resolver test -- --watch

Project layout

packages/
  ethr-did-resolver/    # DID resolver library
    src/
    lib.commonjs/       # build output (CJS, generated)
    lib.esm/            # build output (ESM, generated)
  ethr-did-registry/    # ERC-1056 registry contract
    contracts/
    src/
    artifacts/
examples/
  ethr-7702/            # EIP-7702 PoC example (not published)
    contracts/
    webapp/
.changeset/             # changesets (release management)

Release workflow

Releases are driven by changesets — see .changeset/README.md for the full flow. In short:

  1. Run pnpm changeset in the package(s) you changed and commit the generated file.
  2. The Changesets GitHub Action opens a chore(release): version packages PR on master.
  3. Merging it bumps versions, updates CHANGELOG.md files, publishes the packages to npm and creates GitHub releases.

Each package is versioned and tagged independently (tags look like ethr-did-resolver@14.2.0).

The release pipeline needs no repository secrets:

  • npm publishing uses OIDC trusted publishing (id-token: write), which also attaches provenance automatically for public packages in this public repository. The npm-side publisher (package settings → Access → Trusted Publisher) must point at this repository with the workflow file name release.yml.
  • All GitHub-side work (version PR, tags, releases) uses the built-in github.token — the Changesets Action's github-token input already defaults to it, so no token needs to be passed.

License

Apache-2.0 — see LICENSE.

About

DID resolver for Ethereum Addresses with support for key management

Topics

Resources

Stars

238 stars

Watchers

25 watching

Forks

Releases

Used by

Contributors

Languages