mirror of
https://github.com/onsonr/sonr.git
synced 2025-03-10 21:09:11 +00:00
The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality.
162 lines
3.6 KiB
Protocol Buffer
162 lines
3.6 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package did.v1;
|
|
option go_package = "github.com/onsonr/hway/x/did/types";
|
|
|
|
import "cosmos/orm/v1/orm.proto";
|
|
import "did/v1/genesis.proto";
|
|
import "did/v1/enums.proto";
|
|
|
|
// Aliases represents the `alsoKnownAs` property associated with a DID Controller
|
|
message Aliases {
|
|
option (cosmos.orm.v1.table) = {
|
|
id: 1
|
|
primary_key: {fields: "id"}
|
|
index: { id: 1, fields: "handle", unique: true }
|
|
};
|
|
|
|
// The unique identifier of the alias
|
|
string id = 1;
|
|
|
|
// Origin is the Alias provider
|
|
string origin = 2;
|
|
|
|
// Handle is the user defined alias
|
|
string handle = 3;
|
|
|
|
// Controller of the alias
|
|
string controller = 4;
|
|
|
|
// Expiration of the alias
|
|
uint64 expiration = 5;
|
|
}
|
|
|
|
// Assertion represents strongly created credentials (e.g., Passkeys, SSH, GPG, Native Secure Enclaave)
|
|
message Assertion {
|
|
option (cosmos.orm.v1.table) = {
|
|
id: 2
|
|
primary_key: {fields: "id"}
|
|
};
|
|
|
|
// The unique identifier of the attestation
|
|
string id = 1;
|
|
|
|
// Key type (e.g., "passkey", "ssh", "gpg", "native-secure-enclave")
|
|
string key_type = 2;
|
|
|
|
// The value of the linked identifier
|
|
bytes credential = 3;
|
|
|
|
// Metadata is optional additional information about the assertion
|
|
map<string, string> metadata = 4;
|
|
|
|
// The controller of the attestation
|
|
string controller = 5;
|
|
}
|
|
|
|
|
|
// Attestation represents linked identifiers (e.g., Crypto Accounts, Github, Email, Phone)
|
|
message Attestation {
|
|
option (cosmos.orm.v1.table) = {
|
|
id: 3
|
|
primary_key: {fields: "id"}
|
|
};
|
|
|
|
// The unique identifier of the attestation
|
|
string id = 1;
|
|
|
|
// The type of the linked identifier (e.g., "crypto", "github", "email", "phone")
|
|
string key_type = 2;
|
|
|
|
// The value of the linked identifier
|
|
string value = 3;
|
|
|
|
// The proof or verification method for this attestation
|
|
string proof = 4;
|
|
|
|
// The controller of the attestation
|
|
string controller = 5;
|
|
}
|
|
|
|
|
|
// Controller represents a Sonr DWN Vault
|
|
message Controller {
|
|
option (cosmos.orm.v1.table) = {
|
|
id: 4
|
|
primary_key: {fields: "id"}
|
|
};
|
|
|
|
// The unique identifier of the controller
|
|
string id = 1;
|
|
|
|
// The DID of the controller
|
|
string did = 2;
|
|
|
|
// The public key of the controller
|
|
string public_key_multibase = 3;
|
|
|
|
// The vault address or identifier
|
|
string vault_cid = 4;
|
|
|
|
// Fingerprint is the Accumulator of discrete credential identifiers
|
|
bytes fingerprint = 5;
|
|
}
|
|
|
|
// Delegation represents IBC Account Controllers for various chains (e.g., ETH, BTC)
|
|
message Delegation {
|
|
option (cosmos.orm.v1.table) = {
|
|
id: 5
|
|
primary_key: {fields: "id"}
|
|
};
|
|
|
|
// The unique identifier of the delegation
|
|
string id = 1;
|
|
|
|
// The Decentralized Identifier of the delegated account
|
|
string did = 2;
|
|
|
|
// The chain type (e.g., "ETH", "BTC")
|
|
string chain_type = 3;
|
|
|
|
// The address on the target chain
|
|
string chain_address = 4;
|
|
|
|
// The controller DID
|
|
string controller_did = 5;
|
|
|
|
// The delegation proof or verification method
|
|
string public_key_multibase = 6;
|
|
|
|
// Public Key JWKS is a map of the associated public keys
|
|
map<string, string> public_key_jwks = 7;
|
|
|
|
// IBC Channel ID
|
|
uint64 channel_id = 8;
|
|
}
|
|
|
|
// Service represents a service in a DID Document
|
|
message Service {
|
|
option (cosmos.orm.v1.table) = {
|
|
id: 6
|
|
primary_key: {fields: "id"}
|
|
};
|
|
|
|
// The ID of the service
|
|
string id = 1;
|
|
|
|
// The type of the service
|
|
string service_type = 2;
|
|
|
|
// The controller DID of the service
|
|
string controller_did = 3;
|
|
|
|
// The domain name of the service
|
|
string origin_uri = 4;
|
|
|
|
// The service endpoint
|
|
map<string, string> service_endpoints = 5;
|
|
|
|
// Scopes is the Authorization Grants of the service
|
|
repeated PermissionScope scopes = 6;
|
|
}
|