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:
Prad Nukala
2024-10-15 14:31:19 -04:00
committed by GitHub
parent 104df074e9
commit b6c49828ed
146 changed files with 18035 additions and 4202 deletions
-1
View File
@@ -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
+1
View File
@@ -14,6 +14,7 @@ lint:
- COMMENTS
- FILE_LOWER_SNAKE_CASE
except:
- PACKAGE_NO_IMPORT_CYCLE
- UNARY_RPC
- COMMENT_FIELD
- COMMENT_MESSAGE
+2 -4
View File
@@ -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"};
}
+31 -2
View File
@@ -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
View File
@@ -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
+10 -4
View File
@@ -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;
}
+66 -6
View File
@@ -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
View File
@@ -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 {}