mirror of
https://github.com/sonr-io/sonr.git
synced 2026-08-02 17:31:39 +00:00
feature/1111 sync chain dwn endpoint (#1143)
- **feat(did): add assertion type to DID spec** - **refactor: update build process to include assets generation** - **refactor: update import paths for to** - **feat: introduce new authentication state management** - **feat: add current account route** - **feat: implement global toasts with custom HTML** - **refactor: remove unused session code** - **feat: add config.json to embedded assets** - **refactor: remove unused dependency on gorilla/sessions** - **refactor: simplify session management and remove unnecessary fields** - **fix: remove unnecessary import for unused protobuf types** - **feat: introduce separate HTTP contexts for Highway and DWN** - **fix(keeper): Handle missing controller during initial sync** - **refactor: extract DWN configuration from DWNContext** - **feat: add view route** - **fix: update configuration file name in embed.go** - **feat: improve vaultindex page loading experience** - **feat(hway): add highway context to echo context** - **chore(deps): bump onsonr/crypto from 1.32.0 to 1.33.0** - **refactor: rename DWNSessionMiddleware to WebNodeSessionMiddleware** - **feat: rename client API to web node API** - **refactor: separate API and view routes** - **refactor: remove unused build targets in Makefile** - **feat: add Devbox integration to container** - **feat: add wasm support for dwn** - **refactor: update module proto import** - **feat: add default first and third party caveats** - **feat: Add target vault allocation mechanism** - **refactor: introduce standardized session cookie handling** - **fix: update service worker installation and ready states** - **feat: add worker handlers** - **feat: Enable SSH access to devcontainer** - **refactor: rename HighwayContext to HwayContext** - **feat: add block expiration calculation to sonr context** - **feat: remove config from cookie and header** - **feat(gen): Remove generated code for IPFS, Motr and Sonr** - **refactor: remove unused createMotrConfig function** - **feat: add project analytics with Repobeats** - **docs: Remove component details from README** - **refactor: rename SetConfig to injectConfig**
This commit is contained in:
@@ -16,7 +16,6 @@ plugins:
|
||||
- name: go-grpc
|
||||
out: ..
|
||||
opt: paths=source_relative
|
||||
# go install cosmossdk.io/orm/cmd/protoc-gen-go-cosmos-orm@latest
|
||||
- name: go-cosmos-orm
|
||||
out: ..
|
||||
opt: paths=source_relative
|
||||
|
||||
@@ -14,6 +14,7 @@ lint:
|
||||
- COMMENTS
|
||||
- FILE_LOWER_SNAKE_CASE
|
||||
except:
|
||||
- PACKAGE_NO_IMPORT_CYCLE
|
||||
- UNARY_RPC
|
||||
- COMMENT_FIELD
|
||||
- COMMENT_MESSAGE
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package onsonr.sonr.did.module.v1;
|
||||
package did.module.v1;
|
||||
|
||||
import "cosmos/app/v1alpha1/module.proto";
|
||||
|
||||
// Module is the app config object of the module.
|
||||
// Learn more: https://docs.cosmos.network/main/building-modules/depinject
|
||||
message Module {
|
||||
option (cosmos.app.v1alpha1.module) = {
|
||||
go_import : "github.com/onsonr/sonr"
|
||||
};
|
||||
option (cosmos.app.v1alpha1.module) = {go_import: "github.com/onsonr/sonr"};
|
||||
}
|
||||
|
||||
@@ -7,13 +7,42 @@ import "did/v1/genesis.proto";
|
||||
|
||||
option go_package = "github.com/onsonr/sonr/x/did/types";
|
||||
|
||||
message Authentication {
|
||||
message Assertion {
|
||||
option (cosmos.orm.v1.table) = {
|
||||
id : 1
|
||||
primary_key : {fields : "did"}
|
||||
index : {id : 1 fields : "controller,subject" unique : true}
|
||||
};
|
||||
|
||||
// The unique identifier of the assertion
|
||||
string did = 1;
|
||||
|
||||
// The authentication of the DID
|
||||
string controller = 2;
|
||||
|
||||
// Origin of the authentication
|
||||
string subject = 3;
|
||||
|
||||
// PubKey is the verification method
|
||||
PubKey public_key = 4;
|
||||
|
||||
// AssertionType is the assertion type
|
||||
string assertion_type = 5;
|
||||
|
||||
// Metadata of the authentication
|
||||
map<string, bytes> accumulator = 6;
|
||||
|
||||
// CreationBlock is the block number of the creation of the authentication
|
||||
int64 creation_block = 7;
|
||||
}
|
||||
|
||||
message Authentication {
|
||||
option (cosmos.orm.v1.table) = {
|
||||
id : 2
|
||||
primary_key : {fields : "did"}
|
||||
index : {id : 1 fields : "controller,subject" unique : true}
|
||||
};
|
||||
|
||||
// The unique identifier of the authentication
|
||||
string did = 1;
|
||||
|
||||
@@ -39,7 +68,7 @@ message Authentication {
|
||||
// Controller represents a Sonr DWN Vault
|
||||
message Controller {
|
||||
option (cosmos.orm.v1.table) = {
|
||||
id : 2
|
||||
id : 3
|
||||
primary_key : {fields : "number" auto_increment : true}
|
||||
index : {id : 1 fields : "sonr_address" unique : true}
|
||||
index : {id : 2 fields : "eth_address" unique : true}
|
||||
|
||||
+113
-13
@@ -17,35 +17,85 @@ service Msg {
|
||||
// Macaroon for verification.
|
||||
rpc ExecuteTx(MsgExecuteTx) returns (MsgExecuteTxResponse);
|
||||
|
||||
// RegisterController initializes a controller with the given authentication
|
||||
// set, address, cid, publicKey, and user-defined alias.
|
||||
rpc RegisterController(MsgRegisterController)
|
||||
returns (MsgRegisterControllerResponse);
|
||||
// LinkAssertion links an assertion to a controller.
|
||||
rpc LinkAssertion(MsgLinkAssertion) returns (MsgLinkAssertionResponse);
|
||||
|
||||
// LinkAuthentication links an authentication to a controller.
|
||||
rpc LinkAuthentication(MsgLinkAuthentication)
|
||||
returns (MsgLinkAuthenticationResponse);
|
||||
|
||||
// UnlinkAssertion unlinks an assertion from a controller.
|
||||
rpc UnlinkAssertion(MsgUnlinkAssertion)
|
||||
returns (MsgUnlinkAssertionResponse);
|
||||
|
||||
// UnlinkAuthentication unlinks an authentication from a controller.
|
||||
rpc UnlinkAuthentication(MsgUnlinkAuthentication)
|
||||
returns (MsgUnlinkAuthenticationResponse);
|
||||
|
||||
// UpdateParams defines a governance operation for updating the parameters.
|
||||
rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse);
|
||||
}
|
||||
|
||||
// MsgRegisterController is the message type for the InitializeController RPC.
|
||||
message MsgRegisterController {
|
||||
option (cosmos.msg.v1.signer) = "authority";
|
||||
// MsgLinkAuthentication is the message type for the LinkAuthentication RPC.
|
||||
message MsgLinkAuthentication {
|
||||
option (cosmos.msg.v1.signer) = "controller";
|
||||
|
||||
// authority is the address of the governance account.
|
||||
string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
|
||||
// Controller is the address of the controller to authenticate.
|
||||
string controller = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
|
||||
|
||||
// Subject is the subject of the authentication.
|
||||
string subject = 2;
|
||||
|
||||
// Assertion is the assertion of the authentication.
|
||||
string assertion = 3;
|
||||
|
||||
// Authentication is the authentication of the authentication.
|
||||
bytes credential_id = 4;
|
||||
|
||||
// token is the macron token to authenticate the operation.
|
||||
string macaroon_token = 5;
|
||||
}
|
||||
|
||||
// MsgRegisterControllerResponse is the response type for the
|
||||
// InitializeController RPC.
|
||||
message MsgRegisterControllerResponse {
|
||||
// MsgLinkAuthenticationResponse is the response type for the
|
||||
// LinkAuthentication RPC.
|
||||
message MsgLinkAuthenticationResponse {
|
||||
// Success returns true if the specified cid is valid and not already
|
||||
// encrypted.
|
||||
bool success = 1;
|
||||
|
||||
// Controller is the address of the initialized controller.
|
||||
string controller = 2 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
|
||||
string did = 2;
|
||||
}
|
||||
|
||||
// MsgLinkAssertion is the message type for the LinkAssertion RPC.
|
||||
message MsgLinkAssertion {
|
||||
option (cosmos.msg.v1.signer) = "controller";
|
||||
|
||||
// Controller is the address of the controller to authenticate.
|
||||
string controller = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
|
||||
|
||||
// Subject is the subject of the authentication.
|
||||
string subject = 2;
|
||||
|
||||
// Assertion is the assertion of the authentication.
|
||||
string assertion = 3;
|
||||
|
||||
// token is the macron token to authenticate the operation.
|
||||
string macaroon_token = 4;
|
||||
}
|
||||
|
||||
// MsgLinkAssertionResponse is the response type for the
|
||||
// LinkAssertion RPC.
|
||||
message MsgLinkAssertionResponse {
|
||||
// Success returns true if the specified cid is valid and not already
|
||||
// encrypted.
|
||||
bool success = 1;
|
||||
|
||||
// Controller is the address of the initialized controller.
|
||||
string did = 2;
|
||||
}
|
||||
|
||||
|
||||
// MsgExecuteTx is the message type for the ExecuteTx RPC.
|
||||
message MsgExecuteTx {
|
||||
option (cosmos.msg.v1.signer) = "controller";
|
||||
@@ -66,6 +116,56 @@ message MsgExecuteTxResponse {
|
||||
string tx_hash = 2;
|
||||
}
|
||||
|
||||
// MsgUnlinkAssertion is the message type for the UnlinkAssertion RPC.
|
||||
message MsgUnlinkAssertion {
|
||||
option (cosmos.msg.v1.signer) = "controller";
|
||||
|
||||
// Controller is the address of the controller to authenticate.
|
||||
string controller = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
|
||||
|
||||
// Assertion is the assertion of the authentication.
|
||||
string assertion_did = 2;
|
||||
|
||||
// token is the macron token to authenticate the operation.
|
||||
string macaroon_token = 3;
|
||||
}
|
||||
|
||||
// MsgUnlinkAssertionResponse is the response type for the
|
||||
// UnlinkAssertion RPC.
|
||||
message MsgUnlinkAssertionResponse {
|
||||
// Success returns true if the specified cid is valid and not already
|
||||
// encrypted.
|
||||
bool success = 1;
|
||||
|
||||
// Controller is the address of the initialized controller.
|
||||
string did = 2;
|
||||
}
|
||||
|
||||
// MsgUnlinkAuthentication is the message type for the UnlinkAuthentication RPC.
|
||||
message MsgUnlinkAuthentication {
|
||||
option (cosmos.msg.v1.signer) = "controller";
|
||||
|
||||
// Controller is the address of the controller to authenticate.
|
||||
string controller = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
|
||||
|
||||
// Subject is the subject of the authentication.
|
||||
string authentication_did = 2;
|
||||
|
||||
// token is the macron token to authenticate the operation.
|
||||
string macaroon_token = 3;
|
||||
}
|
||||
|
||||
// MsgUnlinkAuthenticationResponse is the response type for the
|
||||
// UnlinkAuthentication RPC.
|
||||
message MsgUnlinkAuthenticationResponse {
|
||||
// Success returns true if the specified cid is valid and not already
|
||||
// encrypted.
|
||||
bool success = 1;
|
||||
|
||||
// Controller is the address of the initialized controller.
|
||||
string did = 2;
|
||||
}
|
||||
|
||||
// MsgUpdateParams is the Msg/UpdateParams request type.
|
||||
//
|
||||
// Since: cosmos-sdk 0.47
|
||||
|
||||
@@ -2,15 +2,15 @@ syntax = "proto3";
|
||||
package macaroon.v1;
|
||||
|
||||
import "amino/amino.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "did/v1/tx.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
option go_package = "github.com/onsonr/sonr/x/macaroon/types";
|
||||
|
||||
// GenesisState defines the module genesis state
|
||||
message GenesisState {
|
||||
// Params defines all the parameters of the module.
|
||||
Params params = 1 [ (gogoproto.nullable) = false ];
|
||||
Params params = 1 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// Params defines the set of module parameters.
|
||||
@@ -50,8 +50,8 @@ message Caveats {
|
||||
option (amino.name) = "macaroon/caveats";
|
||||
option (gogoproto.equal) = true;
|
||||
|
||||
repeated string supported_first_party = 1;
|
||||
repeated string supported_third_party = 2;
|
||||
repeated Caveat supported_first_party = 1;
|
||||
repeated Caveat supported_third_party = 2;
|
||||
}
|
||||
|
||||
// Transactions defines the allowlist,denylist for transactions which can be
|
||||
@@ -63,3 +63,9 @@ message Transactions {
|
||||
repeated string allowlist = 1;
|
||||
repeated string denylist = 2;
|
||||
}
|
||||
|
||||
message Caveat {
|
||||
repeated string scopes = 1;
|
||||
string caveat = 2;
|
||||
string description = 3;
|
||||
}
|
||||
|
||||
@@ -19,10 +19,22 @@ service Query {
|
||||
option (google.api.http).get = "/vault/v1/schema";
|
||||
}
|
||||
|
||||
// Allocate initializes a Target Vault available for claims with a compatible
|
||||
// Authentication mechanism. The default authentication mechanism is WebAuthn.
|
||||
rpc Allocate(AllocateRequest) returns (AllocateResponse) {
|
||||
option (google.api.http).post = "/vault/v1/allocate";
|
||||
}
|
||||
|
||||
// Sync queries the DID document by its id. And returns the required PKL
|
||||
// information
|
||||
rpc Sync(SyncRequest) returns (SyncResponse) {
|
||||
option (google.api.http).post = "/vault/v1/sync";
|
||||
rpc SyncInitial(SyncInitialRequest) returns (SyncInitialResponse) {
|
||||
option (google.api.http).post = "/vault/v1/sync-initial";
|
||||
}
|
||||
|
||||
// SyncCurrent queries the DID document by its id. And returns the required PKL
|
||||
// information
|
||||
rpc SyncCurrent(SyncCurrentRequest) returns (SyncCurrentResponse) {
|
||||
option (google.api.http).post = "/vault/v1/sync-current";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,6 +46,7 @@ message QueryParamsResponse {
|
||||
// params defines the parameters of the module.
|
||||
Params params = 1;
|
||||
}
|
||||
|
||||
// QuerySchemaRequest is the request type for the Query/Schema RPC method.
|
||||
message QuerySchemaRequest {}
|
||||
|
||||
@@ -43,8 +56,55 @@ message QuerySchemaResponse {
|
||||
Schema schema = 1;
|
||||
}
|
||||
|
||||
// SyncRequest is the request type for the Sync RPC method.
|
||||
message SyncRequest { string did = 1; }
|
||||
// AllocateRequest is the request type for the Allocate RPC method.
|
||||
message AllocateRequest {
|
||||
string origin = 1;
|
||||
string subject = 2;
|
||||
}
|
||||
|
||||
// SyncResponse is the response type for the Sync RPC method.
|
||||
message SyncResponse { bool success = 1; }
|
||||
// AllocateResponse is the response type for the Allocate RPC method.
|
||||
message AllocateResponse {
|
||||
bool success = 1;
|
||||
string cid = 2;
|
||||
string macaroon = 3;
|
||||
string public_uri = 4;
|
||||
int64 expiry_block = 5;
|
||||
}
|
||||
|
||||
// SyncRequest is the request type for the Sync RPC method.
|
||||
message SyncInitialRequest {
|
||||
string did = 1;
|
||||
}
|
||||
|
||||
// SyncInitialResponse is the response type for the Sync RPC method.
|
||||
message SyncInitialResponse {
|
||||
bool success = 1;
|
||||
|
||||
// Schema is the DID document.
|
||||
Schema schema = 2;
|
||||
|
||||
// Address is the address of the calling DID.
|
||||
string address = 3;
|
||||
|
||||
// ChainID is the chain ID of the current network.
|
||||
string chainID = 4;
|
||||
}
|
||||
|
||||
// SyncCurrentRequest is the request type for the Sync RPC method.
|
||||
message SyncCurrentRequest {
|
||||
string macaroon = 1;
|
||||
}
|
||||
|
||||
// SyncCurrentResponse is the response type for the Sync RPC method.
|
||||
message SyncCurrentResponse {
|
||||
bool success = 1;
|
||||
|
||||
// Schema is the DID document.
|
||||
Schema schema = 2;
|
||||
|
||||
// Address is the address of the calling DID.
|
||||
string address = 3;
|
||||
|
||||
// ChainID is the chain ID of the current network.
|
||||
string chainID = 4;
|
||||
}
|
||||
|
||||
+22
-22
@@ -25,33 +25,12 @@ service Msg {
|
||||
rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse);
|
||||
}
|
||||
|
||||
// MsgUpdateParams is the Msg/UpdateParams request type.
|
||||
//
|
||||
// Since: cosmos-sdk 0.47
|
||||
message MsgUpdateParams {
|
||||
option (cosmos.msg.v1.signer) = "authority";
|
||||
|
||||
// authority is the address of the governance account.
|
||||
string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
|
||||
|
||||
// params defines the parameters to update.
|
||||
//
|
||||
// NOTE: All parameters must be supplied.
|
||||
Params params = 2 [ (gogoproto.nullable) = false ];
|
||||
}
|
||||
|
||||
// MsgUpdateParamsResponse defines the response structure for executing a
|
||||
// MsgUpdateParams message.
|
||||
//
|
||||
// Since: cosmos-sdk 0.47
|
||||
message MsgUpdateParamsResponse {}
|
||||
|
||||
// MsgAllocateVault is the message type for the AllocateVault RPC.
|
||||
message MsgAllocateVault {
|
||||
option (cosmos.msg.v1.signer) = "authority";
|
||||
|
||||
// authority is the address of the service account.
|
||||
string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
|
||||
string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
|
||||
|
||||
// subject is a unique human-defined identifier to associate with the vault.
|
||||
string subject = 2;
|
||||
@@ -75,3 +54,24 @@ message MsgAllocateVaultResponse {
|
||||
// IsLocalhost is a flag to indicate if the vault is localhost
|
||||
bool localhost = 4;
|
||||
}
|
||||
|
||||
// MsgUpdateParams is the Msg/UpdateParams request type.
|
||||
//
|
||||
// Since: cosmos-sdk 0.47
|
||||
message MsgUpdateParams {
|
||||
option (cosmos.msg.v1.signer) = "authority";
|
||||
|
||||
// authority is the address of the governance account.
|
||||
string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
|
||||
|
||||
// params defines the parameters to update.
|
||||
//
|
||||
// NOTE: All parameters must be supplied.
|
||||
Params params = 2 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// MsgUpdateParamsResponse defines the response structure for executing a
|
||||
// MsgUpdateParams message.
|
||||
//
|
||||
// Since: cosmos-sdk 0.47
|
||||
message MsgUpdateParamsResponse {}
|
||||
|
||||
Reference in New Issue
Block a user