Skip to content

v0.18.0 — hashed identities, alloy 2

Choose a tag to compare

@xgreenx xgreenx released this 17 Oct 14:43
· 39 commits to main since this release
6974c9b

Breaking: identities are keyed by circuit-proved SHA-256 nodes, never plaintext. This is a fresh deployment: new canonical names, and the deterministic factory moves with OpenZeppelin v5.7.0.

Hashed identities (#87, #100, #101)

  • idNode = SHA256("libid.<p>.user-id" || id), handleNode = SHA256("libid.<p>.handle" || fold(handle)); the fold is A-Z to a-z only. The registry stores nodes; no per-platform handle rules remain.
  • X and GitHub prove under one bearer-link circuit with 16 public inputs; the Platform Verifier supplies each platform's tags. Pinned to libid-circuits v0.7.1; each verifier requires its circuit's code hash (WrongCircuit).
  • bind(platformId, version, payload, handle) discloses a handle beside the payload, checked against the proved node (HandleNotProved) and logged as HandlePublished; bindPrivately discloses nothing. publish / unpublish disclose later or withdraw.
  • HandleEscrow: deposit(platformId, handleNode, …) and depositToHandle(platformId, handle, …) (logs DepositedToHandle). acceptsBindings reverts UnknownPlatform for a platform no profile names.
  • Rust: libid_identity::platforms (platform table, HandleError, IdError); test vectors behind the test-helpers feature. Bindings bind the compiled ABIs. TS: @libid/contracts/platforms loads without viem (#103).

Dependencies

  • alloy 2.5.0 (#104): Provider and the contract bindings are alloy 2 types; consumers move to alloy 2 with this release.
  • OpenZeppelin v5.7.0, forge-std v1.17.0, Foundry v1.8.5 (#97); advisory bumps and the configure-aws-credentials v6 action (#98).

CI (#94, #102, #83): Dependabot no longer bumps submodules and waits 14 days for releases; the forge cache restores only an exact tree and release jobs build uncached; each network deploys with its own key.

Consumers that must move: libid-rs, keeper, notary, usernames-indexer, chain-configurations (alloy 2, platforms module, node-keyed registry); libID's browser prover (bearer-link).