drive/verify/shielded/verify_shielded_pool_state/
mod.rs1mod v0;
2
3use crate::drive::Drive;
4use crate::error::drive::DriveError;
5use crate::error::Error;
6use crate::verify::RootHash;
7use dpp::version::PlatformVersion;
8
9impl Drive {
10 pub fn verify_shielded_pool_state(
12 proof: &[u8],
13 verify_subset_of_proof: bool,
14 platform_version: &PlatformVersion,
15 ) -> Result<(RootHash, Option<u64>), Error> {
16 match platform_version
17 .drive
18 .methods
19 .verify
20 .shielded
21 .verify_shielded_pool_state
22 {
23 0 => {
24 Self::verify_shielded_pool_state_v0(proof, verify_subset_of_proof, platform_version)
25 }
26 version => Err(Error::Drive(DriveError::UnknownVersionMismatch {
27 method: "verify_shielded_pool_state".to_string(),
28 known_versions: vec![0],
29 received: version,
30 })),
31 }
32 }
33}
34
35#[cfg(test)]
36mod tests {
37 use super::*;
38 use dpp::version::PlatformVersion;
39
40 #[test]
41 fn test_verify_shielded_pool_state_unknown_version_mismatch() {
42 let mut platform_version = PlatformVersion::latest().clone();
43 platform_version
44 .drive
45 .methods
46 .verify
47 .shielded
48 .verify_shielded_pool_state = 255;
49
50 let result = Drive::verify_shielded_pool_state(&[], false, &platform_version);
51
52 assert!(
53 matches!(
54 result,
55 Err(Error::Drive(DriveError::UnknownVersionMismatch { .. }))
56 ),
57 "expected UnknownVersionMismatch, got {:?}",
58 result,
59 );
60 }
61}