mirror of
https://github.com/logos-blockchain/lez-programs.git
synced 2026-06-13 11:49:57 +00:00
Adds the `open_position` instruction to the Stablecoin Program. The instruction
claims a per-owner `Position` PDA, initializes a collateral vault token holding
via a chained `Token::InitializeAccount` under the vault's PDA authority, and
moves `collateral_amount` from the user's holding into the vault with a chained
`Token::Transfer`. `Position` is persisted with `collateral_amount` and
`debt_amount = 0`; the debt path is deferred to `generate_debt`.
- Add `Position` struct, `OpenPosition` instruction variant, and
`compute_position_pda{,_seed}` / `compute_position_vault_pda{,_seed}` helpers
in `stablecoin_core` with domain-separated PDA seeds.
- Implement `open_position::open_position` mirroring the ATA `create` and AMM
`new_definition` patterns: authorization and uninitialized-state asserts, PDA
verification, and same-transaction chained `InitializeAccount` + `Transfer`.
- Wire the new instruction through the SPEL guest and regenerate the stablecoin
IDL artifact.
- Cover the happy path, all assertion paths, and PDA determinism /
non-collision in 11 new unit tests.
13 lines
455 B
Rust
13 lines
455 B
Rust
//! Host-side embedding of the stablecoin RISC Zero guest ELF.
|
|
//!
|
|
//! Re-exports the constants produced by `build.rs` via `risc0_build::embed_methods` —
|
|
//! `STABLECOIN_ELF`, `STABLECOIN_PATH`, and `STABLECOIN_ID` — used by host code to
|
|
//! load and identify the guest binary.
|
|
|
|
#![allow(
|
|
missing_docs,
|
|
reason = "constants below are generated by risc0_build::embed_methods at build time"
|
|
)]
|
|
|
|
include!(concat!(env!("OUT_DIR"), "/methods.rs"));
|