Skip to content

feat: add keeper rewards, oracle heartbeats, vault deposit cap, propo… - #854

Merged
Jaydbrown merged 1 commit into
conduit-protocol:mainfrom
thegreatfeez:main
Oct 18, 2026
Merged

Jaydbrown merged 1 commit into
conduit-protocol:mainfrom
thegreatfeez:main

Conversation

@thegreatfeez

Copy link
Copy Markdown
Contributor

closes #851
closes #850
closes #849
closes #848

Added a keeper reward pool with per-key payouts, per-asset oracle heartbeat configuration, a single-deposit ceiling in the token vault, and status-indexed proposal pagination in the governor.

Verification

  • cargo test -p drip-common --lib — 44 passed.
  • cargo test -p drip-governor --lib — 16 passed.
  • cargo test -p drip-oracle --lib — 86 passed.
  • cargo test -p token-vault --lib — 80 passed.
  • cargo clippy -p drip-common -p drip-governor -p drip-oracle -p token-vault --all-targets -- -D warnings — clean.
  • cargo fmt -p drip-common -p drip-governor -p drip-oracle -p token-vault — applied.

#851 — Keeper reward pool

Added KeeperRewardPool, configure_keeper_reward_pool, fund_keeper_reward_pool, and bump_persistent_with_reward to drip_common::ttl. A successful persistent TTL bump pays the keeper reward_per_key from the escrowed pool balance.

#850 — Per-asset heartbeat timeout

Added AssetOracleConfig { heartbeat_timeout_seconds } and the persistent DataKey::AssetOracleConfig(Address) mapping, with admin-gated set_asset_oracle_config and asset_oracle_config. Address-pair aggregation now uses the base token's configured heartbeat, falling back to the global staleness setting and then the legacy pair window.

#849 — Maximum single deposit

Added MAX_VAULT_DEPOSIT (10^30 stroops) and Error::DepositExceedsMax. The ceiling is enforced in deposit, deposit_with_fee, batch_deposit, and deposit_token.

#848 — Proposal status index

Added DataKey::ProposalsByStatus(ProposalStatus) and maintenance helpers. propose indexes Pending, the first vote moves a proposal to Active, and execution/cancellation move it to Executed/Cancelled. Added the proposals_by_status read view.

Judgement calls

  • Fixed pre-existing compile blockers in the touched crates (missing String import, Option misuse, over-long symbol_short!, over-long enum variant, and invalid map_err on SDK 21's unit-returning token transfer).
  • Corrected the governor quorum calculation to truncate as its tests and comments specify; the previous ceiling rounding required one extra vote.
  • Defeated is added to ProposalStatus for the requested index set but no current transition produces it — the governor does not reject proposals on vote outcome.
  • Workspace-wide cargo fmt --all -- --check is blocked by a pre-existing unclosed delimiter in contracts/stream/src/lib.rs; formatting was run per touched package instead.

…sal status index

- Add KeeperRewardPool and per-key payer helpers to drip_common::ttl (conduit-protocol#851)
- Add per-asset heartbeat configuration to the oracle (conduit-protocol#850)
- Cap single vault deposits at MAX_VAULT_DEPOSIT (conduit-protocol#849)
- Index governor proposals by status (conduit-protocol#848)

closes conduit-protocol#851
closes conduit-protocol#850
closes conduit-protocol#849
closes conduit-protocol#848
@drips-wave

drips-wave Bot commented Oct 18, 2026

Copy link
Copy Markdown

@thegreatfeez Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants