diff --git a/contracts/common/src/lib.rs b/contracts/common/src/lib.rs index c6a1a7a..6eccd9f 100644 --- a/contracts/common/src/lib.rs +++ b/contracts/common/src/lib.rs @@ -219,3 +219,19 @@ where .persistent() .extend_ttl(key, extend_to, extend_to); } + +/// Shared threshold (ledgers) before instance storage TTL extension triggers. +pub const INSTANCE_TTL_THRESHOLD: u32 = 100_000; +/// Shared target (ledgers) to extend instance storage TTL to. +pub const INSTANCE_TTL_EXTEND_TO: u32 = 500_000; + +/// Extends the TTL of the contract's instance storage (#38). Instance +/// storage holds Admin, Treasury, FeeBps, etc. — losing it takes down +/// the entire contract. Uses conservative defaults suitable for a +/// multi-month bounty lifecycle. +pub fn extend_instance_ttl(env: &Env) { + env.storage() + .instance() + .extend_ttl(INSTANCE_TTL_THRESHOLD, INSTANCE_TTL_EXTEND_TO); +} + diff --git a/contracts/escrow/src/lib.rs b/contracts/escrow/src/lib.rs index 0021ecd..2ef3396 100644 --- a/contracts/escrow/src/lib.rs +++ b/contracts/escrow/src/lib.rs @@ -774,7 +774,7 @@ pub(crate) fn extend_ttl(env: &Env, key: &DataKey) { /// takes down the entire contract for every issue. Uses the same /// threshold/extend_to as persistent records for consistency. pub(crate) fn extend_instance_ttl(env: &Env) { - env.storage().instance().extend_ttl(100_000, 500_000); + mergefi_common::extend_instance_ttl(env); } /// Extends the TTL of a persistent entry to (approximately) survive until diff --git a/contracts/maintenance-pool/src/lib.rs b/contracts/maintenance-pool/src/lib.rs index e51a66b..21d5797 100644 --- a/contracts/maintenance-pool/src/lib.rs +++ b/contracts/maintenance-pool/src/lib.rs @@ -572,5 +572,5 @@ fn extend_ttl(env: &Env, key: &DataKey) { /// storage holds Admin, Treasury, and FeeBps — losing it takes down the /// entire contract for every pool. fn extend_instance_ttl(env: &Env) { - env.storage().instance().extend_ttl(100_000, 500_000); + mergefi_common::extend_instance_ttl(env); } diff --git a/contracts/milestones/src/lib.rs b/contracts/milestones/src/lib.rs index 90c53d7..0c80221 100644 --- a/contracts/milestones/src/lib.rs +++ b/contracts/milestones/src/lib.rs @@ -935,5 +935,5 @@ fn extend_ttl(env: &Env, key: &DataKey) { /// storage holds Admin, Treasury, FeeBps, and MaxSponsors — losing it /// takes down the entire contract for every milestone. fn extend_instance_ttl(env: &Env) { - env.storage().instance().extend_ttl(100_000, 500_000); + mergefi_common::extend_instance_ttl(env); }