使用Arweave构建,一个永久的、去中心化的数据协议

新手Jan 11, 2024
本文将重点介绍文件的存储和检索,而不是运行您自己的生产Arweave网关。
使用Arweave构建,一个永久的、去中心化的数据协议

推出 Building on web3 — 一系列新的 Edge & Node 博客,旨在让开发人员熟悉在不断发展的 web3 领域进行开发的协议、工具和最佳实践。基于 web3 的构建将重点关注 web3 生态系统中的新兴技术和项目,以帮助为 dapp 开发人员创造成功的秘诀。

在这篇文章中,您将了解Arweave 是什么,为什么我认为它很重要,以及如何开始使用它进行构建。本文将重点讨论文件存储和检索,而不是运行您自己的生产 Arweave 网关。

Arweave 是一个全球性的、永久的、去中心化的数据和文件存储层。

对我来说,Arweave 的革命性之处在于,我可以存储一些东西,然后就可以永远使用它,而无需再次支付任何费用,也不必担心它会消失。

与传统的集中式存储解决方案相比,如果您一个月忘记支付账单,您就会被删除,或者更糟糕的是,您或其他人不小心完全删除了您的数据。

这种数据持久性在 web3 中尤其重要,我们正在构建不可变的应用程序基础设施。区块链数据本质上已经是不可变的,但您经常看到开发人员以不遵守去中心化或不可变性最佳实践的方式存储链下数据。

例如,在不可替代代币或 NFT 领域,一些开发人员使用集中式托管服务来存储代币元数据。这打破了不变性所需的重要安全属性以及 NFT 最初代表的概念。

如果元数据不是永久性的,则无法保证令牌所代表的属性在未来仍然存在。这意味着,如果元数据没有存储在像 Arweave 这样的永久文件存储协议上,那么代币的完整性就会受到威胁,这也是此类技术的存在如此重要的原因。

在 The Graph 生态系统中,我们还在为 Arweave 提供支持和集成,因为我们认识到该协议对于构建真正去中心化的 web3 应用程序的价值。

关于Arweave

Arweave 基于两项技术:blockweave(区块链的衍生品)和“访问证明 (Proof of Access)”。

Blockweave 是为 Arweave 提供支持的技术。与区块链一样,块编织是数据块的链接集合,链接到写入网络的先前块。

Arweave 中用于促进安全、去中心化数据存储的共识机制称为“访问证明”。这种机制比工作量证明更高​​效、更环保,因为矿工不需要存储所有区块。正因为如此,节省了大量的电力,同时矿工仍然能够达成共识。此外,随着网络的扩展,电力消耗也会减少。

Arweave 入门

有两种方法可以开始使用 Arweave 代币

1.下载Arweave钱包

您可以从一个新钱包开始,并通过使用以下方式获得一小部分 Arweave 代币:Arweave测试通道

验证后,您应该获得 0.1 AR,用于开始在应用程序中测试 Arweave。

2.浏览器钱包

您可能使用过浏览器和移动钱包(例如 Metamask 或 Phantom),它们允许您直接从应用程序与 web3 应用程序进行交互。 Arweave 有一个类似的钱包,叫做Arconnect

您可以直接将其安装为 Chrome 扩展程序,并开始与使用 Arweave 的 Web 应用程序进行交互。

从那里,您可以使用他们的任何代币为钱包提供资金支持的交易所 或者您可以导入上一步中创建的钱包。

要学习本教程,您不需要任何代币,但您应该安装 Arconnect 浏览器钱包。

捆绑号 (Bundlr)

除了我们将在本教程中介绍的技术之外,您还可以选择使用捆绑号 它可以为不同智能合约区块链上的 Arweave 存储以及用于应用程序集成的客户端和服务器端 SDK 提供本机支持。

这是一个很好的选择,因为它不需要用户持有 AR 代币,而是可以依赖其他网络和代币(如 ETH、MATIC、Solana、Arbitrum 等)来支付交易。

要了解有关 Bundlr 的更多信息,请查看文档这里

使用 Arweave 构建

现在我们已经了解了 Arweave 并保护了我们的代币,让我们构建一个基本的应用程序。

我们将构建的应用程序将允许我们将一串文本上传和下载到 Arweave。

这是一个基本示例,但却是一个很棒的“Hello world”,因为它逐步介绍了工具和 API,让您在短时间内开始构建。

我们要做的第一件事是使用 create-react-app 创建一个新的 React 应用程序:

npx 创建反应应用程序

arweave-appcd arweave-app

从应用程序调用 Arweave 网络有两种主要方法:

  1. HTTP API - Arweave 协议基于 HTTP,因此任何现有的 http 客户端都可用于与网络交互,例如 Axios 或 Fetch
  2. Arweave JS - Arweave JS 是 JavaScript/TypeScript SDK,用于与 Arweave 网络交互并将数据上传到 permaweb。它适用于最新的浏览器和 Node JS。

