Skip to content

Commit

Permalink
fix: change DIP components storage hashers (#613)
Browse files Browse the repository at this point in the history
Changing the storage hasher before we deploy on production, otherwise we
would then need a migration strategy. I think
we can disregard any migrations on our testnets, as the effort is not
justified.

I also lowered the limits of the DIP provider template, which were
higher than Peregrine, so that it is faster to generate the benchmark
worst case.

Related to #601, based on
top of #612.
  • Loading branch information
ntn-x2 committed Mar 28, 2024
1 parent bfc7ae5 commit f4a94f0
Show file tree
Hide file tree
Showing 9 changed files with 200 additions and 695 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -275,17 +275,16 @@ mod dip_did_proof_with_verified_relay_state_root {
type WeightInfo = ();
}

// Storage proof generated at Peregrine block `5_258_991` with hash
// `0xd83da28e40d6e193af832916d2741252955d438c9d17a9f441279085db3e8daf` for
// storage key
// `0xb375edf06348b4330d1e88564111cb3d5bf19e4ed2927982e234d989e812f3f30d1c9ddb0ba4c0507243fb24936031b342ed12d34ad897938af6739bf519bdc2f101d67bf7dac85501a12dfa1fa4ab9a0000`
// (`dipProvider::identityCommitments(4qVtUbkD2xqp9cqGDjViPpFPesJNdfoJvGeSUgturBxAPyBK, 0)`)
// Storage proof generated at local Peregrine instance (with new storage hasher)
// for storage key
// `0xb375edf06348b4330d1e88564111cb3d5bf19e4ed2927982e234d989e812f3f366a25a7fa9282d4c8e07cfeb5ec4b0f44cec8bb650a6e6ff111f30916b9ca56a4542f70764e95d7ceb6736d981b2d95d01a12dfa1fa4ab9a0000`
// (`dipProvider::identityCommitments(4pevjN6chwUqWPVaoUF6naRmZyrA4XWfdK8nLQLEjufgW55c, 0)`)
fn get_dip_commitment_proof() -> (H256, DipCommitmentStateProof) {
(hex!("3a27f8d59c8bcc51bf3735ecdc0ce1304127a5b9e707e956e22633179493d55c").into(), DipCommitmentStateProof(vec![
hex!("7f240d1c9ddb0ba4c0507243fb24936031b342ed12d34ad897938af6739bf519bdc2f101d67bf7dac85501a12dfa1fa4ab9a0000804aba9a5555257d6477fc5a74aaad1eaa24543e7eb1b4ac5ff1c00a50f6e63b3e").to_vec(),
hex!("800c808052d9b1ca86bf39ca4b7d574a5bcea35625200b5ff30c4517f7f361c67376e7fd8003ab0887cbb70c4e0d8d0f738e4b05732fd8cb5da24fa5f1112e20ba3603d58a80873d542c3a85337b597f63fc7a89837909196a9f0823625af4e2c18cc5274b56").to_vec(),
hex!("80ffff808a66c19052add13a202bcd73b546ae0cb70544f166c4a469672c666f0a5f9d8a80b84c2df313e2e749ff7e47eee888d9a023ba0a14a59852f4526b3e4b93b6dcbc807310fd50a0ae630c15e9eb07bda831d6d0cb6044d53a3dafb68e3fdb199fffdf80015ecd5e8af66e3d72ee5cc828c25989ca848e55396cccd9c196a4df1349fb9980a2ec48e449c43cc34954836cc14af398695f6569e301cef5a13eb88a16aa395580fd068d1339506db2893ba54a00a85aa712d68ff98ceeb5f4632f4e53618bb77880a3f173abac33e571e2a66f13127eeec3fb31bb1ae6f4b0fca8e658bbfbb5e52a803084ef6eaf38b821c59b3de92c4679117509b0b031e52ef5a80fdcff72e498ec804f36b8fb07a75463165f1714181009c86a2790685e78abd43220f5ecb194c887802559300c82eef4b21724bba2706cc2815e98cac3993c8d8dc9057b1aaf45ae8d8006571e929d492077d682dbc911934874ec00335029a90bd39e37d6d641e11873800397abe2ea62a374e5f0650c54fb99e8ef825066da798b0f4d729a7281f3575880b35cfb12f77988e1305ba651db7a8efbd43e4e8b057a56736cf6485f3033f481809ab1e406503e3ce63425a294f3f37aa4827b6a4ab38cf7e960a0d3335d79234e80be7c96632aa67491005e607a53bc1ab725fa465e29797bc29973d4cf5f64239b8037fe2a92c86d4c38ff38570b071e994ab86214e43e095dfb6ed142170fdac430").to_vec(),
hex!("be75edf06348b4330d1e88564111cb3d5bf19e4ed2927982e234d989e812f3f3010880ffe3135a9ee019dbfe4143608c9f4a4291ab827d7d9d055028d556d9cea2fce180eb5d42e7c6f84ac20e0d5ab42008c631b3e87f36d55d0d5053c9fb4f944ef97c").to_vec(),
(hex!("0757487b9dda09be65eae2e4ffeff8de52e66d5187d064f31e24fac44be9f4f7").into(), DipCommitmentStateProof(vec![
hex!("7f540bf19e4ed2927982e234d989e812f3f366a25a7fa9282d4c8e07cfeb5ec4b0f44cec8bb650a6e6ff111f30916b9ca56a4542f70764e95d7ceb6736d981b2d95d01a12dfa1fa4ab9a00008051b175db0cd3a4071aaa1cdde8f3cc562b9618961d8a80ed77981ec98b91da45").to_vec(),
hex!("800c8080da28793d083b197f8d92fc3e77f5064436f1d8eea0fbea56ddb936aba654450080667f196f66a258b7e851925a9fca0e787fa2080ade3ec203fe940a85a4ef68b080b2aafe11c416356c5a97e233670962facb2a18944c3bdc4b9e27f1fa67a5bafe").to_vec(),
hex!("80ffff80353e4d164b13c87910044f1b4e76277e404a0ab46a7cd6c33a65aaadc2375ba88007b1390da34b4dce1328430fd924a6e193517a8148dd70a912c0dc2f7f8d2d4c803d402a5fdb0bf83f4f6da28178dc3d3b61d639a4c5733d8eaa79b3a159d9a79f80303acb9eafad3fe6028cf2abca4c824bf48af2b7241920ddf31b37d7921ee932802fd5e075dd0ae75eb64c49c178294214311140bc7c62763c839bedfac51cfa3180048fcfdbc81e0bb059327959a95b003093bf9b04e3918eebe0ac05aae2af93bb8014e3e0704c9a07636322335a3c663ec9fd9df8b7bf71d6e8183fefecfbfe0e50808e788bf3aaaea24abc0ee6d00eb102be955c07bd2b134e24cde6bdfbd922fdcf80deb1dbe09dc8972faeb0de3f080bfbb9d688dcf63906c91db762cc20cbf1e761804ee6ab85272b59bf8715509ccdcdbc038eb7ab7c13552f0eedbdc64bb1ccbacf808d42b27ca13475581cb35914e531fc84820bac04a5c6260b18adc6403c9d78d3807282321f53526da2c8f33500a0c90c75f95972c3c28366033c3f2c38beaaadc2804b74323792921a9cd34cd56a233f5768e3732bb41c157789371b110c5248446f80f395b7003a2eb1e39c624b9a707a6cb58c3cb6997932fc80662ae19c785a91f580b5e5172489541dfc581e116554b63de15fddf38ffed2b109394749c20b8f6ce3805a64908ec1ee443f9cff1793aa18d683308ae1bbd100498b5420e34c9a3c59de").to_vec(),
hex!("9e75edf06348b4330d1e88564111cb3d3000505f0e7b9012096b41c4eb3aaf947f6ea429080000806ad99dcfd0f2738b39c05d53a22890f969ba700ab74676cde1b3658e6a1d3b28").to_vec(),
]))
}

Expand All @@ -301,30 +300,30 @@ mod dip_did_proof_with_verified_relay_state_root {
);
let proof_verification_result = proof
.verify_dip_commitment_proof_for_subject::<BlakeTwo256, TestProviderRuntime>(
&AccountId32::from_ss58check("4qVtUbkD2xqp9cqGDjViPpFPesJNdfoJvGeSUgturBxAPyBK").unwrap(),
&AccountId32::from_ss58check("4pevjN6chwUqWPVaoUF6naRmZyrA4XWfdK8nLQLEjufgW55c").unwrap(),
)
.unwrap();
assert_eq!(
proof_verification_result.dip_commitment,
hex!("4aba9a5555257d6477fc5a74aaad1eaa24543e7eb1b4ac5ff1c00a50f6e63b3e").into()
hex!("51b175db0cd3a4071aaa1cdde8f3cc562b9618961d8a80ed77981ec98b91da45").into()
);
}

#[test]
fn verify_dip_commitment_proof_for_subject_multi_storage() {
// Storage proof generated at Peregrine block `5_264_068` with hash
// `0x44635397de0fd0f4e6329064bd2c8500a6ca2283d904e7f2fbe271cd362224cb` for
// storage keys
// [`0xb375edf06348b4330d1e88564111cb3d5bf19e4ed2927982e234d989e812f3f30d1c9ddb0ba4c0507243fb24936031b342ed12d34ad897938af6739bf519bdc2f101d67bf7dac85501a12dfa1fa4ab9a0000`, '0xb375edf06348b4330d1e88564111cb3d5bf19e4ed2927982e234d989e812f3f346802a0d131133fa4cac8e6332f14ad28fe8b2ccb9e339f1c36798e918846726e6e983b59dd4fa3101a12dfa1fa4ab9a0000]
// ([`dipProvider::identityCommitments(4qVtUbkD2xqp9cqGDjViPpFPesJNdfoJvGeSUgturBxAPyBK, 0)`, `dipProvider::identityCommitments(4pebirGcQAJ4nyd5137VuK8TPVW9RXprWvZLQK1wcw2qJvnM, 0)`])
// Storage proof generated at local Peregrine instance (with new storage hasher)
// for storage keys
// [`0xb375edf06348b4330d1e88564111cb3d5bf19e4ed2927982e234d989e812f3f366a25a7fa9282d4c8e07cfeb5ec4b0f44cec8bb650a6e6ff111f30916b9ca56a4542f70764e95d7ceb6736d981b2d95d01a12dfa1fa4ab9a0000`, '0xb375edf06348b4330d1e88564111cb3d5bf19e4ed2927982e234d989e812f3f3324b39c02c5b89191d516a1cb2438497d68f8ab82a2af4df66983a1fd0992711686c0fbf8ff8437552365e26f488c17c01a12dfa1fa4ab9a0000]
// ([`dipProvider::identityCommitments(4pevjN6chwUqWPVaoUF6naRmZyrA4XWfdK8nLQLEjufgW55c, 0)`, `dipProvider::identityCommitments(4smPiDNt9eLaJCe6uq1hGG3kWEmB3ooMpbGbSp1VF9D2vwEg, 0)`])
let parachain_state_root: H256 =
hex!("886585d3c600c51e36e5e9b09c981abdee80fb0f3e5ce127a6de659b8684f168").into();
hex!("506f0aa6af2e04874ab94835b359ab97a9cca1d1773777b5004da93ffd08a088").into();
let dip_commitment_proof = DipCommitmentStateProof(vec![
hex!("7f2406802a0d131133fa4cac8e6332f14ad28fe8b2ccb9e339f1c36798e918846726e6e983b59dd4fa3101a12dfa1fa4ab9a000080dbf7e051929e3be2b6ded6fa9f4827a6bb080092487482c581e4e154d4a8f78f").to_vec(),
hex!("7f240d1c9ddb0ba4c0507243fb24936031b342ed12d34ad897938af6739bf519bdc2f101d67bf7dac85501a12dfa1fa4ab9a0000804aba9a5555257d6477fc5a74aaad1eaa24543e7eb1b4ac5ff1c00a50f6e63b3e").to_vec(),
hex!("800c808052d9b1ca86bf39ca4b7d574a5bcea35625200b5ff30c4517f7f361c67376e7fd80ccbd1321b25f59f4de9cd943c7322b8f2b943e30e510e7f32571250f651015bc80873d542c3a85337b597f63fc7a89837909196a9f0823625af4e2c18cc5274b56").to_vec(),
hex!("80ffff808a66c19052add13a202bcd73b546ae0cb70544f166c4a469672c666f0a5f9d8a80b84c2df313e2e749ff7e47eee888d9a023ba0a14a59852f4526b3e4b93b6dcbc80e2f12a87d30577bc3586e4684c34438a779df39f6bee51b098193f1484e7b20f80015ecd5e8af66e3d72ee5cc828c25989ca848e55396cccd9c196a4df1349fb99808587812cb707ea395adbd624fba27708a8b734dd26c75febf4d79f30f775d31f80cf4fdd2b7ee898fa3de2063d08ca5488a65e49b4f21969be56dd22b79729f4ce80f77d231bea6c289f8d969c0a2cc81ec8447efa0747845799e7bc635626801605806830b9c8dadb45b721c323e66aaf4417dd1f2a3b0315c17c7e9bc3a75312677d807368afb2a07ba2ca0ceec6c88e0e3040a39d4c86408f97d2fa0006c39531b4ca802559300c82eef4b21724bba2706cc2815e98cac3993c8d8dc9057b1aaf45ae8d808c1f6312826116f8e9aa52506bfc8b3b4583998f8858213044dac52f3ac1138c803e008fcbfb660c563e9eb278cf78fe3988027713cd9077898c351c41844fefc480002990139706fe0a03fcfc41614c9cec1ae13ddafba4de0630af0b87503d8312809ab1e406503e3ce63425a294f3f37aa4827b6a4ab38cf7e960a0d3335d79234e80be7c96632aa67491005e607a53bc1ab725fa465e29797bc29973d4cf5f64239b8003bce13d1847862ce6f26f6b420ffda9cd9b635c2ec8533f23c7b2d454d66b29").to_vec(),
hex!("be75edf06348b4330d1e88564111cb3d5bf19e4ed2927982e234d989e812f3f3110880ffe3135a9ee019dbfe4143608c9f4a4291ab827d7d9d055028d556d9cea2fce1804276317882ff464bb21f7fb6b9e20ccee7a1e414608ecb3c8c349dfa286dfd7480eb5d42e7c6f84ac20e0d5ab42008c631b3e87f36d55d0d5053c9fb4f944ef97c").to_vec(),
hex!("7f34024b39c02c5b89191d516a1cb2438497d68f8ab82a2af4df66983a1fd0992711686c0fbf8ff8437552365e26f488c17c01a12dfa1fa4ab9a0000806e5f8a286a025f2631fc7e903f16f4732de04623a411da2abda7c81eb7a42e31").to_vec(),
hex!("7f3406a25a7fa9282d4c8e07cfeb5ec4b0f44cec8bb650a6e6ff111f30916b9ca56a4542f70764e95d7ceb6736d981b2d95d01a12dfa1fa4ab9a00008051b175db0cd3a4071aaa1cdde8f3cc562b9618961d8a80ed77981ec98b91da45").to_vec(),
hex!("800c8080da28793d083b197f8d92fc3e77f5064436f1d8eea0fbea56ddb936aba6544500802ac01dbcb6bbdd9e784796b03fa804e22e6c7d552e6432d2e782c78f1fd62ed080b2aafe11c416356c5a97e233670962facb2a18944c3bdc4b9e27f1fa67a5bafe").to_vec(),
hex!("80ffff80353e4d164b13c87910044f1b4e76277e404a0ab46a7cd6c33a65aaadc2375ba88007b1390da34b4dce1328430fd924a6e193517a8148dd70a912c0dc2f7f8d2d4c8056524aa90f9d9955e0f11cb65a3301b3feec8236f6c506f60851cd9182f6dabe809ce9739227a80b74d58ca2731bb7c95fef30c44badeaed70d4cae8ece37b875180f42657aef3c7a9da89d7fa2ead23197e6c7a0d9a56224c30a23d5e72af213b568011c66e7235c652b25a2599a23850ab0b2c45aa6adc8d0340956aeb06f677780e8014e3e0704c9a07636322335a3c663ec9fd9df8b7bf71d6e8183fefecfbfe0e50801f8da04e41cb0e58c2899f258c3606a4f8a9029ce7dd2831fe2f18748714e1b08063a92863797f3ff47d446998ab380abf3e19f9ad052378a890c969e3665ccfc480ac8fc0b324e4a48b6995b1ace16c16896f31a7d342fdd8c2812aebc74b3b1b2080f567d19109fd00674a7d71a364d5036670bd8413170968a2cd7e204ee9762b1d809183d04fbdc18d7dd79fe20d07131563bef1b21aa5cb6861a2dab4fb6173cbe3802588aac7065dd9e759283fcbf53a0c3696e5669564f92ee17d0ea9fabfe9e82880f395b7003a2eb1e39c624b9a707a6cb58c3cb6997932fc80662ae19c785a91f580b5e5172489541dfc581e116554b63de15fddf38ffed2b109394749c20b8f6ce38019dd7bc351b0ddab367f9c10a27d0dad1669e16af8a8a58c577ce0b2fb26ce8d").to_vec(),
hex!("9e75edf06348b4330d1e88564111cb3d3000505f0e7b9012096b41c4eb3aaf947f6ea429080000803cfa8887e3f3605330a40b74e99d031b21aeba65d2ef7f35c24a5cefab5291f1").to_vec(),
hex!("9f0bf19e4ed2927982e234d989e812f3f3480080f3fd8dffe32bd8f539044baf30efd07801d87ea5280154588c3abd3e325f578d8048f06290dfec2596fa70eaca62ea496d3dc0cd2f51fd40c61b58d7e5b476eebd").to_vec(),
]);
// Only interested in the DIP commitment verification part, we skip everything
// else.
Expand All @@ -335,12 +334,12 @@ mod dip_did_proof_with_verified_relay_state_root {
);
let proof_verification_result = proof
.verify_dip_commitment_proof_for_subject::<BlakeTwo256, TestProviderRuntime>(
&AccountId32::from_ss58check("4qVtUbkD2xqp9cqGDjViPpFPesJNdfoJvGeSUgturBxAPyBK").unwrap(),
&AccountId32::from_ss58check("4pevjN6chwUqWPVaoUF6naRmZyrA4XWfdK8nLQLEjufgW55c").unwrap(),
)
.unwrap();
assert_eq!(
proof_verification_result.dip_commitment,
hex!("4aba9a5555257d6477fc5a74aaad1eaa24543e7eb1b4ac5ff1c00a50f6e63b3e").into()
hex!("51b175db0cd3a4071aaa1cdde8f3cc562b9618961d8a80ed77981ec98b91da45").into()
);
}

Expand Down Expand Up @@ -373,7 +372,7 @@ mod dip_did_proof_with_verified_relay_state_root {
);
assert_err!(
proof.verify_dip_commitment_proof_for_subject::<BlakeTwo256, TestProviderRuntime>(
&AccountId32::from_ss58check("4pebirGcQAJ4nyd5137VuK8TPVW9RXprWvZLQK1wcw2qJvnM").unwrap(),
&AccountId32::from_ss58check("4smPiDNt9eLaJCe6uq1hGG3kWEmB3ooMpbGbSp1VF9D2vwEg").unwrap(),
),
Error::DipCommitmentMerkleProof(MerkleProofError::RequiredLeafNotRevealed)
);
Expand Down
2 changes: 1 addition & 1 deletion crates/kilt-dip-primitives/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ mod calculate_dip_identity_commitment_storage_key_for_runtime {

assert_eq!(
calculate_dip_identity_commitment_storage_key_for_runtime::<PeregrineRuntime>(&DidIdentifierOf::<PeregrineRuntime>::from_ss58check("4s3jpR7pzrUdhVUqHHdWoBN6oNQHBC7WRo7zsXdjAzQPT7Cf").unwrap(), 0).0,
hex_literal::hex!("b375edf06348b4330d1e88564111cb3d5bf19e4ed2927982e234d989e812f3f34edc5f456255d7c2b6caebbe9e3adeaaf693a2d198f2881d0b504fc72ed4ac0a7ed24a025fc228ce01a12dfa1fa4ab9a0000")
hex_literal::hex!("b375edf06348b4330d1e88564111cb3d5bf19e4ed2927982e234d989e812f3f314c9211b34c8b43b2a18d67d5c96de9cb6caebbe9e3adeaaf693a2d198f2881d0b504fc72ed4ac0a7ed24a025fc228ce01a12dfa1fa4ab9a0000")
.to_vec()
);
}
Expand Down
Loading

0 comments on commit f4a94f0

Please sign in to comment.