59个版本 (4个重大更改)

0.5.18 2023年11月16日
0.5.13 2023年10月31日
0.3.5 2023年7月31日

#50 in 魔法豆

Download history • Rust 包仓库 378/week @ 2024-03-29 • Rust 包仓库 467/week @ 2024-04-05 • Rust 包仓库

每月下载量559次

MIT许可证

1MB
21K SLoC

Switchboard Logo

switchboard-evm

一个用于与基于EVM链的Switchboard交互的Rust库。

Crates.io Badge

Discord Badge

Twitter Badge

类型文档:docs.rs/switchboard-evm

EVM SDK:github.com/switchboard-xyz/evm-sdk

Switchboard文档:docs.switchboard.xyz

安装

在您的项目目录中运行以下Cargo命令

cargo add switchboard-evm

或者将以下行添加到您的Cargo.toml中

[dependencies]
switchboard-evm = "0.5.15"

用法

以下是在Switchboard函数中使用EvmFunctionRunner的示例

/// Required
static CLIENT_URL: &str = "https://goerli-rollup.arbitrum.io/rpc";
// Generate your contract's ABI
abigen!(Receiver, r#"[ function callback(uint256) ]"#,);

#[derive(EthAbiType, EthAbiCodec, Default, Debug, Clone)]
pub struct Params {
    callback: Address,
}

#[sb_function(expiration_seconds = 120, gas_limit = 5_500_000)]
async fn sb_function(client: SbMiddleware, _call_id: Address, params: Params) -> SbResult {
    let receiver_contract = Receiver::new(params.callback, client.into());
    let mut random = [0u8; 32];
    Gramine::read_rand(random.as_mut_slice()).map_err(|_| SbError::SgxRandReadFail)?;
    Ok(vec![receiver_contract.callback(U256::from_little_endian(&random))])
}

#[sb_error]
pub enum SbError {
    SgxRandReadFail
}

依赖项

~33–49MB
~1M SLoC