From 2e1b3c464f43ad5c83d7f7869e648517e5337e67 Mon Sep 17 00:00:00 2001 From: Antonio Antonino Date: Fri, 14 Oct 2022 11:30:16 +0200 Subject: [PATCH 1/4] Add new DID runtime API name --- rpc/did/runtime-api/src/lib.rs | 31 +++++++++++++++++++++ runtimes/peregrine/src/lib.rs | 49 ++++++++++++++++++++++++++++++++++ runtimes/spiritnet/src/lib.rs | 49 ++++++++++++++++++++++++++++++++++ runtimes/standalone/src/lib.rs | 49 ++++++++++++++++++++++++++++++++++ 4 files changed, 178 insertions(+) diff --git a/rpc/did/runtime-api/src/lib.rs b/rpc/did/runtime-api/src/lib.rs index cc44451286..b0eb515c1f 100644 --- a/rpc/did/runtime-api/src/lib.rs +++ b/rpc/did/runtime-api/src/lib.rs @@ -142,4 +142,35 @@ sp_api::decl_runtime_apis! { fn query_did(did: DidIdentifier) -> Option>; fn query_did(did: DidIdentifier) -> Option>; } + + pub trait Did where + DidIdentifier: Codec, + AccountId: Codec, + LinkableAccountId: Codec, + BlockNumber: Codec + MaxEncodedLen, + Key: Codec, + Balance: Codec, + { + /// Given a web3name this returns: + /// * the DID + /// * public keys stored for the did + /// * the web3name (optional) + /// * associated accounts + /// * service endpoints + fn query_by_web3_name(name: Vec) -> Option>; + /// Given an account address this returns: + /// * the DID + /// * public keys stored for the did + /// * the web3name (optional) + /// * associated accounts + /// * service endpoints + fn query_by_account(account: LinkableAccountId) -> Option>; + /// Given a did this returns: + /// * the DID + /// * public keys stored for the did + /// * the web3name (optional) + /// * associated accounts + /// * service endpoints + fn query(did: DidIdentifier) -> Option>; + } } diff --git a/runtimes/peregrine/src/lib.rs b/runtimes/peregrine/src/lib.rs index 927383ec83..a1496e22ab 100644 --- a/runtimes/peregrine/src/lib.rs +++ b/runtimes/peregrine/src/lib.rs @@ -46,6 +46,7 @@ use sp_version::RuntimeVersion; use xcm_executor::XcmExecutor; use delegation::DelegationAc; +use did_rpc_runtime_api::runtime_decl_for_DidApi::DidApiV2; use pallet_did_lookup::{linkable_account::LinkableAccountId, migrations::EthereumMigration}; pub use parachain_staking::InflationInfo; pub use public_credentials; @@ -1240,6 +1241,54 @@ impl_runtime_apis! { } } + impl did_rpc_runtime_api::Did< + Block, + DidIdentifier, + AccountId, + LinkableAccountId, + Balance, + Hash, + BlockNumber + > for Runtime { + fn query_by_web3_name(name: Vec) -> Option + > { + Self::query_did_by_w3n(name) + } + + fn query_by_account(account: LinkableAccountId) -> Option< + did_rpc_runtime_api::RawDidLinkedInfo< + DidIdentifier, + AccountId, + LinkableAccountId, + Balance, + Hash, + BlockNumber + > + > { + Self::query_did_by_account_id(account) + } + + fn query(did: DidIdentifier) -> Option< + did_rpc_runtime_api::RawDidLinkedInfo< + DidIdentifier, + AccountId, + LinkableAccountId, + Balance, + Hash, + BlockNumber + > + > { + Self::query_did(did) + } + } + impl public_credentials_runtime_api::PublicCredentialsApi::DelegationNodeId>>> for Runtime { fn get_credential(credential_id: Hash) -> Option::DelegationNodeId>>> { let subject = public_credentials::CredentialSubjects::::get(&credential_id)?; diff --git a/runtimes/spiritnet/src/lib.rs b/runtimes/spiritnet/src/lib.rs index 44d5a596fd..00773952c6 100644 --- a/runtimes/spiritnet/src/lib.rs +++ b/runtimes/spiritnet/src/lib.rs @@ -46,6 +46,7 @@ use sp_version::RuntimeVersion; use xcm_executor::XcmExecutor; use delegation::DelegationAc; +use did_rpc_runtime_api::runtime_decl_for_DidApi::DidApiV2; use pallet_did_lookup::{linkable_account::LinkableAccountId, migrations::EthereumMigration}; pub use parachain_staking::InflationInfo; pub use public_credentials; @@ -1234,6 +1235,54 @@ impl_runtime_apis! { } } + impl did_rpc_runtime_api::Did< + Block, + DidIdentifier, + AccountId, + LinkableAccountId, + Balance, + Hash, + BlockNumber + > for Runtime { + fn query_by_web3_name(name: Vec) -> Option + > { + Self::query_did_by_w3n(name) + } + + fn query_by_account(account: LinkableAccountId) -> Option< + did_rpc_runtime_api::RawDidLinkedInfo< + DidIdentifier, + AccountId, + LinkableAccountId, + Balance, + Hash, + BlockNumber + > + > { + Self::query_did_by_account_id(account) + } + + fn query(did: DidIdentifier) -> Option< + did_rpc_runtime_api::RawDidLinkedInfo< + DidIdentifier, + AccountId, + LinkableAccountId, + Balance, + Hash, + BlockNumber + > + > { + Self::query_did(did) + } + } + impl public_credentials_runtime_api::PublicCredentialsApi::DelegationNodeId>>> for Runtime { fn get_credential(credential_id: Hash) -> Option::DelegationNodeId>>> { let subject = public_credentials::CredentialSubjects::::get(&credential_id)?; diff --git a/runtimes/standalone/src/lib.rs b/runtimes/standalone/src/lib.rs index 56749688f9..fae8ad923b 100644 --- a/runtimes/standalone/src/lib.rs +++ b/runtimes/standalone/src/lib.rs @@ -50,6 +50,7 @@ use sp_std::prelude::*; use sp_version::RuntimeVersion; use delegation::DelegationAc; +use did_rpc_runtime_api::runtime_decl_for_DidApi::DidApiV2; use pallet_did_lookup::{linkable_account::LinkableAccountId, migrations::EthereumMigration}; use runtime_common::{ assets::AssetDid, @@ -992,6 +993,54 @@ impl_runtime_apis! { } } + impl did_rpc_runtime_api::Did< + Block, + DidIdentifier, + AccountId, + LinkableAccountId, + Balance, + Hash, + BlockNumber + > for Runtime { + fn query_by_web3_name(name: Vec) -> Option + > { + Self::query_did_by_w3n(name) + } + + fn query_by_account(account: LinkableAccountId) -> Option< + did_rpc_runtime_api::RawDidLinkedInfo< + DidIdentifier, + AccountId, + LinkableAccountId, + Balance, + Hash, + BlockNumber + > + > { + Self::query_did_by_account_id(account) + } + + fn query(did: DidIdentifier) -> Option< + did_rpc_runtime_api::RawDidLinkedInfo< + DidIdentifier, + AccountId, + LinkableAccountId, + Balance, + Hash, + BlockNumber + > + > { + Self::query_did(did) + } + } + impl public_credentials_runtime_api::PublicCredentialsApi::DelegationNodeId>>> for Runtime { fn get_credential(credential_id: Hash) -> Option::DelegationNodeId>>> { let subject = public_credentials::CredentialSubjects::::get(&credential_id)?; From 0863ea247a64796192a92a406c6f667007ebf354 Mon Sep 17 00:00:00 2001 From: Antonio Antonino Date: Fri, 14 Oct 2022 11:34:35 +0200 Subject: [PATCH 2/4] Rename public credentials runtime API as well --- rpc/public-credentials/runtime-api/src/lib.rs | 2 +- rpc/public-credentials/src/lib.rs | 2 +- runtimes/clone/src/lib.rs | 2 +- runtimes/peregrine/src/lib.rs | 2 +- runtimes/spiritnet/src/lib.rs | 2 +- runtimes/standalone/src/lib.rs | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/rpc/public-credentials/runtime-api/src/lib.rs b/rpc/public-credentials/runtime-api/src/lib.rs index 6b0b0ba5a8..da522ade20 100644 --- a/rpc/public-credentials/runtime-api/src/lib.rs +++ b/rpc/public-credentials/runtime-api/src/lib.rs @@ -24,7 +24,7 @@ use sp_std::vec::Vec; sp_api::decl_runtime_apis! { /// The API to query public credentials for a subject. - pub trait PublicCredentialsApi where + pub trait PublicCredentials where SubjectId: Codec, CredentialId: Codec, CredentialEntry: Codec diff --git a/rpc/public-credentials/src/lib.rs b/rpc/public-credentials/src/lib.rs index a5fede10c0..ec992622e2 100644 --- a/rpc/public-credentials/src/lib.rs +++ b/rpc/public-credentials/src/lib.rs @@ -16,7 +16,7 @@ // If you feel like getting in touch with us, you can do so at info@botlabs.org -pub use public_credentials_runtime_api::PublicCredentialsApi as PublicCredentialsRuntimeApi; +pub use public_credentials_runtime_api::PublicCredentials as PublicCredentialsRuntimeApi; use std::sync::Arc; diff --git a/runtimes/clone/src/lib.rs b/runtimes/clone/src/lib.rs index 499e87dce1..92b299aa89 100644 --- a/runtimes/clone/src/lib.rs +++ b/runtimes/clone/src/lib.rs @@ -578,7 +578,7 @@ impl_runtime_apis! { } } - impl public_credentials_runtime_api::PublicCredentialsApi>> for Runtime { + impl public_credentials_runtime_api::PublicCredentials>> for Runtime { fn get_credential(_credential_id: Hash) -> Option>> { None } diff --git a/runtimes/peregrine/src/lib.rs b/runtimes/peregrine/src/lib.rs index a1496e22ab..418b2dc994 100644 --- a/runtimes/peregrine/src/lib.rs +++ b/runtimes/peregrine/src/lib.rs @@ -1289,7 +1289,7 @@ impl_runtime_apis! { } } - impl public_credentials_runtime_api::PublicCredentialsApi::DelegationNodeId>>> for Runtime { + impl public_credentials_runtime_api::PublicCredentials::DelegationNodeId>>> for Runtime { fn get_credential(credential_id: Hash) -> Option::DelegationNodeId>>> { let subject = public_credentials::CredentialSubjects::::get(&credential_id)?; public_credentials::Credentials::::get(&subject, &credential_id) diff --git a/runtimes/spiritnet/src/lib.rs b/runtimes/spiritnet/src/lib.rs index 00773952c6..39becbf17a 100644 --- a/runtimes/spiritnet/src/lib.rs +++ b/runtimes/spiritnet/src/lib.rs @@ -1283,7 +1283,7 @@ impl_runtime_apis! { } } - impl public_credentials_runtime_api::PublicCredentialsApi::DelegationNodeId>>> for Runtime { + impl public_credentials_runtime_api::PublicCredentials::DelegationNodeId>>> for Runtime { fn get_credential(credential_id: Hash) -> Option::DelegationNodeId>>> { let subject = public_credentials::CredentialSubjects::::get(&credential_id)?; public_credentials::Credentials::::get(&subject, &credential_id) diff --git a/runtimes/standalone/src/lib.rs b/runtimes/standalone/src/lib.rs index fae8ad923b..8eb2d7c42f 100644 --- a/runtimes/standalone/src/lib.rs +++ b/runtimes/standalone/src/lib.rs @@ -1041,7 +1041,7 @@ impl_runtime_apis! { } } - impl public_credentials_runtime_api::PublicCredentialsApi::DelegationNodeId>>> for Runtime { + impl public_credentials_runtime_api::PublicCredentials::DelegationNodeId>>> for Runtime { fn get_credential(credential_id: Hash) -> Option::DelegationNodeId>>> { let subject = public_credentials::CredentialSubjects::::get(&credential_id)?; public_credentials::Credentials::::get(&subject, &credential_id) From 5d2565669e750a5e675eedd915ab4748c01fb3f0 Mon Sep 17 00:00:00 2001 From: Antonio Antonino Date: Fri, 14 Oct 2022 11:36:50 +0200 Subject: [PATCH 3/4] Add deprecation comment --- rpc/did/runtime-api/src/lib.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/rpc/did/runtime-api/src/lib.rs b/rpc/did/runtime-api/src/lib.rs index b0eb515c1f..8aba8fd945 100644 --- a/rpc/did/runtime-api/src/lib.rs +++ b/rpc/did/runtime-api/src/lib.rs @@ -103,6 +103,7 @@ pub type RawDidLinkedInfo; sp_api::decl_runtime_apis! { + // TODO: Remove this runtime API when the SDK team agrees that it is time to introduce a breaking change. #[api_version(2)] /// The API to query DID information. pub trait DidApi where From 43d682cbab32306e9198a760d0dda6f9e80b3af8 Mon Sep 17 00:00:00 2001 From: Antonio Antonino Date: Fri, 14 Oct 2022 12:22:28 +0200 Subject: [PATCH 4/4] revert 'Rename public credentials runtime API as well' --- rpc/public-credentials/runtime-api/src/lib.rs | 2 +- rpc/public-credentials/src/lib.rs | 2 +- runtimes/clone/src/lib.rs | 2 +- runtimes/peregrine/src/lib.rs | 2 +- runtimes/spiritnet/src/lib.rs | 2 +- runtimes/standalone/src/lib.rs | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/rpc/public-credentials/runtime-api/src/lib.rs b/rpc/public-credentials/runtime-api/src/lib.rs index da522ade20..6b0b0ba5a8 100644 --- a/rpc/public-credentials/runtime-api/src/lib.rs +++ b/rpc/public-credentials/runtime-api/src/lib.rs @@ -24,7 +24,7 @@ use sp_std::vec::Vec; sp_api::decl_runtime_apis! { /// The API to query public credentials for a subject. - pub trait PublicCredentials where + pub trait PublicCredentialsApi where SubjectId: Codec, CredentialId: Codec, CredentialEntry: Codec diff --git a/rpc/public-credentials/src/lib.rs b/rpc/public-credentials/src/lib.rs index ec992622e2..a5fede10c0 100644 --- a/rpc/public-credentials/src/lib.rs +++ b/rpc/public-credentials/src/lib.rs @@ -16,7 +16,7 @@ // If you feel like getting in touch with us, you can do so at info@botlabs.org -pub use public_credentials_runtime_api::PublicCredentials as PublicCredentialsRuntimeApi; +pub use public_credentials_runtime_api::PublicCredentialsApi as PublicCredentialsRuntimeApi; use std::sync::Arc; diff --git a/runtimes/clone/src/lib.rs b/runtimes/clone/src/lib.rs index 92b299aa89..499e87dce1 100644 --- a/runtimes/clone/src/lib.rs +++ b/runtimes/clone/src/lib.rs @@ -578,7 +578,7 @@ impl_runtime_apis! { } } - impl public_credentials_runtime_api::PublicCredentials>> for Runtime { + impl public_credentials_runtime_api::PublicCredentialsApi>> for Runtime { fn get_credential(_credential_id: Hash) -> Option>> { None } diff --git a/runtimes/peregrine/src/lib.rs b/runtimes/peregrine/src/lib.rs index 418b2dc994..a1496e22ab 100644 --- a/runtimes/peregrine/src/lib.rs +++ b/runtimes/peregrine/src/lib.rs @@ -1289,7 +1289,7 @@ impl_runtime_apis! { } } - impl public_credentials_runtime_api::PublicCredentials::DelegationNodeId>>> for Runtime { + impl public_credentials_runtime_api::PublicCredentialsApi::DelegationNodeId>>> for Runtime { fn get_credential(credential_id: Hash) -> Option::DelegationNodeId>>> { let subject = public_credentials::CredentialSubjects::::get(&credential_id)?; public_credentials::Credentials::::get(&subject, &credential_id) diff --git a/runtimes/spiritnet/src/lib.rs b/runtimes/spiritnet/src/lib.rs index 39becbf17a..00773952c6 100644 --- a/runtimes/spiritnet/src/lib.rs +++ b/runtimes/spiritnet/src/lib.rs @@ -1283,7 +1283,7 @@ impl_runtime_apis! { } } - impl public_credentials_runtime_api::PublicCredentials::DelegationNodeId>>> for Runtime { + impl public_credentials_runtime_api::PublicCredentialsApi::DelegationNodeId>>> for Runtime { fn get_credential(credential_id: Hash) -> Option::DelegationNodeId>>> { let subject = public_credentials::CredentialSubjects::::get(&credential_id)?; public_credentials::Credentials::::get(&subject, &credential_id) diff --git a/runtimes/standalone/src/lib.rs b/runtimes/standalone/src/lib.rs index 8eb2d7c42f..fae8ad923b 100644 --- a/runtimes/standalone/src/lib.rs +++ b/runtimes/standalone/src/lib.rs @@ -1041,7 +1041,7 @@ impl_runtime_apis! { } } - impl public_credentials_runtime_api::PublicCredentials::DelegationNodeId>>> for Runtime { + impl public_credentials_runtime_api::PublicCredentialsApi::DelegationNodeId>>> for Runtime { fn get_credential(credential_id: Hash) -> Option::DelegationNodeId>>> { let subject = public_credentials::CredentialSubjects::::get(&credential_id)?; public_credentials::Credentials::::get(&subject, &credential_id)