Skip to content

[core] LendingProtocol async trait #4

@obchain

Description

@obchain

Context

The main protocol-adapter boundary. Scanner and executor consume this trait without caring which lending protocol sits behind it — that's how we'll add Aave / Compound / Morpho later without touching the scanning or execution logic.

Scope

  • LendingProtocol trait in charon-core/src/traits.rs
  • fn id() -> ProtocolId
  • async fn fetch_positions(borrowers: &[Address]) -> Result<Vec<Position>>
  • fn get_liquidation_params(position: &Position) -> Result<LiquidationParams>
  • fn build_liquidation_calldata(params: &LiquidationParams) -> Result<Vec<u8>>
  • Uses #[async_trait] so the trait is dyn-compatible for Box<dyn LendingProtocol> registries

Acceptance criteria

  • Trait defined in charon-core/src/traits.rs
  • All four methods present with correct signatures
  • Trait is Send + Sync-bounded for tokio multi-threading
  • Crate compiles with async-trait dependency

References

  • Delivered in commit 07bf907
  • PRD section 4a (Lending Protocol Trait)

Metadata

Metadata

Assignees

No one assigned

    Labels

    layer:rustRust crates (core / scanner / protocols / executor / cli)priority:p1-coreCore MVP scopestatus:readyScoped and ready to pick uptype:featureNew capability or deliverable

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions