#钱包 #导入 #arweave #最多 #上传 #发送 #写入

arrs

ARRS 是 Arweave 客户端的 Rust API 实现。它可以用于在 Rust 中编写命令行、桌面或 Web 程序,以使用 Arweave 的大多数功能,包括创建、导入和导出钱包、检查余额、发送交易、上传文件等。

9 个版本

0.1.9 2024 年 2 月 14 日
0.1.8 2024 年 2 月 13 日
0.1.6 2024 年 1 月 29 日

#1585 in 神奇豆子

Download history

每月 94 次下载

LGPL-3.0-only

73KB
1.5K SLoC

ARRS

简介

ARRS 是 Arweave 客户端的 Rust API 实现。它可以用于在 Rust 中编写命令行、桌面或 Web 程序,以使用 Arweave 的大多数功能,包括创建、导入和导出钱包、检查余额、发送交易、上传文件等。

Arweave 是一个基于加密的永久存储网络。有关更多信息,请访问:https://arweave.org/

使用方法

此程序需要 OpenSSL。它将下载 OpenSSL 的最新官方版本,并自动编译它。因此,您的系统需要安装 C 编译器、Perl(以及 perl-core)和 make。

此程序有异步函数,可以用于 Web 应用程序的开发,但要本地测试此程序,您需要将 tokio 添加到您的依赖项中。

尽管大多数模块和结构体都是公开的,并且可以单独使用,但此程序旨在将所有内容包装到 ArWallet 结构体中。您应该能够在 ArWallet 结构体的方法中找到 Arweave 的大多数功能和特性。

您可以在以下位置找到文档:https://docs.rs/arrs,或者您可以通过运行以下命令在本地编译并打开文档:cargo doc --no-deps --open

示例

此程序有异步函数,因此要本地测试此程序,您需要将 tokioarrs 添加到您的 Cargo.toml

[dependencies]
arrs = {path = "../arrs"}
tokio = { version = "1.35.1", features = ["full"] }

打印钱包地址和 AR 余额

use arrs::wallet::ArWallet;
use tokio;

#[tokio::main]
async fn main() {
    let arwallet = ArWallet::new();
    let balance = arwallet.balance();
    let address = arwallet.address();
    println!("Your Arweave Wallet Address is: ");
    println!("{}", address);
    println!("Your AR balance is {}: ", balance.await.unwrap());
}

导入 JSON Web Key (JWK)

use arrs::wallet::ArWallet;
use tokio;
use std::fs::read_to_string;

#[tokio::main]
async fn main() {
    let jwk = read_to_string("./test.json").unwrap();
    let arwallet = ArWallet::from_jwk(&jwk);
    let balance = arwallet.balance();
    let address = arwallet.address();
    println!("Your Arweave Wallet Address is: ");
    println!("{}", address);
    println!("Your AR balance is {}: ", balance.await.unwrap());
}

创建一个AR转账交易,签署并提交。

use arrs::wallet::ArWallet;
use tokio;
use std::fs::read_to_string;

#[tokio::main]
async fn main() {
    let jwk = read_to_string("./test.json").unwrap();
    let ar = ArWallet::from_jwk(&jwk);
    let mut tx = ar.create_ar_transaction(
        "lKoYAKxF_ESjG500WfCfJvcxM83OFHGP0tnkIMnUJfM",
        0.02
    ).await;
    tx.add_tag("Test Name 2", "Test Value 2");
    tx.sign();
    println!("{:?}", tx.submit().await);
}

创建数据交易,添加标签,签署,提交并上传。

use arrs::wallet::ArWallet;
use tokio;
use std::{
    fs::{File, read_to_string},
    io::Read
};

#[tokio::main]
async fn main() {
    let jwk = read_to_string("./test.json").unwrap();
    let mut ar = ArWallet::from_jwk(&jwk);
    let mut data_file = File::open("./the-freedom-of-constraint.mp4").unwrap();
    let mut raw_data = Vec::new();
    data_file.read_to_end(&mut raw_data).unwrap();   
    let mut tx = ar.create_data_transaction(&raw_data).await;
    tx.add_tag("Content-Type", "video/mp4");
    tx.add_tag("Test Name 2", "Test Value 2");
    tx.sign();
    println!("{:?}", tx.submit().await);
    while ar.uploader().current_idx() < ar.uploader().chunk_size() {
        println!("{}", ar.upload().await.unwrap());
    }
}

下载文件。

许多Arweave功能,例如下载文件,不需要Arweave钱包(密钥)即可操作。因此,在这个例子中,我们导入ArPublic而不是ArWallet。这在许多情况下很有用,例如为搜索和下载文件创建无需注册的网站。

use arrs::public_client::ArPublic;
use tokio;
use std::fs::{write as write_file};

#[tokio::main]
async fn main() {
    let mut ap = ArPublic::new();
    ap.new_download("jVid2TTQ1g9j_sU6_4AlJm6hkAKiNznUYLCTEx-fobk")
        .await.unwrap();
    while ap.downloader().current_offset()
        <= ap.downloader().end_point()
    {
        let finished_percent= ap.download().await.unwrap();
        println!("Downloading ... {}%", finished_percent);
    }
    // Assume that you know the file's original content type. If you
    // don't, you can try to check if there is a Content-Type tag in
    // the transaction.
    let downloaded_data = &ap.downloader().downloaded_data();
    write_file("./test.mp4", downloaded_data).unwrap();
}

版权©2024 IceGuye

本程序是自由软件:您可以在自由软件基金会发布的GNU Lesser General Public License的条款下重新分发和/或修改它,许可证版本为3。

本程序的分发是希望它将是有用的,但没有任何保证;甚至没有关于其商业性或针对特定目的的适用性的暗示保证。有关更多详细信息,请参阅GNU Lesser General Public License。

您应已收到GNU Lesser General Public License的副本。如果没有,请参阅http://www.gnu.org/licenses/

依赖项

~61MB
~636K SLoC