pub trait FromProof<Req> {
type Request;
type Response;
// Required method
fn maybe_from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Option<Self>, ResponseMetadata, Proof), Error>
where Self: Sized + 'a;
// Provided methods
fn maybe_from_proof<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<Option<Self>, Error>
where Self: Sized + 'a { ... }
fn from_proof<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<Self, Error>
where Self: Sized + 'a { ... }
fn from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Self, ResponseMetadata), Error>
where Self: Sized + 'a { ... }
fn from_proof_with_metadata_and_proof<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Self, ResponseMetadata, Proof), Error>
where Self: Sized + 'a { ... }
}Expand description
Parse and verify the received proof and retrieve the requested object, if any.
Use FromProof::maybe_from_proof() or FromProof::from_proof() to parse and verify proofs received
from the Dash Platform (including verification of grovedb-generated proofs and cryptographic proofs generated
by Tenderdash).
gRPC responses, received from the Dash Platform in response to requests containing prove: true, contain
GroveDB proof structure (including encapsulated objects) and metadata required to verify cryptographic proof
generated by the Tenderdash. This trait provides methods that parse and verify the proof and retrieve the requested
object (or information that the object does not exist) in one step.
This trait is implemented by several objects defined in Dash Platform Protocol, like Identity, DataContract, Documents, etc. It is also implemented by several helper objects from [types] module.
Required Associated Types§
Required Methods§
Sourcefn maybe_from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Option<Self>, ResponseMetadata, Proof), Error>where
Self: Sized + 'a,
fn maybe_from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Option<Self>, ResponseMetadata, Proof), Error>where
Self: Sized + 'a,
Parse and verify the received proof and retrieve the requested object, if any.
§Arguments
request: The request sent to the server.response: The response received from the server.network: The network we are using, Mainnet/Testnet/Devnet or Regtestplatform_version: The platform version that should be used.provider: A callback implementing ContextProvider that provides quorum details required to verify the proof.
§Returns
Ok(Some((object, metadata)))when the requested object was found in the proof.Ok(None)when the requested object was not found in the proof; this can be interpreted as proof of non-existence. For collections, returns Ok(None) if none of the requested objects were found.Err(Error)when either the provided data is invalid or proof validation failed.
Provided Methods§
Sourcefn maybe_from_proof<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<Option<Self>, Error>where
Self: Sized + 'a,
fn maybe_from_proof<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<Option<Self>, Error>where
Self: Sized + 'a,
Parse and verify the received proof and retrieve the requested object, if any.
§Arguments
request: The request sent to the server.response: The response received from the server.network: The network we are using, Mainnet/Testnet/Devnet or Regtestplatform_version: The platform version that should be used.provider: A callback implementing ContextProvider that provides quorum details required to verify the proof.
§Returns
Ok(Some(object, metadata))when the requested object was found in the proof.Ok(None)when the requested object was not found in the proof; this can be interpreted as proof of non-existence. For collections, returns Ok(None) if none of the requested objects were found.Err(Error)when either the provided data is invalid or proof validation failed.
Sourcefn from_proof<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<Self, Error>where
Self: Sized + 'a,
fn from_proof<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<Self, Error>where
Self: Sized + 'a,
Retrieve the requested object from the proof.
Runs full verification of the proof and retrieves enclosed objects.
This method uses FromProof::maybe_from_proof() internally and throws an error
if the requested object does not exist in the proof.
§Arguments
request: The request sent to the server.response: The response received from the server.network: The network we are using, Mainnet/Testnet/Devnet or Regtestplatform_version: The platform version that should be used.provider: A callback implementing ContextProvider that provides quorum details required to verify the proof.
§Returns
Ok(object)when the requested object was found in the proof.Err(Error::DocumentMissingInProof)when the requested object was not found in the proof.Err(Error)when either the provided data is invalid or proof validation failed.
Sourcefn from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Self, ResponseMetadata), Error>where
Self: Sized + 'a,
fn from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Self, ResponseMetadata), Error>where
Self: Sized + 'a,
Retrieve the requested object from the proof with metadata.
Runs full verification of the proof and retrieves enclosed objects.
This method uses FromProof::maybe_from_proof_with_metadata() internally and throws an error
if the requested object does not exist in the proof.
§Arguments
request: The request sent to the server.response: The response received from the server.network: The network we are using, Mainnet/Testnet/Devnet or Regtestplatform_version: The platform version that should be used.provider: A callback implementing ContextProvider that provides quorum details required to verify the proof.
§Returns
Ok(Some(object, metadata))when the requested object was found in the proof.Err(Error::DocumentMissingInProof)when the requested object was not found in the proof.Err(Error)when either the provided data is invalid or proof validation failed.
Sourcefn from_proof_with_metadata_and_proof<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Self, ResponseMetadata, Proof), Error>where
Self: Sized + 'a,
fn from_proof_with_metadata_and_proof<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Self, ResponseMetadata, Proof), Error>where
Self: Sized + 'a,
Retrieve the requested object from the proof with metadata.
Runs full verification of the proof and retrieves enclosed objects.
This method uses FromProof::maybe_from_proof_with_metadata() internally and throws an error
if the requested object does not exist in the proof.
§Arguments
request: The request sent to the server.response: The response received from the server.network: The network we are using, Mainnet/Testnet/Devnet or Regtestplatform_version: The platform version that should be used.provider: A callback implementing ContextProvider that provides quorum details required to verify the proof.
§Returns
Ok(Some(object, metadata, proof))when the requested object was found in the proof.Err(Error::DocumentMissingInProof)when the requested object was not found in the proof.Err(Error)when either the provided data is invalid or proof validation failed.
Implementations on Foreign Types§
Source§impl FromProof<BroadcastStateTransitionRequest> for StateTransitionProofResult
impl FromProof<BroadcastStateTransitionRequest> for StateTransitionProofResult
type Request = BroadcastStateTransitionRequest
type Response = WaitForStateTransitionResultResponse
fn maybe_from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
_network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Option<Self>, ResponseMetadata, Proof), Error>where
Self: Sized + 'a,
Source§impl FromProof<GetAddressesTrunkStateRequest> for GroveTrunkQueryResult
impl FromProof<GetAddressesTrunkStateRequest> for GroveTrunkQueryResult
type Request = GetAddressesTrunkStateRequest
type Response = GetAddressesTrunkStateResponse
fn maybe_from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
_request: I,
response: O,
_network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Option<Self>, ResponseMetadata, Proof), Error>where
GroveTrunkQueryResult: 'a,
Source§impl FromProof<GetContestedResourceIdentityVotesRequest> for Vote
impl FromProof<GetContestedResourceIdentityVotesRequest> for Vote
type Request = GetContestedResourceIdentityVotesRequest
type Response = GetContestedResourceIdentityVotesResponse
fn maybe_from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Option<Self>, ResponseMetadata, Proof), Error>where
Self: Sized + 'a,
Source§impl FromProof<GetDataContractRequest> for (DataContract, Vec<u8>)
impl FromProof<GetDataContractRequest> for (DataContract, Vec<u8>)
type Request = GetDataContractRequest
type Response = GetDataContractResponse
fn maybe_from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
_network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Option<Self>, ResponseMetadata, Proof), Error>where
DataContract: 'a,
Source§impl FromProof<GetDataContractRequest> for DataContract
impl FromProof<GetDataContractRequest> for DataContract
type Request = GetDataContractRequest
type Response = GetDataContractResponse
fn maybe_from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
_network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Option<Self>, ResponseMetadata, Proof), Error>where
DataContract: 'a,
Source§impl FromProof<GetEpochsInfoRequest> for ExtendedEpochInfo
impl FromProof<GetEpochsInfoRequest> for ExtendedEpochInfo
type Request = GetEpochsInfoRequest
type Response = GetEpochsInfoResponse
fn maybe_from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Option<Self>, ResponseMetadata, Proof), Error>where
Self: Sized + 'a,
Source§impl FromProof<GetGroupInfoRequest> for Group
impl FromProof<GetGroupInfoRequest> for Group
type Request = GetGroupInfoRequest
type Response = GetGroupInfoResponse
fn maybe_from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
_network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Option<Self>, ResponseMetadata, Proof), Error>where
Self: Sized + 'a,
Source§impl FromProof<GetIdentitiesContractKeysRequest> for IdentitiesContractKeys
impl FromProof<GetIdentitiesContractKeysRequest> for IdentitiesContractKeys
type Request = GetIdentitiesContractKeysRequest
type Response = GetIdentitiesContractKeysResponse
fn maybe_from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
_network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Option<Self>, ResponseMetadata, Proof), Error>where
Self: 'a,
Source§impl FromProof<GetIdentityByNonUniquePublicKeyHashRequest> for Identity
impl FromProof<GetIdentityByNonUniquePublicKeyHashRequest> for Identity
type Request = GetIdentityByNonUniquePublicKeyHashRequest
type Response = GetIdentityByNonUniquePublicKeyHashResponse
fn maybe_from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
_network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Option<Self>, ResponseMetadata, Proof), Error>where
Self: Sized + 'a,
Source§impl FromProof<GetIdentityByPublicKeyHashRequest> for Identity
impl FromProof<GetIdentityByPublicKeyHashRequest> for Identity
type Request = GetIdentityByPublicKeyHashRequest
type Response = GetIdentityByPublicKeyHashResponse
fn maybe_from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
_network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Option<Self>, ResponseMetadata, Proof), Error>where
Identity: 'a,
Source§impl FromProof<GetIdentityRequest> for Identity
impl FromProof<GetIdentityRequest> for Identity
type Request = GetIdentityRequest
type Response = GetIdentityResponse
fn maybe_from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>( request: I, response: O, _network: Network, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, ) -> Result<(Option<Self>, ResponseMetadata, Proof), Error>
Source§impl FromProof<GetNullifiersTrunkStateRequest> for GroveTrunkQueryResult
impl FromProof<GetNullifiersTrunkStateRequest> for GroveTrunkQueryResult
type Request = GetNullifiersTrunkStateRequest
type Response = GetNullifiersTrunkStateResponse
fn maybe_from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
_network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Option<Self>, ResponseMetadata, Proof), Error>where
GroveTrunkQueryResult: 'a,
Source§impl FromProof<GetTokenContractInfoRequest> for TokenContractInfo
impl FromProof<GetTokenContractInfoRequest> for TokenContractInfo
type Request = GetTokenContractInfoRequest
type Response = GetTokenContractInfoResponse
fn maybe_from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
_network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Option<Self>, ResponseMetadata, Proof), Error>where
Self: Sized + 'a,
Source§impl FromProof<GetTokenPerpetualDistributionLastClaimRequest> for RewardDistributionMoment
impl FromProof<GetTokenPerpetualDistributionLastClaimRequest> for RewardDistributionMoment
Source§fn maybe_from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
_network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Option<Self>, ResponseMetadata, Proof), Error>where
Self: Sized + 'a,
fn maybe_from_proof_with_metadata<'a, I: Into<Self::Request>, O: Into<Self::Response>>(
request: I,
response: O,
_network: Network,
platform_version: &PlatformVersion,
provider: &'a dyn ContextProvider,
) -> Result<(Option<Self>, ResponseMetadata, Proof), Error>where
Self: Sized + 'a,
Parse & verify the last‑claim proof returned by Platform.