#avalanche #cryptocurrency #crypto #avax

xavax-avalanche

Rust 实现的 Avalanche 交易格式,包括解析器,用于将数据解析到和从本地结构体中

4 个版本

0.2.0 2022 年 1 月 24 日
0.1.1-beta2021 年 11 月 5 日
0.1.0 2021 年 11 月 6 日
0.1.0-beta2021 年 11 月 5 日

#15 in #avalanche

Apache-2.0 和可能 GPL-3.0

205KB
3K SLoC

xavax-avalanche

Test Status

Avalanche 网络的一站式 SDK

交易格式解析、加密学以及其他功能!

  • 交易签名
  • AVM 和 PVM 交易格式。
  • Avalanche 和 EVM 加密学(Bech32 地址、管理密钥链、BIP39 & BIP44 用于 HD 钱包和助记词等)。
  • Avalanche 节点的完整 JSONRPC API(从节点获取信息或提交交易!)

此 SDK 是一个一站式 Crate,可以帮助您在 avalanche 网络上构建您心中所想的一切!(进行中)。

请参阅文档:[docs.xavax.io](https://docs.xavax.io)。

详细信息:xavax-avalanche 能做什么?

未选择任何功能时,此 Crate 可以

创建交易或任何在 AVMPVM 和原子 EVM 交易格式中定义的数据类型。您还可以从原始编码有效载荷(CB58 编码,avalanche 网络中使用的编码)解析到 Rust 数据类型,反之亦然!

request-api 功能

request-api 功能增加了对 Avalanche JSON RPC API 的支持,并允许发送 https 请求并相应地获取响应,有了此功能,您确实可以做到从获取当前交易费用到向网络发送原始交易的一切!

该功能包括 AVM & PVM json-rpc 以及 Ortelius 指数器 RPC。

crypto-api 功能

crypto-api 功能增加了 Avalanche 和 EVM 的密钥链创建以及签名和验证!这意味着 secp256k1、SHA256、KECCAK256 和 RIPEMD160。

此功能允许您从 bip39 种子短语创建密钥链,并允许生成新的种子短语(使用密码学安全的熵源,crypto-rng)。

使用所有功能,您可以

创建一个 avalanche 钱包!或者也许创建一个使用 avalanche 的游戏!

您可以将代码编译成 WASM,并使用编译后的 WASM 进行与网络相关的操作!

您还可以在 avalanche 上创建子网以及添加自定义区块链,这个区块链是做什么的,将由您和您的想象力来回答...

您可以使用Avalanche JSONRPC从Avalanche节点获取您想要的任何信息!

创建交易,签名并发送它们!

以下是一些需要注意的事项

  • xavax-avalanche目前处于非常早期的开发阶段,文档也在不断更新中,整个SDK也是如此。欢迎就SDK提问,文档将不断更新,并增加更多使用SDK的示例。

功能完整性

Avalanche虚拟机(AVM)已经实现了大约99%,目前缺少的是CreateAssetTx。

Atomic EVM格式已经完全实现,这允许在Avalanche上的C-Chain等EVM链之间导入/导出。

平台虚拟机(PVM)已经完全实现,尽管子网和自定义链仍在ava-labs的开发中。

这个库尚未经过全面测试,尽管我相信大多数功能都能正常工作。

我建议您今天使用这个库进行研究和开发,如果您发现任何问题或错误,请在本地的GitHub仓库创建问题!


文档

xavax-avalanche的文档非常早期,随着时间的推移,将会有更多文档的介绍。

文档将位于


用法与示例

请查看文档以获取更多详细示例。

将此行添加到您的Cargo.toml文件中

[dependencies]
xavax-avalanche = "0.1.0"

如果您需要额外的功能(强烈推荐)

[dependencies]
xavax-avalanche = { version = "0.1.0", features = ["request-api", "crypto-api"] }

您可以创建一个BaseTx(默认交易),以及其他交易类型

use xavax_avalanche::avm::tx_format::*;

//Create a base tx
let mut tx: BaseTx = BaseTx::default();

//You can Manually set the values
tx.type_id = 0;
tx.network_id = 5;

//Turn the payload into bytes:
let payload = tx.to_bytes();

// Or encode the BaseTx into a CB58 string (this the format in which it will be sent to the avalanche network when signed)
let cb58_encoded_tx = tx.to_cb58();

您可以将现有的字节负载解析为结构体

use xavax_avalanche::avm::tx_format::*;

let mut tx: BaseTx = BaseTx::default();

/* pretend that this is a BaseTx byte payload */
let tx_bytes: Vec<u8> = [0, 0, 0, 0, 0, 0, 0, 0, 0,].to_vec();

/* you could also decode CB58 to bytes */
let tx_bytes: Vec<u8> = decode_cb58("cSjfNPretendthatthisisaCB58StringPayload!FGlweODksd");

//Parse the bytes into a BaseTx data struct.
tx.from_bytes(&tx_bytes);

变更,路线图和信息

这个库非常早期;文档、更多测试等都在开发中,请随时关注我或xavax,或创建GitHub问题或pull请求!

API信息始终可以在xavax网站上找到。

更多关于xavax的信息可以在xavax.iotwitter上找到。


许可

xavax-avalanche以宽松的Apache 2.0许可证发布 <3


现在就享受美好的时光吧...

依赖项

~2–19MB
~247K SLoC