Arweave JS SDK 非常好,我们将在本教程中使用它。

现在让我们使用 npm 或 YARN 安装 arweave-js:

npm 安装 arweave

Arweave网络

您可以通过以下几种方式与 Arweave 网络进行交互:

  1. 开发网 -arweave.dev
  2. 主网 -https://arweave.net/
  3. 当地环境——Arlocal

在本指南中,我们将从 Arlocal 开始,它允许我们免费发送测试交易。我们还将学习如何使用主网发送真实交易。

Arlocal

为了进行本地测试,我们可以使用 Arlocal,它将运行一个本地网络,我们可以与该网络进行交互并向其发送测试交易。

你甚至不需要下载或安装任何东西来使用 Arlocal,只要你的机器上安装了 Node.js,你就可以通过运行以下命令来启动本地网关:

npx arlocal

就是这样!您现在应该在 http://localhost:1984 上运行本地 Arweave 网关

现在您已经运行了本地网关,让我们编写代码。

打开 src/App.js 并使用以下代码更新文件:

从 ‘../styles/Home.module.css’ 导入样式

从 ‘react’ 导入 { useState }

从 ‘arweave’ 导入 Arweave

/ 连接到 Arweave 节点或指定网关 /

const arweave = Arweave.init({})

函数应用程序(){

const [状态,setState] = useState(‘’)

const [transactionId, setTransactionId] = useState(‘’)

异步函数createTransaction() {

if (!state) 返回

尝试 {

const formData = 状态

设置状态(‘’)

/ 创建交易并将其发送到 Arweave /

让事务 =等待 arweave.createTransaction({ data: formData })

等待 arweave.transactions.sign(交易)

让 uploader =等待 arweave.transactions.getUploader(transaction)

/ 上传指示符 /

while (!uploader.isComplete) {

等待 uploader.uploadChunk()

console.log(${uploader.pctComplete}% 完成,${uploader.uploadedChunks}/${uploader.totalChunks})

}

setTransactionId(交易.id)

} 捕获(错误){

console.log(‘错误:’,错误)

}

}

异步函数 readFromArweave() {

/ 使用任意 trsnsaction ID 读取 Arweave 数据 /

arweave.交易

.getData(交易ID, {

解码:真,

字符串:真,

})

.then((数据) => {

console.log(‘数据:’, 数据)

})

}

返回 (

<div className={styles.container}>

<按钮样式={按钮} onClick={createTransaction}>

创建交易

</按钮>

<按钮样式={按钮} onClick={readFromArweave}>

读取交易

</按钮>

<input style={input} onChange={(e) => setState(e.target.value)} placeholder=”text” value={state} />

</div>

}

常量按钮= {

大纲:“无”,

边框:’1px 纯黑’,

背景颜色:’白色’,

填充:’10px’,

宽度:’200px’,

底部边距:10,

光标:’指针’,

}

常量输入 = {

背景颜色: ‘#ddd’,

大纲:“无”,

边框:’无’,

宽度:’200px’,

字体大小:’16px’,

填充:’10px’,

}

导出默认应用程序

接下来,启动应用程序:

npm 启动

当应用程序启动时,您应该看到带有两个按钮的基本表单输入。

您可以在表单中输入要保存的数据,然后按“创建事务”将文本保存在 Arweave 中。

交易完成后,您应该会看到控制台上有一个进度指示器,指示数据已保存。

保存数据后,单击“读取事务(Read Transaction)” 以从 Arweave 读取数据。

Arweave 生产网络

要与生产网络交互,您只需更新 Arweave 网络配置即可。

const arweave = Arweave.init({

主机:’arweave.net’,

})

该项目的代码

我们今天构建的项目的示例代码库已可用这里

下一步

要了解有关 Arweave 的更多信息,请查看Arweave 文档, 这维基百科,并关注他们推特

关于Edge & Node

Edge & Node 是一家创意软件开发公司,致力于构建一个充满活力、去中心化的未来。 Edge & Node 由 The Graph 背后的初始团队创立,致力于去中心化互联网 (web3) 的进步和信任最小化应用程序的普及。该团队在开发和维护开源软件、工具和应用程序方面拥有丰富的经验。

Edge & Node 的初始产品是The Graph,一种用于查询以太坊和 IPFS 等网络的索引协议,可确保开放数据始终可用且易于访问。该图被数千种协议和 dapp 使用,包括 Uniswap、Livepeer、Aave、Decentraland 等。 Edge 和 Node 也推出珠穆朗玛峰 (Everest),第一个去中心化的链上数据注册中心,为加密社区提供持续的实用性,促进向 web3 的转变。

声明:

  1. 本文转载自[Edge & Node],著作权归属原作者[Nader Dabit],如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。
learn.articles.start.now
learn.articles.start.now.voucher
learn.articles.create.account