arweave / arweave-sdk
Arweave PHP SDK
Requires
- php: ^7.0
- ext-curl: *
- ext-gmp: *
- ext-mbstring: *
- phpseclib/phpseclib: ^2.0
- web-token/jwt-core: ^1.3
- web-token/jwt-framework: ^1.3
This package is auto-updated.
Last update: 2024-09-29 05:09:18 UTC
README
此包允许我们与 Arweave 网络交互,我们可以用它来读取和写入网络中的事务和数据。
安装
我们强烈建议使用 composer 进行安装。
composer require arweave/arweave-sdk
或者将以下内容添加到您的项目 composer.json
文件中。
"require": {
"arweave/arweave-sdk": "0.2.0"
}
快速示例
向网络发送数据
include __DIR__ . '/vendor/autoload.php'; $arweave = new \Arweave\SDK\Arweave('http', '209.97.142.169', 1984); $jwk = json_decode(file_get_contents('jwk.json'), true); $wallet = new \Arweave\SDK\Support\Wallet($jwk); $transaction = $arweave->createTransaction($wallet, [ 'data' => '<html><head><title>Some page</title></head></html>', 'tags' => [ 'Content-Type' => 'text/html' ] ]); printf('Your transaction ID is %s', $transaction->getAttribute('id')); // commit() sends the transaction to the network, once sent this can't be undone. $arweave->api()->commit($transaction);
从网络获取数据
$arweave = new \Arweave\SDK\Arweave('http', '209.97.142.169', 1984); $arweave->api()->getTransactionData('mvscO3JBlwweOnfkkHpc3fINQ6cUtn_g5aFY9af5TfQ')
用法
实例化
首先创建一个 Arweave
对象,这是您的应用程序应使用的核心 SDK 类,它包含创建、发送和获取事务的公共方法。
$arweave = new \Arweave\SDK\Arweave('http', '209.97.142.169', 1984);
提供任何有效的 Arweave 节点主机名或 IP 地址
获取事务
一旦我们有了 Arweave
对象,我们就可以使用有效的交易 ID 从网络中获取事务。
例如
$arweave->api()->getTransaction('mvscO3JBlwweOnfkkHpc3fINQ6cUtn_g5aFY9af5TfQ');
上述代码将返回以下 Transaction
对象
object(Arweave\SDK\Support\Transaction)#23 (1) { ["attributes":protected]=> array(10) { ["id"]=> string(43) "mvscO3JBlwweOnf..." ["last_tx"]=> string(43) "3MFrfH0-HI9GeMf..." ["owner"]=> string(683) "1Q7Rfgt23rfUDp..." ["target"]=> string(0) "" ["quantity"]=> string(1) "0" ["data"]=> string(60) "eyJib2R5IjoiVGVz..." ["reward"]=> string(10) "1825892857" ["signature"]=> string(683) "BUmdaf4rzlyT_3..." ["tags"]=> array(0) {} } }
从事务中获取数据
有两种方法可以从事务中获取数据,我们既可以
$data = $arweave->api()->getTransactionData($transaction_id); //string(45) "{"body":"Test body","subject":"Test subject"}"
此方法返回事务的原始和已解码数据。这是最简单的方法,可能是您最常需要的方法。
或者,如果我们需要编码数据或其他事务属性,我们可以这样做
$transaction = $arweave->api()->getTransaction($transaction_id); $encoded_data = $transaction->getAttribute('data'); //string(60) "eyJib2R5IjoiVGVzdCBib2R5Iiwic3ViamVjdCI6IlRlc3Qgc3ViamVjdCJ9" $original_data = base64_decode(\Arweave\SDK\Support\Helpers::base64urlDecode($encoded_data)); //string(45) "{"body":"Test body","subject":"Test subject"}"
ArQL
$transactionIds = $arweave->api()->arql([ 'op' => 'equals', 'expr1' => 'App-Name', 'expr2' => 'arweaveapps' ]); // array(31) { // [0]=> // string(43) "NXg2OaRRygb7RJZFbkcEYlS2LNNfsqxxobzUqz7ELnc" // [1]=> // string(43) "i3_aC8xIO_4TpMqp5sR4WVUwbA1p2sPCu11cLVKN89U // ...
加载钱包
要加载钱包,您需要一个密钥文件。Arweave 使用 JSON Web Keys (JWK) 作为密钥文件格式,JWK 简单地是一个公钥/私钥对的 JSON 表示,它们看起来像这样
{ "kty": "RSA", "ext": true, "e": "AQAB", "n": "1Q7Rfgt23rfU...", "d": "Yk_Z0tGLpar_...", "p": "_lrlR3LXDjR4...", "q": "1m-NU2BaG2vU...", "dp": "qfU3LFSrN52...", "dq": "gk_Sb5cFAQQ...", "qi": "k65nfXdh4qx..." }
我们首先需要将我们的 JWK 文件解码为 PHP 数组,然后我们可以简单地将该数组传递给一个新的 Wallet
对象。
您应该像对待 API 密钥或密码一样对待您的 JWK。您绝对不应该公开它们或将它们放置在任何公开可访问的位置,并且绝对不应该将它们提交到任何版本控制系统,这样做将损害您的钱包及其内容。
$jwk = json_decode(file_get_contents('jwk.json'), true); $wallet = new \Arweave\SDK\Support\Wallet($jwk);`
这只是存储您的 JWK 的一个建议方法,但没有任何要求您将其存储为 JSON 文件,您也可以将其存储在环境变量中、数据库中、PHP 文件中或任何其他地方。只要最终成为 PHP 数组,它应该就能正常工作。
创建事务
事务需要签名才能被网络接受,因此**此步骤需要钱包**。