From 10013cd7464182caef5759120fde209a1ff3ffff Mon Sep 17 00:00:00 2001 From: Frederik Gartenmeister Date: Tue, 21 Nov 2023 09:33:06 +0100 Subject: [PATCH 1/4] fix: blocking transfer debt by epoch and redemptions. --- runtime/common/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/common/src/lib.rs b/runtime/common/src/lib.rs index 097fff8002..a53eb904fa 100644 --- a/runtime/common/src/lib.rs +++ b/runtime/common/src/lib.rs @@ -293,7 +293,7 @@ pub mod changes { }, }, LoansChange::::Policy(_) => vec![week, blocked], - LoansChange::::TransferDebt(_, _, _, _) => vec![epoch, blocked], + LoansChange::::TransferDebt(_, _, _, _) => vec![], }; PoolChangeProposal::new(requirements) From 9c9d16cdf236a17df7761c9bf31f21d257168411 Mon Sep 17 00:00:00 2001 From: Frederik Gartenmeister Date: Tue, 21 Nov 2023 11:47:38 +0100 Subject: [PATCH 2/4] feat: make change_id deterministic --- pallets/pool-system/src/impls.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pallets/pool-system/src/impls.rs b/pallets/pool-system/src/impls.rs index 1b00e0697b..ce830ccde7 100644 --- a/pallets/pool-system/src/impls.rs +++ b/pallets/pool-system/src/impls.rs @@ -406,7 +406,9 @@ impl ChangeGuard for Pallet { change, }; - let change_id: Self::ChangeId = T::Hashing::hash(¬ed_change.encode()); + // NOTE: Essentially, this key-generation allows to override previously + // submitted changes, if they are identical. + let change_id: Self::ChangeId = T::Hashing::hash(&change.encode()); NotedChange::::insert(pool_id, change_id, noted_change.clone()); Self::deposit_event(Event::ProposedChange { From 0ff3728f78e3a8f8a799b75c696ce3fe1a4ede60 Mon Sep 17 00:00:00 2001 From: Frederik Gartenmeister Date: Tue, 21 Nov 2023 13:02:08 +0100 Subject: [PATCH 3/4] fix: build --- pallets/pool-system/src/impls.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pallets/pool-system/src/impls.rs b/pallets/pool-system/src/impls.rs index ce830ccde7..03bfafb0b7 100644 --- a/pallets/pool-system/src/impls.rs +++ b/pallets/pool-system/src/impls.rs @@ -401,14 +401,13 @@ impl ChangeGuard for Pallet { type PoolId = T::PoolId; fn note(pool_id: Self::PoolId, change: Self::Change) -> Result { + // NOTE: Essentially, this key-generation allows to override previously + // submitted changes, if they are identical. + let change_id: Self::ChangeId = T::Hashing::hash(&change.encode()); let noted_change = NotedPoolChange { submitted_time: T::Time::now(), change, }; - - // NOTE: Essentially, this key-generation allows to override previously - // submitted changes, if they are identical. - let change_id: Self::ChangeId = T::Hashing::hash(&change.encode()); NotedChange::::insert(pool_id, change_id, noted_change.clone()); Self::deposit_event(Event::ProposedChange { From 8d6aa2f45c6fc26467edb061a425740bd0133b63 Mon Sep 17 00:00:00 2001 From: Frederik Gartenmeister Date: Tue, 21 Nov 2023 17:46:28 +0100 Subject: [PATCH 4/4] fix: test loan changes --- pallets/pool-system/src/tests/mod.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pallets/pool-system/src/tests/mod.rs b/pallets/pool-system/src/tests/mod.rs index b7d0797ad6..66499205c2 100644 --- a/pallets/pool-system/src/tests/mod.rs +++ b/pallets/pool-system/src/tests/mod.rs @@ -2449,12 +2449,14 @@ mod changes { let change = PoolChangeProposal::new([Requirement::DelayTime(2)]); let change_id_3 = PoolSystem::note(DEFAULT_POOL_ID, change).unwrap(); - // Same change but different moment; + // Same change but different moment so overwrites util::advance_secs(1); let change = PoolChangeProposal::new([Requirement::DelayTime(2)]); let change_id_4 = PoolSystem::note(DEFAULT_POOL_ID, change).unwrap(); - let ids = [change_id_1, change_id_2, change_id_3, change_id_4]; + assert_eq!(change_id_4, change_id_3); + + let ids = [change_id_1, change_id_2, change_id_3]; assert_eq!(BTreeSet::from(ids.clone()).len(), ids.len()); }); }