在庫型: コントラクト保有残高でサイクルを回し、利益はコントラクトに残す。 事前にオーナーが plan.token を amount_in 以上コントラクトへ入金しておくこと。戻り値=実現利益。
fn run(env: soroban_sdk::Env, plan: Plan) -> i128
FL型(controllerインスタンスで呼ぶ): executor に plan を staging → Blend flash_loan。 返済は Blend が Repay リクエスト(amount+margin、超過返金)で from=trader の allowance から回収。
fn run_fl(
env: soroban_sdk::Env,
trader: soroban_sdk::Address,
pool: soroban_sdk::Address,
executor: soroban_sdk::Address,
asset: soroban_sdk::Address,
amount: i128,
plan: Plan,
)
moderc3156 receiver(Blend が FL 実行中に呼ぶ)。借入 amount は既にコントラクトへ着金済み。
コントラクト保有のまま動的サイクルを回し、返済分を from(=caller)へ渡す。利益はコントラクトに残留。
fn exec_op(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
token_id: soroban_sdk::Address,
amount: i128,
fee: i128,
)
executor インスタンスのみ: controller が同一Tx内で plan を staging(TEMPORARY storage)。
fn set_plan(env: soroban_sdk::Env, setter: soroban_sdk::Address, plan: Plan)
admin のみ: コントラクト残留資金の回収。amount=None で全額。
fn withdraw(
env: soroban_sdk::Env,
token_id: soroban_sdk::Address,
to: soroban_sdk::Address,
amount: Option,
)
fn get_admin(env: soroban_sdk::Env) -> soroban_sdk::Address
デプロイ時に一度だけ実行(未初期化フロントラン不可)。 controller インスタンス: controller=None / executor インスタンス: controller=Some(controllerアドレス)
fn __constructor(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
controller: Option,
)