mirror of
https://github.com/logos-blockchain/lez-programs.git
synced 2026-05-19 07:29:32 +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.
21 lines
696 B
TOML
21 lines
696 B
TOML
[package]
|
|
name = "stablecoin-guest"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
|
|
[workspace]
|
|
|
|
[[bin]]
|
|
name = "stablecoin"
|
|
path = "src/bin/stablecoin.rs"
|
|
|
|
[dependencies]
|
|
spel-framework = { git = "https://github.com/logos-co/spel.git", rev = "6473ab4c400bc59bac8db83a286faaeafa7d1999", package = "spel-framework" }
|
|
nssa_core = { git = "https://github.com/logos-blockchain/logos-execution-zone.git", tag = "v0.2.0-rc3" }
|
|
risc0-zkvm = { version = "=3.0.5", default-features = false }
|
|
stablecoin_core = { path = "../../core" }
|
|
stablecoin_program = { path = "../..", package = "stablecoin_program" }
|
|
token_core = { path = "../../../token/core" }
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
borsh = "1.5"
|