Prad Nukala bd51342fdf
feature/1115 execute ucan token (#1177)
- **deps: remove tigerbeetle-go dependency**
- **refactor: remove unused landing page components and models**
- **feat: add pin and publish vault handlers**
- **refactor: move payment and credential services to webui browser
package**
- **refactor: remove unused credentials management components**
- **feat: add landing page components and middleware for credentials and
payments**
- **refactor: remove unused imports in vault config**
- **refactor: remove unused bank, DID, and DWN gRPC clients**
- **refactor: rename client files and improve code structure**
- **feat: add session middleware helpers and landing page components**
- **feat: add user profile registration flow**
- **feat: Implement WebAuthn registration flow**
- **feat: add error view for users without WebAuthn devices**
- **chore: update htmx to include extensions**
- **refactor: rename pin handler to claim handler and update routes**
- **chore: update import paths after moving UI components and styles**
- **fix: address potential server errors by handling and logging them
properly**
- **refactor: move vault config to gateway package and update related
dependencies**
- **style: simplify form styling and remove unnecessary components**
- **feat: improve UI design for registration flow**
- **feat: implement passkey-based authentication**
- **refactor: migrate registration forms to use reusable form
components**
- **refactor: remove tailwindcss setup and use CDN instead**
- **style: update submit button style to use outline variant**
- **refactor: refactor server and IPFS client, remove MPC encryption**
- **refactor: Abstract keyshare functionality and improve message
encoding**
- **refactor: improve keyset JSON marshaling and error handling**
- **feat: add support for digital signatures using MPC keys**
- **fix: Refactor MarshalJSON to use standard json.Marshal for Message
serialization**
- **fix: Encode messages before storing in keyshare structs**
- **style: update form input styles for improved user experience**
- **refactor: improve code structure in registration handlers**
- **refactor: consolidate signer middleware and IPFS interaction**
- **refactor: rename MPC signing and refresh protocol functions**
- **refactor: update hway configuration loading mechanism**
- **feat: integrate database support for sessions and users**
- **refactor: remove devnet infrastructure and simplify build process**
- **docs(guides): add Sonr DID module guide**
- **feat: integrate progress bar into registration form**
- **refactor: migrate WebAuthn dependencies to protocol package**
- **feat: enhance user registration with passkey integration and
improved form styling**
- **refactor: move gateway view handlers to internal pages package**
- **refactor: Move address package to MPC module**
- **feat: integrate turnstile for registration**
- **style: remove unnecessary size attribute from buttons**
- **refactor: rename cookie package to session/cookie**
- **refactor: remove unnecessary types.Session dependency**
- **refactor: rename pkg/core to pkg/chain**
- **refactor: simplify deployment process by removing testnet-specific
Taskfile and devbox configuration**
- **feat: add error redirect functionality and improve routes**
- **feat: implement custom error handling for gateway**
- **chore: update version number to 0.0.7 in template**
- **feat: add IPFS client implementation**
- **feat: Implement full IPFS client interface with comprehensive
methods**
- **refactor: improve IPFS client path handling**
- **refactor: Move UCAN middleware to controller package**
- **feat: add UCAN middleware to motr**
- **refactor: update libp2p dependency**
- **docs: add UCAN specification document**
- **refactor: move UCAN controller logic to common package**
- **refactor: rename exports.go to common.go**
- **feat: add UCAN token support**
- **refactor: migrate UCAN token parsing to dedicated package**
- **refactor: improve CometBFT and app config initialization**
- **refactor: improve deployment scripts and documentation**
- **feat: integrate IPFS and producer middleware**
- **refactor: rename agent directory to aider**
- **fix: correct libp2p import path**
- **refactor: remove redundant dependency**
- **cleanup: remove unnecessary test files**
- **refactor: move attention types to crypto/ucan package**
- **feat: expand capabilities and resource types for UCANs**
- **refactor: rename sonr.go to codec.go and update related imports**
- **feat: add IPFS-based token store**
- **feat: Implement IPFS-based token store with caching and UCAN
integration**
- **feat: Add dynamic attenuation constructor for UCAN presets**
- **fix: Handle missing or invalid attenuation data with
EmptyAttenuation**
- **fix: Update UCAN attenuation tests with correct capability types**
- **feat: integrate UCAN-based authorization into the producer
middleware**
- **refactor: remove unused dependency on go-ucan**
- **refactor: Move address handling logic to DID module**
- **feat: Add support for compressed and uncompressed Secp256k1 public
keys in didkey**
- **test: Add test for generating DID key from MPC keyshares**
- **feat: Add methods for extracting compressed and uncompressed public
keys in share types**
- **feat: Add BaseKeyshare struct with public key conversion methods**
- **refactor: Use compressed and uncompressed public keys in keyshare,
fix public key usage in tests and verification**
- **feat: add support for key generation policy type**
- **fix: correct typo in VaultPermissions constant**
- **refactor: move JWT related code to ucan package**
- **refactor: move UCAN JWT and source code to spec package**
2024-12-05 20:36:58 -05:00
..
2024-09-14 14:27:45 -04:00
2024-10-02 01:40:49 -04:00
2024-09-25 19:49:16 -04:00

x/did

The Decentralized Identity module is responsible for managing native Sonr Accounts, their derived wallets, and associated user identification information.

State

The DID module maintains several key state structures:

Controller State

The Controller state represents a Sonr DWN Vault. It includes:

  • Unique identifier (number)
  • DID
  • Sonr address
  • Ethereum address
  • Bitcoin address
  • Public key
  • Keyshares pointer
  • Claimed block
  • Creation block

Assertion State

The Assertion state includes:

  • DID
  • Controller
  • Subject
  • Public key
  • Assertion type
  • Accumulator (metadata)
  • Creation block

Authentication State

The Authentication state includes:

  • DID
  • Controller
  • Subject
  • Public key
  • Credential ID
  • Metadata
  • Creation block

Verification State

The Verification state includes:

  • DID
  • Controller
  • DID method
  • Issuer
  • Subject
  • Public key
  • Verification type
  • Metadata
  • Creation block

State Transitions

State transitions are triggered by the following messages:

  • LinkAssertion
  • LinkAuthentication
  • UnlinkAssertion
  • UnlinkAuthentication
  • ExecuteTx
  • UpdateParams

Messages

The DID module defines the following messages:

  1. MsgLinkAuthentication
  2. MsgLinkAssertion
  3. MsgExecuteTx
  4. MsgUnlinkAssertion
  5. MsgUnlinkAuthentication
  6. MsgUpdateParams

Each message triggers specific state machine behaviors related to managing DIDs, authentications, assertions, and module parameters.

Query

The DID module provides the following query endpoints:

  1. Params: Query all parameters of the module
  2. Resolve: Query the DID document by its ID
  3. Sign: Sign a message with the DID document
  4. Verify: Verify a message with the DID document

Params

The module parameters include:

  • Allowed public keys (map of KeyInfo)
  • Conveyance preference
  • Attestation formats

Client

The module provides gRPC and REST endpoints for all defined messages and queries.

Future Improvements

Potential future improvements could include:

  1. Enhanced privacy features for DID operations
  2. Integration with more blockchain networks
  3. Support for additional key types and cryptographic algorithms
  4. Improved revocation mechanisms for credentials and assertions

Tests

Acceptance tests should cover all major functionality, including:

  • Creating and managing DIDs
  • Linking and unlinking assertions and authentications
  • Executing transactions with DIDs
  • Querying and resolving DIDs
  • Parameter updates

Appendix

Account

An Account represents a user's identity within the Sonr ecosystem. It includes information such as the user's public key, associated wallets, and other identification details.

Decentralized Identifier (DID)

A Decentralized Identifier (DID) is a unique identifier that is created, owned, and controlled by the user. It is used to establish a secure and verifiable digital identity.

Verifiable Credential (VC)

A Verifiable Credential (VC) is a digital statement that can be cryptographically verified. It contains claims about a subject (e.g., a user) and is issued by a trusted authority.

Key Types

The module supports various key types, including:

  • Role
  • Algorithm (e.g., ES256, EdDSA, ES256K)
  • Encoding (e.g., hex, base64, multibase)
  • Curve (e.g., P256, P384, P521, X25519, X448, Ed25519, Ed448, secp256k1)

JSON Web Key (JWK)

The module supports JSON Web Keys (JWK) for representing cryptographic keys, including properties such as key type (kty), curve (crv), and coordinates (x, y) for EC and OKP keys, as well as modulus (n) and exponent (e) for RSA keys.