drive/verify/shielded/verify_shielded_pool_state/
mod.rs1mod v0;
2
3use crate::drive::shielded::paths::token_shielded_pool_path_vec;
4use crate::drive::Drive;
5use crate::error::drive::DriveError;
6use crate::error::Error;
7use crate::verify::RootHash;
8use dpp::version::PlatformVersion;
9
10impl Drive {
11 pub fn verify_shielded_pool_state(
13 proof: &[u8],
14 verify_subset_of_proof: bool,
15 platform_version: &PlatformVersion,
16 ) -> Result<(RootHash, Option<u64>), Error> {
17 match platform_version
18 .drive
19 .methods
20 .verify
21 .shielded
22 .verify_shielded_pool_state
23 {
24 0 => {
25 Self::verify_shielded_pool_state_v0(proof, verify_subset_of_proof, platform_version)
26 }
27 version => Err(Error::Drive(DriveError::UnknownVersionMismatch {
28 method: "verify_shielded_pool_state".to_string(),
29 known_versions: vec![0],
30 received: version,
31 })),
32 }
33 }
34}
35
36impl Drive {
37 pub fn verify_token_shielded_pool_state(
40 proof: &[u8],
41 token_id: [u8; 32],
42 verify_subset_of_proof: bool,
43 platform_version: &PlatformVersion,
44 ) -> Result<(RootHash, Option<u64>), Error> {
45 match platform_version
46 .drive
47 .methods
48 .verify
49 .shielded
50 .verify_shielded_pool_state
51 {
52 0 => Self::verify_pool_state_v0(
53 proof,
54 token_shielded_pool_path_vec(token_id),
55 verify_subset_of_proof,
56 platform_version,
57 ),
58 version => Err(Error::Drive(DriveError::UnknownVersionMismatch {
59 method: "verify_token_shielded_pool_state".to_string(),
60 known_versions: vec![0],
61 received: version,
62 })),
63 }
64 }
65}
66
67#[cfg(test)]
68mod tests {
69 use super::*;
70 use dpp::version::PlatformVersion;
71
72 #[test]
73 fn test_verify_shielded_pool_state_unknown_version_mismatch() {
74 let mut platform_version = PlatformVersion::latest().clone();
75 platform_version
76 .drive
77 .methods
78 .verify
79 .shielded
80 .verify_shielded_pool_state = 255;
81
82 let result = Drive::verify_shielded_pool_state(&[], false, &platform_version);
83
84 assert!(
85 matches!(
86 result,
87 Err(Error::Drive(DriveError::UnknownVersionMismatch { .. }))
88 ),
89 "expected UnknownVersionMismatch, got {:?}",
90 result,
91 );
92 }
93}