mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 15:47:58 +00:00
Remove default hasher (#4739)
* remove default hasher from decl_storage! * fix decl_storage declarations
This commit is contained in:
@@ -35,8 +35,8 @@ use proc_macro::TokenStream;
|
||||
/// decl_storage! {
|
||||
/// trait Store for Module<T: Trait> as Example {
|
||||
/// Foo get(fn foo) config(): u32=12;
|
||||
/// Bar: map u32 => u32;
|
||||
/// pub Zed build(|config| vec![(0, 0)]): linked_map u32 => u32;
|
||||
/// Bar: map hasher(blake2_256) u32 => u32;
|
||||
/// pub Zed build(|config| vec![(0, 0)]): linked_map hasher(blake2_256) u32 => u32;
|
||||
/// }
|
||||
/// }
|
||||
/// ```
|
||||
@@ -74,7 +74,7 @@ use proc_macro::TokenStream;
|
||||
/// `$hash` representing a choice of hashing algorithms available in the
|
||||
/// [`Hashable`](../frame_support/trait.Hashable.html) trait.
|
||||
///
|
||||
/// `hasher($hash)` is optional and its default is `blake2_256`. One should use another hasher
|
||||
/// `blake2_256` and `blake2_128_concat` are strong hasher. One should use another hasher
|
||||
/// with care, see generator documentation.
|
||||
///
|
||||
/// The generator is implemented with:
|
||||
@@ -95,7 +95,7 @@ use proc_macro::TokenStream;
|
||||
/// `$hash` representing a choice of hashing algorithms available in the
|
||||
/// [`Hashable`](../frame_support/trait.Hashable.html) trait.
|
||||
///
|
||||
/// `hasher($hash)` is optional and its default is `blake2_256`. One should use another hasher
|
||||
/// `blake2_256` and `blake2_128_concat` are strong hasher. One should use another hasher
|
||||
/// with care, see generator documentation.
|
||||
///
|
||||
/// All key formatting logic can be accessed in a type-agnostic format via the
|
||||
@@ -126,13 +126,12 @@ use proc_macro::TokenStream;
|
||||
/// [`Hashable`](../frame_support/trait.Hashable.html) trait. They must be choosen with care, see
|
||||
/// generator documentation.
|
||||
///
|
||||
/// `hasher($hash1)` and `hasher($hash2) are optional and default to `blake2_256`.
|
||||
/// One should use another hasher with care, see generator documentation.
|
||||
///
|
||||
/// If the first key is untrusted, a cryptographic `hasher` such as `blake2_256` must be used.
|
||||
/// If the first key is untrusted, a cryptographic `hasher` such as `blake2_256` or
|
||||
/// `blake2_128_concat` must be used.
|
||||
/// Otherwise, other values of all storage items can be compromised.
|
||||
///
|
||||
/// If the second key is untrusted, a cryptographic `hasher` such as `blake2_256` must be used.
|
||||
/// If the second key is untrusted, a cryptographic `hasher` such as `blake2_256` or
|
||||
/// `blake2_128_concat` must be used.
|
||||
/// Otherwise, other items in storage with the same first key can be compromised.
|
||||
///
|
||||
/// The generator is implemented with:
|
||||
|
||||
@@ -461,29 +461,31 @@ fn parse_storage_line_defs(
|
||||
})?;
|
||||
}
|
||||
|
||||
let span = line.storage_type.span();
|
||||
let no_hasher_error = || syn::Error::new(
|
||||
span,
|
||||
"Default hasher has been removed, use explicit hasher(blake2_256) instead."
|
||||
);
|
||||
|
||||
let storage_type = match line.storage_type {
|
||||
DeclStorageType::Map(map) => super::StorageLineTypeDef::Map(
|
||||
super::MapDef {
|
||||
hasher: map.hasher.inner.map(Into::into)
|
||||
.unwrap_or(super::HasherKind::Blake2_256),
|
||||
hasher: map.hasher.inner.ok_or_else(no_hasher_error)?.into(),
|
||||
key: map.key,
|
||||
value: map.value,
|
||||
}
|
||||
),
|
||||
DeclStorageType::LinkedMap(map) => super::StorageLineTypeDef::LinkedMap(
|
||||
super::MapDef {
|
||||
hasher: map.hasher.inner.map(Into::into)
|
||||
.unwrap_or(super::HasherKind::Blake2_256),
|
||||
hasher: map.hasher.inner.ok_or_else(no_hasher_error)?.into(),
|
||||
key: map.key,
|
||||
value: map.value,
|
||||
}
|
||||
),
|
||||
DeclStorageType::DoubleMap(map) => super::StorageLineTypeDef::DoubleMap(
|
||||
super::DoubleMapDef {
|
||||
hasher1: map.hasher1.inner.map(Into::into)
|
||||
.unwrap_or(super::HasherKind::Blake2_256),
|
||||
hasher2: map.hasher2.inner.map(Into::into)
|
||||
.unwrap_or(super::HasherKind::Blake2_256),
|
||||
hasher1: map.hasher1.inner.ok_or_else(no_hasher_error)?.into(),
|
||||
hasher2: map.hasher2.inner.ok_or_else(no_hasher_error)?.into(),
|
||||
key1: map.key1,
|
||||
key2: map.key2,
|
||||
value: map.value,
|
||||
|
||||
@@ -253,20 +253,23 @@ mod tests {
|
||||
trait Store for Module<T: Trait> as Example {
|
||||
pub Data get(fn data) build(|_| vec![(15u32, 42u64)]):
|
||||
linked_map hasher(twox_64_concat) u32 => u64;
|
||||
pub OptionLinkedMap: linked_map u32 => Option<u32>;
|
||||
pub OptionLinkedMap: linked_map hasher(blake2_256) u32 => Option<u32>;
|
||||
pub GenericData get(fn generic_data):
|
||||
linked_map hasher(twox_128) T::BlockNumber => T::BlockNumber;
|
||||
pub GenericData2 get(fn generic_data2):
|
||||
linked_map T::BlockNumber => Option<T::BlockNumber>;
|
||||
linked_map hasher(blake2_256) T::BlockNumber => Option<T::BlockNumber>;
|
||||
pub GetterNoFnKeyword get(no_fn): Option<u32>;
|
||||
|
||||
pub DataDM config(test_config) build(|_| vec![(15u32, 16u32, 42u64)]):
|
||||
double_map hasher(twox_64_concat) u32, hasher(blake2_256) u32 => u64;
|
||||
pub GenericDataDM:
|
||||
double_map T::BlockNumber, hasher(twox_128) T::BlockNumber => T::BlockNumber;
|
||||
double_map hasher(blake2_256) T::BlockNumber, hasher(twox_128) T::BlockNumber
|
||||
=> T::BlockNumber;
|
||||
pub GenericData2DM:
|
||||
double_map T::BlockNumber, hasher(twox_256) T::BlockNumber => Option<T::BlockNumber>;
|
||||
pub AppendableDM: double_map u32, T::BlockNumber => Vec<u32>;
|
||||
double_map hasher(blake2_256) T::BlockNumber, hasher(twox_256) T::BlockNumber
|
||||
=> Option<T::BlockNumber>;
|
||||
pub AppendableDM:
|
||||
double_map hasher(blake2_256) u32, hasher(blake2_256) T::BlockNumber => Vec<u32>;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ mod tests {
|
||||
crate::decl_storage! {
|
||||
trait Store for Module<T: Trait> as Runtime {
|
||||
Value get(fn value) config(): (u64, u64);
|
||||
NumberMap: linked_map NumberNumber => u64;
|
||||
NumberMap: linked_map hasher(blake2_256) NumberNumber => u64;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -59,23 +59,27 @@ mod tests {
|
||||
GetOptU32WithBuilderNone get(fn opt_u32_with_builder_none) build(|_| None): Option<u32>;
|
||||
|
||||
// map non-getters: pub / $default
|
||||
MAPU32 : map u32 => Option<String>;
|
||||
pub PUBMAPU32 : map u32 => Option<String>;
|
||||
MAPU32MYDEF : map u32 => Option<String>;
|
||||
pub PUBMAPU32MYDEF : map u32 => Option<String>;
|
||||
MAPU32 : map hasher(blake2_256) u32 => Option<String>;
|
||||
pub PUBMAPU32 : map hasher(blake2_256) u32 => Option<String>;
|
||||
MAPU32MYDEF : map hasher(blake2_256) u32 => Option<String>;
|
||||
pub PUBMAPU32MYDEF : map hasher(blake2_256) u32 => Option<String>;
|
||||
|
||||
// map getters: pub / $default
|
||||
GETMAPU32 get(fn map_u32_getter): map u32 => String;
|
||||
pub PUBGETMAPU32 get(fn pub_map_u32_getter): map u32 => String;
|
||||
GETMAPU32 get(fn map_u32_getter): map hasher(blake2_256) u32 => String;
|
||||
pub PUBGETMAPU32 get(fn pub_map_u32_getter): map hasher(blake2_256) u32 => String;
|
||||
|
||||
GETMAPU32MYDEF get(fn map_u32_getter_mydef): map u32 => String = "map".into();
|
||||
pub PUBGETMAPU32MYDEF get(fn pub_map_u32_getter_mydef): map u32 => String = "pubmap".into();
|
||||
GETMAPU32MYDEF get(fn map_u32_getter_mydef):
|
||||
map hasher(blake2_256) u32 => String = "map".into();
|
||||
pub PUBGETMAPU32MYDEF get(fn pub_map_u32_getter_mydef):
|
||||
map hasher(blake2_256) u32 => String = "pubmap".into();
|
||||
|
||||
// linked map
|
||||
LINKEDMAPU32 : linked_map u32 => Option<String>;
|
||||
pub PUBLINKEDMAPU32MYDEF : linked_map u32 => Option<String>;
|
||||
GETLINKEDMAPU32 get(fn linked_map_u32_getter): linked_map u32 => String;
|
||||
pub PUBGETLINKEDMAPU32MYDEF get(fn pub_linked_map_u32_getter_mydef): linked_map u32 => String = "pubmap".into();
|
||||
LINKEDMAPU32 : linked_map hasher(blake2_256) u32 => Option<String>;
|
||||
pub PUBLINKEDMAPU32MYDEF : linked_map hasher(blake2_256) u32 => Option<String>;
|
||||
GETLINKEDMAPU32 get(fn linked_map_u32_getter):
|
||||
linked_map hasher(blake2_256) u32 => String;
|
||||
pub PUBGETLINKEDMAPU32MYDEF get(fn pub_linked_map_u32_getter_mydef):
|
||||
linked_map hasher(blake2_256) u32 => String = "pubmap".into();
|
||||
|
||||
COMPLEXTYPE1: ::std::vec::Vec<<T as Trait>::Origin>;
|
||||
COMPLEXTYPE2: (Vec<Vec<(u16,Box<( )>)>>, u32);
|
||||
@@ -558,17 +562,17 @@ mod test_append_and_len {
|
||||
JustVecWithDefault: Vec<u32> = vec![6, 9];
|
||||
OptionVec: Option<Vec<u32>>;
|
||||
|
||||
MapVec: map u32 => Vec<u32>;
|
||||
MapVecWithDefault: map u32 => Vec<u32> = vec![6, 9];
|
||||
OptionMapVec: map u32 => Option<Vec<u32>>;
|
||||
MapVec: map hasher(blake2_256) u32 => Vec<u32>;
|
||||
MapVecWithDefault: map hasher(blake2_256) u32 => Vec<u32> = vec![6, 9];
|
||||
OptionMapVec: map hasher(blake2_256) u32 => Option<Vec<u32>>;
|
||||
|
||||
DoubleMapVec: double_map u32, u32 => Vec<u32>;
|
||||
DoubleMapVecWithDefault: double_map u32, u32 => Vec<u32> = vec![6, 9];
|
||||
OptionDoubleMapVec: double_map u32, u32 => Option<Vec<u32>>;
|
||||
DoubleMapVec: double_map hasher(blake2_256) u32, hasher(blake2_256) u32 => Vec<u32>;
|
||||
DoubleMapVecWithDefault: double_map hasher(blake2_256) u32, hasher(blake2_256) u32 => Vec<u32> = vec![6, 9];
|
||||
OptionDoubleMapVec: double_map hasher(blake2_256) u32, hasher(blake2_256) u32 => Option<Vec<u32>>;
|
||||
|
||||
LinkedMapVec: linked_map u32 => Vec<u32>;
|
||||
LinkedMapVecWithDefault: linked_map u32 => Vec<u32> = vec![6, 9];
|
||||
OptionLinkedMapVec: linked_map u32 => Option<Vec<u32>>;
|
||||
LinkedMapVec: linked_map hasher(blake2_256) u32 => Vec<u32>;
|
||||
LinkedMapVecWithDefault: linked_map hasher(blake2_256) u32 => Vec<u32> = vec![6, 9];
|
||||
OptionLinkedMapVec: linked_map hasher(blake2_256) u32 => Option<Vec<u32>>;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -35,18 +35,18 @@ mod no_instance {
|
||||
trait Store for Module<T: Trait> as FinalKeysNone {
|
||||
pub Value config(value): u32;
|
||||
|
||||
pub Map: map u32 => u32;
|
||||
pub Map: map hasher(blake2_256) u32 => u32;
|
||||
pub Map2: map hasher(twox_128) u32 => u32;
|
||||
|
||||
pub LinkedMap: linked_map u32 => u32;
|
||||
pub LinkedMap: linked_map hasher(blake2_256) u32 => u32;
|
||||
pub LinkedMap2: linked_map hasher(twox_128) u32 => u32;
|
||||
|
||||
pub DoubleMap: double_map u32, u32 => u32;
|
||||
pub DoubleMap: double_map hasher(blake2_256) u32, hasher(blake2_256) u32 => u32;
|
||||
pub DoubleMap2: double_map hasher(twox_128) u32, hasher(blake2_128) u32 => u32;
|
||||
|
||||
pub TestGenericValue get(fn test_generic_value) config(): Option<T::BlockNumber>;
|
||||
pub TestGenericDoubleMap get(fn foo2) config(test_generic_double_map):
|
||||
double_map u32, T::BlockNumber => Option<u32>;
|
||||
double_map hasher(blake2_256) u32, hasher(blake2_256) T::BlockNumber => Option<u32>;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -65,18 +65,18 @@ mod instance {
|
||||
{
|
||||
pub Value config(value): u32;
|
||||
|
||||
pub Map: map u32 => u32;
|
||||
pub Map: map hasher(blake2_256) u32 => u32;
|
||||
pub Map2: map hasher(twox_128) u32 => u32;
|
||||
|
||||
pub LinkedMap: linked_map u32 => u32;
|
||||
pub LinkedMap: linked_map hasher(blake2_256) u32 => u32;
|
||||
pub LinkedMap2: linked_map hasher(twox_128) u32 => u32;
|
||||
|
||||
pub DoubleMap: double_map u32, u32 => u32;
|
||||
pub DoubleMap: double_map hasher(blake2_256) u32, hasher(blake2_256) u32 => u32;
|
||||
pub DoubleMap2: double_map hasher(twox_128) u32, hasher(blake2_128) u32 => u32;
|
||||
|
||||
pub TestGenericValue get(fn test_generic_value) config(): Option<T::BlockNumber>;
|
||||
pub TestGenericDoubleMap get(fn foo2) config(test_generic_double_map):
|
||||
double_map u32, T::BlockNumber => Option<u32>;
|
||||
double_map hasher(blake2_256) u32, hasher(blake2_256) T::BlockNumber => Option<u32>;
|
||||
}
|
||||
add_extra_genesis {
|
||||
// See `decl_storage` limitation.
|
||||
|
||||
@@ -25,7 +25,7 @@ frame_support::decl_module! {
|
||||
|
||||
frame_support::decl_storage! {
|
||||
trait Store for Module<T: Trait> as Example {
|
||||
pub AppendableDM config(t): double_map u32, T::BlockNumber => Vec<u32>;
|
||||
pub AppendableDM config(t): double_map hasher(blake2_256) u32, hasher(blake2_256) T::BlockNumber => Vec<u32>;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -67,8 +67,8 @@ mod module1 {
|
||||
T::BlockNumber: From<u32> + std::fmt::Display
|
||||
{
|
||||
pub Value config(value): T::GenericType;
|
||||
pub Map: map u32 => u64;
|
||||
pub LinkedMap: linked_map u32 => u64;
|
||||
pub Map: map hasher(blake2_256) u32 => u64;
|
||||
pub LinkedMap: linked_map hasher(blake2_256) u32 => u64;
|
||||
}
|
||||
|
||||
add_extra_genesis {
|
||||
@@ -136,9 +136,9 @@ mod module2 {
|
||||
frame_support::decl_storage! {
|
||||
trait Store for Module<T: Trait<I>, I: Instance=DefaultInstance> as Module2 {
|
||||
pub Value config(value): T::Amount;
|
||||
pub Map config(map): map u64 => u64;
|
||||
pub LinkedMap config(linked_map): linked_map u64 => Vec<u8>;
|
||||
pub DoubleMap config(double_map): double_map u64, u64 => u64;
|
||||
pub Map config(map): map hasher(blake2_256) u64 => u64;
|
||||
pub LinkedMap config(linked_map): linked_map hasher(blake2_256) u64 => Vec<u8>;
|
||||
pub DoubleMap config(double_map): double_map hasher(blake2_256) u64, hasher(blake2_256) u64 => u64;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -109,7 +109,7 @@ mod module {
|
||||
} else {
|
||||
vec![]
|
||||
}
|
||||
}): map Role => Option<RoleParameters<T>>;
|
||||
}): map hasher(blake2_256) Role => Option<RoleParameters<T>>;
|
||||
|
||||
/// the roles members can enter into
|
||||
pub AvailableRoles get(fn available_roles) build(|config: &GenesisConfig| {
|
||||
@@ -124,10 +124,12 @@ mod module {
|
||||
pub ActorAccountIds get(fn actor_account_ids) : Vec<T::AccountId>;
|
||||
|
||||
/// actor accounts associated with a role
|
||||
pub AccountIdsByRole get(fn account_ids_by_role) : map Role => Vec<T::AccountId>;
|
||||
pub AccountIdsByRole get(fn account_ids_by_role):
|
||||
map hasher(blake2_256) Role => Vec<T::AccountId>;
|
||||
|
||||
/// tokens locked until given block number
|
||||
pub Bondage get(fn bondage) : map T::AccountId => T::BlockNumber;
|
||||
pub Bondage get(fn bondage):
|
||||
map hasher(blake2_256) T::AccountId => T::BlockNumber;
|
||||
|
||||
/// First step before enter a role is registering intent with a new account/key.
|
||||
/// This is done by sending a role_entry_request() from the new account.
|
||||
|
||||
Reference in New Issue
Block a user