23 个版本

0.1.2 2024年2月12日
0.1.1 2024年1月25日
0.0.25 2023年1月9日
0.0.23 2022年10月14日
0.0.8 2023年12月1日

#2070魔法豆

每月 39 次下载
用于 juper_swap_api

Apache-2.0

93KB
2K SLoC

juper

juper API 客户端,通过 AnyIx 兼容链上代理 juper 交易。基于 rust-jup-ag

crates

juper_swap_api

juper_swap_api 是 mvine 的 rust-jup-ag 的一个重度修改分支,提供异步和阻塞客户端,以及简单的路由缓存。

juper_swap_cpi

警告:不恰当地使用此功能,包括以下示例,将导致可利用的程序。必须谨慎实现,开发人员不对任何使用此功能造成的财务损失承担责任

jupiter-cpi 的轻量级版本,旨在与 AnyIx 一起使用。它允许无缝集成 Jupiter 的交易 API 和您的程序,实现通过 Jupiter 路由的保险库复利等功能,以及链上访问控制等。

使用方法

1) 链上程序

在您的链上程序中定义一个函数和一个看起来像以下指令账户对象。


#[derive(Accounts)]
pub struct JupiterSwap<'info> {
    /// CHECK: not needed
    #[account(signer)]
    pub authority: AccountInfo<'info>,
    /// CHECK: not needed
    ///
    /// an account that can be used to read various access control settings, etc..
    /// this is intended to be used to restrict access to the `jupiter_swap` function
    pub management: AccountInfo<'info>,
    /// CHECK: not needed
    /// 
    /// an account that is used to read values related to ownership of the token accounts
    /// etc.. this can be used to validate that the token account owners of the jupiter swap
    /// accounts are owned by specific pdas, etc..
    pub vault: AccountInfo<'info>,
    /// CHECK: not needed
    /// 
    /// the actual jupiter program itself
    pub jupiter_program: AccountInfo<'info>,
}

/// all accounts required by this instruction except thos listed in `JupiterSwap`
/// are provided via remaining_accounts, use with caution.
pub fn jupiter_swap<'a, 'b, 'c, 'info>(
    mut ctx: Context<'a, 'b, 'c, 'info, JupiterSwap<'info>>,
    // this must be encoded in the AnyIx format
    input_data: Vec<u8>
) -> Result<()> {
    juper_swap_cpi::process_instructions(
        pda,
        &ctx.accounts.jupiter_program,
        &mut ctx.remaining_accounts.to_owned(),
        &input_data[..],
        None,
    )?;
    Ok(())
}

2) 链下调用

例如,链下指令生成的示例请参见 crates/juper_swap_api

依赖项

~20–32MB
~540K SLoC