mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-30 21:17:56 +00:00
Make automatic storage deposits resistant against changing deposit prices (#12083)
* Require `FixedPointOperand` for Balances * Delay deposit calculation * Make refunds pro rata of consumed storage * Add storage migration * Fix clippy * Add liquidity checks * Fixe delayed deposit limit enforcement * Defer charges * Import Vec * Add try-runtime hooks for migration * Fix warning * Adapt to new OnRuntimeUpgrade trait * Apply suggestions from code review Co-authored-by: Sasha Gryaznov <hi@agryaznov.com> * fmt * Apply suggestions from code review Co-authored-by: Sasha Gryaznov <hi@agryaznov.com> * More suggestions from code review Co-authored-by: Sasha Gryaznov <hi@agryaznov.com>
This commit is contained in:
committed by
GitHub
parent
cb82064cb8
commit
857c3bf37b
@@ -87,7 +87,7 @@ where
|
||||
module: WasmModule<T>,
|
||||
data: Vec<u8>,
|
||||
) -> Result<Contract<T>, &'static str> {
|
||||
let value = T::Currency::minimum_balance();
|
||||
let value = Pallet::<T>::min_balance();
|
||||
T::Currency::make_free_balance_be(&caller, caller_funding::<T>());
|
||||
let salt = vec![0xff];
|
||||
let addr = Contracts::<T>::contract_address(&caller, &module.hash, &salt);
|
||||
@@ -257,7 +257,7 @@ benchmarks! {
|
||||
let instance = Contract::<T>::with_caller(
|
||||
whitelisted_caller(), WasmModule::sized(c, Location::Deploy), vec![],
|
||||
)?;
|
||||
let value = T::Currency::minimum_balance();
|
||||
let value = Pallet::<T>::min_balance();
|
||||
let origin = RawOrigin::Signed(instance.caller.clone());
|
||||
let callee = instance.addr;
|
||||
}: call(origin, callee, value, Weight::MAX, None, vec![])
|
||||
@@ -280,7 +280,7 @@ benchmarks! {
|
||||
let c in 0 .. Perbill::from_percent(49).mul_ceil(T::MaxCodeLen::get());
|
||||
let s in 0 .. code::max_pages::<T>() * 64 * 1024;
|
||||
let salt = vec![42u8; s as usize];
|
||||
let value = T::Currency::minimum_balance();
|
||||
let value = Pallet::<T>::min_balance();
|
||||
let caller = whitelisted_caller();
|
||||
T::Currency::make_free_balance_be(&caller, caller_funding::<T>());
|
||||
let WasmModule { code, hash, .. } = WasmModule::<T>::sized(c, Location::Call);
|
||||
@@ -307,7 +307,7 @@ benchmarks! {
|
||||
instantiate {
|
||||
let s in 0 .. code::max_pages::<T>() * 64 * 1024;
|
||||
let salt = vec![42u8; s as usize];
|
||||
let value = T::Currency::minimum_balance();
|
||||
let value = Pallet::<T>::min_balance();
|
||||
let caller = whitelisted_caller();
|
||||
T::Currency::make_free_balance_be(&caller, caller_funding::<T>());
|
||||
let WasmModule { code, hash, .. } = WasmModule::<T>::dummy();
|
||||
@@ -338,7 +338,7 @@ benchmarks! {
|
||||
let instance = Contract::<T>::with_caller(
|
||||
whitelisted_caller(), WasmModule::dummy(), vec![],
|
||||
)?;
|
||||
let value = T::Currency::minimum_balance();
|
||||
let value = Pallet::<T>::min_balance();
|
||||
let origin = RawOrigin::Signed(instance.caller.clone());
|
||||
let callee = instance.addr.clone();
|
||||
let before = T::Currency::free_balance(&instance.account_id);
|
||||
@@ -767,13 +767,13 @@ benchmarks! {
|
||||
let instance = Contract::<T>::new(code, vec![])?;
|
||||
let origin = RawOrigin::Signed(instance.caller.clone());
|
||||
assert_eq!(T::Currency::total_balance(&beneficiary), 0u32.into());
|
||||
assert_eq!(T::Currency::free_balance(&instance.account_id), T::Currency::minimum_balance());
|
||||
assert_eq!(T::Currency::free_balance(&instance.account_id), Pallet::<T>::min_balance());
|
||||
assert_ne!(T::Currency::reserved_balance(&instance.account_id), 0u32.into());
|
||||
}: call(origin, instance.addr.clone(), 0u32.into(), Weight::MAX, None, vec![])
|
||||
verify {
|
||||
if r > 0 {
|
||||
assert_eq!(T::Currency::total_balance(&instance.account_id), 0u32.into());
|
||||
assert_eq!(T::Currency::total_balance(&beneficiary), T::Currency::minimum_balance());
|
||||
assert_eq!(T::Currency::total_balance(&beneficiary), Pallet::<T>::min_balance());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1469,7 +1469,7 @@ benchmarks! {
|
||||
.collect::<Vec<_>>();
|
||||
let account_len = accounts.get(0).map(|i| i.encode().len()).unwrap_or(0);
|
||||
let account_bytes = accounts.iter().flat_map(|x| x.encode()).collect();
|
||||
let value = T::Currency::minimum_balance();
|
||||
let value = Pallet::<T>::min_balance();
|
||||
assert!(value > 0u32.into());
|
||||
let value_bytes = value.encode();
|
||||
let value_len = value_bytes.len();
|
||||
@@ -1705,7 +1705,7 @@ benchmarks! {
|
||||
let hash_len = hashes.get(0).map(|x| x.encode().len()).unwrap_or(0);
|
||||
let hashes_bytes = hashes.iter().flat_map(|x| x.encode()).collect::<Vec<_>>();
|
||||
let hashes_len = hashes_bytes.len();
|
||||
let value = T::Currency::minimum_balance();
|
||||
let value = Pallet::<T>::min_balance();
|
||||
assert!(value > 0u32.into());
|
||||
let value_bytes = value.encode();
|
||||
let value_len = value_bytes.len();
|
||||
|
||||
Reference in New Issue
Block a user