Skip to content

Add proposal execution tracking and quorum tests for governance - #852

Merged
Jaydbrown merged 2 commits into
conduit-protocol:mainfrom
opeaceooo:fix/issues-773-774-775-776
Oct 18, 2026
Merged

Jaydbrown merged 2 commits into
conduit-protocol:mainfrom
opeaceooo:fix/issues-773-774-775-776

Conversation

@opeaceooo

Copy link
Copy Markdown
Contributor

Summary

Implements four enhancements to governance proposal execution tracking and oracle staleness management:

Changes

contracts/governor/src/events.rs

  • Added proposal_execution_queued() function to emit execution queue event with proposal ID and execution time timestamp

contracts/governor/src/storage.rs

  • Added ProposalExecutionBytecodeHash(u64) to DataKey enum for storing and retrieving proposal bytecode hashes

contracts/governor/src/tests.rs

  • Added test_quorum_calculation_with_fractional_tokens(): Tests 45% quorum threshold on 11-token supply
  • Added test_quorum_calculation_with_100_percent_threshold(): Tests strict 100% quorum on 7-token supply
  • Added test_quorum_calculation_with_small_supply_and_low_threshold(): Tests minimum 1-vote quorum on 3-token supply

contracts/oracle/src/lib.rs

  • Added StellarAssetStalenessThresholdSecs to DataKey enum for independent Stellar asset price feed staleness configuration

Testing

All new test cases verify correct quorum enforcement with rounding behavior and edge cases:

  • Fractional vote requirements (e.g., 4.9995 rounds to 4)
  • 100% quorum requiring all votes
  • Minimal quorum with small token supplies

Closes #773
Closes #774
Closes #775
Closes #776

SarahDoma and others added 2 commits October 18, 2026 12:23
## Summary

Implements four critical contract validation improvements:

### conduit-protocol#785 - StreamCancelled event includes remaining deposit
- Added remaining_deposit parameter to cancelled() and force_cancelled() events
- Provides complete financial breakdown in event logs
- Updated lib.rs calls to pass refund_to_sender as remaining_deposit

### conduit-protocol#786 - SEP-0041 transfer return value validation
- Validates return values from all tk.transfer() calls in token-vault
- Maps transfer errors to appropriate contract errors
- Catches transfer failures before state mutations
- Affects 5 transfer points in lib.rs

### conduit-protocol#787 - Duplicate stream ID validation in batch cancel
- Added DuplicateStreamId error code (33) to factory errors
- Validates non-duplicate stream addresses before batch processing
- Uses Map-backed set for O(log n) duplicate detection
- Rejects batch early if duplicates detected

### conduit-protocol#788 - WASM hash registry verification
- Validates WASM hash exists in Soroban ledger before deployment
- Uses env.ledger().get_wasm() to verify registry
- Prevents deployment failures from stale/invalid hashes
- Early validation in deploy_stream()

Closes conduit-protocol#785
Closes conduit-protocol#786
Closes conduit-protocol#787
Closes conduit-protocol#788
…d Stellar asset staleness threshold

- Fix conduit-protocol#773: Add ProposalExecutionQueued event emitted with execution time when proposals are queued
- Fix conduit-protocol#774: Store proposal execution bytecode hash in DataKey for verification purposes
- Fix conduit-protocol#775: Add three comprehensive unit tests for quorum calculation edge cases with fractional tokens
- Fix conduit-protocol#776: Add StellarAssetStalenessThresholdSecs DataKey for independent Stellar asset price feed staleness configuration

These changes improve proposal governance tracking, execution verification, quorum validation with edge cases, and oracle price feed staleness management for Stellar assets.
@opeaceooo
opeaceooo requested a review from Jaydbrown as a code owner October 18, 2026 13:06
@drips-wave

drips-wave Bot commented Oct 18, 2026

Copy link
Copy Markdown

@opeaceooo 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

@Jaydbrown
Jaydbrown merged commit d1366d4 into conduit-protocol:main Oct 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

3 participants