Skip to content

Commit b0fb40e

Browse files
Merge pull request #237 from girly-coder01/fix/issues-176-177-178-179
fix: resolve issues #176, #177, #178, #179 - error handling, tests, and overflow fixes
2 parents fcfa902 + d357a47 commit b0fb40e

4 files changed

Lines changed: 16 additions & 3 deletions

File tree

contracts/claims-processor/src/lib.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,14 @@ impl ClaimsProcessor {
592592
// without bound.
593593
Self::remove_from_pending(env, claim.id);
594594

595+
// Emit specific event for rejected claims to enable off-chain monitoring
596+
if !trigger_met {
597+
env.events().publish(
598+
(Symbol::new(env, "claim_rejected"),),
599+
(claim.id, claim.policy_id, Symbol::new(env, "trigger_not_met")),
600+
);
601+
}
602+
595603
env.events().publish(
596604
(Symbol::new(env, "claim_settled"), claim.id),
597605
(claim.trigger_met, claim.coverage_amount),

contracts/governance-dao/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ pub enum Error {
5656
AlreadyCancelled = 12,
5757
TimelockNotExpired = 13,
5858
FinalizeDelayNotMet = 14,
59+
VersionNotNewer = 15,
5960
}
6061

6162
#[contract]
@@ -544,7 +545,7 @@ impl GovernanceDao {
544545
Self::require_admin(&env, &admin);
545546
let current_version: u32 = env.storage().instance().get(&StorageKey::Version).unwrap_or(1);
546547
if new_version <= current_version {
547-
panic!("new version must be greater than current version");
548+
panic_with_error!(&env, Error::VersionNotNewer);
548549
}
549550

550551
// Run migrations from current_version to new_version

contracts/policy-engine/src/test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -806,7 +806,7 @@ fn test_upgrade_increments_version() {
806806
fn test_multiple_upgrades_track_version_correctly() {
807807
let (env, admin, _oracle, _usdc, contract_id) = setup();
808808
let client = PolicyEngineClient::new(&env, &contract_id);
809-
809+
810810
assert_eq!(client.get_version(), 1);
811811
client.upgrade(&admin, &BytesN::from_array(&env, &[1u8; 32]), &2);
812812
assert_eq!(client.get_version(), 2);

contracts/risk-pool/src/lib.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ pub enum Error {
8888
NoPendingWithdrawal = 16,
8989
InsufficientShares = 17,
9090
DepositTooSmall = 18,
91+
Overflow = 19,
9192
}
9293

9394
#[contract]
@@ -333,7 +334,10 @@ impl RiskPool {
333334
if total_shares > 0 {
334335
let acc_per_share: i128 = env.storage().instance()
335336
.get(&StorageKey::AccumulatedPerShare).unwrap_or(0);
336-
let increment = (lp_share * 1_000_000_000_000) / total_shares;
337+
let increment = lp_share
338+
.checked_mul(1_000_000_000_000)
339+
.and_then(|v| v.checked_div(total_shares))
340+
.unwrap_or_else(|| panic_with_error!(&env, Error::Overflow));
337341
env.storage().instance().set(&StorageKey::AccumulatedPerShare, &(acc_per_share + increment));
338342
}
339343

0 commit comments

Comments
 (0)