1个不稳定版本
0.1.0 | 2024年4月1日 |
---|
#2353 in 魔法豆
335KB
5K SLoC
该仓库包含用于与Ethereum Attestation Service协议交互的Rust编程语言的Ethereum Attestation Service SDK。
Ethereum Attestation Service (EAS) 是一个开源的基础设施公共产品,用于在链上或链下进行证明。
Rust SDK通过智能合约绑定与在不同EVM兼容区块链上部署的EAS智能合约交互。已部署合约的列表可以在EAS合约README文件中找到。该列表中所需网络对应的EAS合约地址应作为参数传递给客户端构造函数。
使用方法
异步客户端使用 ethers-rs
作为依赖项。要使用它,您需要将您的 Cargo.toml
设置为类似以下的内容
[dependencies]
ethers = "2.0"
eas-sdk = "0.1.0"
然后在您的代码中使用它
const SEPOLIA_CONTRACT_ADDRESS: &str = "0xC2679fBD37d54388Ce493F1DB75320D236e1815e";
const SEPOLIA_ENDPOINT: &str = "https://ethereum-sepolia-rpc.publicnode.com/";
const SEPOLIA_PRIVATE_KEY_HEX: &str = "enter your private key here";
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
let singing_key = &hex::decode(SEPOLIA_PRIVATE_KEY_HEX)?;
let signing_key = SigningKey::from_slice(singing_key)?;
let contract_address = H160::from_str(SEPOLIA_CONTRACT_ADDRESS)?;
let client = client::Client::new(SEPOLIA_ENDPOINT, contract_address, None, signing_key).await?;
// Register a new schema
let schema = schema::SchemaBuilder::new()
.add("id", schema::Type::Address)
.add("voter_id", schema::Type::Address)
.add("vote_option", schema::Type::Int(32))
.build();
let tx = client.schema_registry.register(schema, None, true).await?;
let registered_schema = tx.await?;
println!("Schema ID: {:?}", registered_schema.schema_uid);
// Make a new attestation for the created schema
let attestation_request = AttestationDataBuilder::new()
.revocable(true)
.data(&[
Token::Address(H160::from_low_u64_be(0x1234567890abcdef)),
Token::Address(H160::from_low_u64_be(0x1234567890abcdef)),
Token::Int(11.into()),
])
.build();
// attest sends a transaction and returns a PendingTx that can be awaited
let tx = client.eas.attest(®istered_schema.schema_uid, attestation_request).await?;
let attested = tx.await?;
println!("Attestation ID: {:?}", attested);
Ok(())
}
同时 schema_registry
和 eas
类型导出底层合约。如果需要,可以使用这些合约直接与abigen绑定交互。
状态
该项目是从需要使用Rust语言的Ethereum Attestation Service的需求中产生的。由于EAS仍在发展,我预计这个库也会随之发展。
项目仍处于早期阶段。已覆盖链上流程,但还有一些功能缺失,例如链下证明。如果您在使用SDK时发现缺失的功能,请随时联系或提出问题。
版本控制
客户端的每个版本都有标签,版本号相应更新。要查看过去版本的列表,请运行 git tag
。
贡献
我们热爱拉取请求!请参阅贡献指南。由于SDK是可选的且仍在不断发展,如果您发现某些功能损坏或缺失,请与我们联系或打开一个问题!
许可证
此库在LICENSE文件中提供的BSD风格许可证下分发。
依赖项
~27–43MB
~801K SLoC