Plutus V3 spend that consumes an Agreed escrow whose lock window has elapsed and pays the entire in_value to the recipient's enterprise address. Validator gate: state==Agreed AND lower > agreed_at_ms + lock_period_ms (strict gt). No signer required by validator. Driver pays fee via funding utxo + collateral; doesn't need to be a party (test asserts this — anyone can push Settle once the lock elapses). Made enterprise_address_for pub(super) in escrow_veto so settle and refund_timeout can share it. Mirrors the validator's pkh_to_base_address byte-for-byte. 5 tests: not-Agreed reject, lock-not-elapsed reject (off-by-one strict gt), empty-escrow reject, happy-path pays full in_value, outsider driver works.
36 lines
1.4 KiB
Rust
36 lines
1.4 KiB
Rust
//! Plutus tx builders for DAO operations.
|
|
//!
|
|
//! Each operation lives in its own submodule so signing paths are
|
|
//! auditable in isolation. Naming convention matches the MCP tool
|
|
//! surface: `stake_create`, `proposal_vote`, etc.
|
|
//!
|
|
//! Phase scope (mirrors [`crate`] phase plan):
|
|
//!
|
|
//! | Phase | Module | What it ships |
|
|
//! |-------|-----------------------|---------------|
|
|
//! | 4a | `proposal_create` | Spend governor (CreateProposal), mint ProposalST |
|
|
//! | 4b | `proposal_cosign` | Add additional cosigner to a Draft proposal |
|
|
//! | 3 | `proposal_vote` | Spend stake (PermitVote) + proposal (Vote tag) |
|
|
//! | 4c | `proposal_advance` | State-machine transition redeemer |
|
|
//! | 4d | `stake_destroy` | Spend stake (Destroy), return TRP to wallet |
|
|
//! | 4e | `treasury_execute` | Burn GAT + spend treasury per effect datum |
|
|
//! | def. | `stake_create` | Lock TRP at stakes script (deferred — both |
|
|
//! | | | live wallets already have stakes) |
|
|
|
|
pub mod proposal_advance;
|
|
pub mod proposal_cosign;
|
|
pub mod proposal_create;
|
|
pub mod proposal_retract_votes;
|
|
pub mod proposal_vote;
|
|
pub mod stake_destroy;
|
|
|
|
#[cfg(feature = "escrow_wip")]
|
|
pub mod escrow_agree;
|
|
#[cfg(feature = "escrow_wip")]
|
|
pub mod escrow_deposit;
|
|
#[cfg(feature = "escrow_wip")]
|
|
pub mod escrow_open;
|
|
#[cfg(feature = "escrow_wip")]
|
|
pub mod escrow_settle;
|
|
#[cfg(feature = "escrow_wip")]
|
|
pub mod escrow_veto;
|