Arweave 账户

  • PermaDAO
  • 更新于 2023-08-17 21:56
  • 阅读 1089

Arweave 帐户是 Arweave 上一个可组合和可定制的配置文件协议(DID)。它依赖于本地网关的操作来写入和检索用户数据。

3.png

Web3 正在加速发展,Arweave 作为基础设施将被更多的开发者采用,创造一个全新的、更加丰富多彩的生态系统。 PermaDAO 正是为此而建立起来的共建者社区。所以参与的人都能在这里找到自己的角色来贡献 Arweave 生态,任何关于 Arweave 的提案与任务都可以发布于此,并得到整个社区的支持与回馈。 加入 PermaDAO,建设 Web3!

翻译自愿者:Scarlett LI @ Contributer of PermaDAO 审校自愿者:Xiaosong HU @ Contributer of PermaDAO


Arweave 账户

此 npm 包与 permadapp 帐户(详情请点击 Account)配对。

Arweave 帐户是 Arweave 上一个可组合和可定制的配置文件协议(DID)。它依赖于本地网关的操作来写入和检索用户数据。

谁使用它

以下是生态系统中不同应用程序显示的相同配置文件的一些示例: 您知道使用 Arweave 帐户的应用程序吗?可以通过 PR 将其添加到列表中❤️

文档

如果您是第一次尝试arweave-account,我们建议您尝试交互式文档(详情请点击interactive documentation)。

如果您想更深入地了解 arweave 帐户,那么您来对地方了

安装和导入

安装

npm install arweave-account

用法

import Account from 'arweave-account'

const account = new Account();

如果您使用的是 Typescript,请参阅 Typescript 导入部分。

基本用法

通过钱包地址获取用户资料

await account.get(walletAddr);

按用户名搜索用户资料

await account.search(handle);

通过钱包地址和用户名查找用户资料

await account.find(handle#uniqID);

示例:显示用户的头像、用户名和简介

import Account from 'arweave-account'

const account = new Account()

(async () => {
  const user = await account.get(await arweaveWallet.getActiveAddress())

  setHandle(user.handle);
  setAvatar(user.profile.avatarURL);
  setbio(user.profile.bio);
})()

创建/更新流程

使用上述 3 种方法,您可以显示任何 arweave 帐户,甚至不需要您的用户拥有 Arweave 的钱包。您的用户可以使用永久应用程序(详情请点击 permanent application)来创建和更新他们的 arweave 帐户资料。此外,我们还提供了一个重定向链接(详情请点击redirection link),可以将您的用户带到最新部署的 permadapp 版本。

什么是永久申请?(详情请点击 What is a permanent application?

请随意将您自己的重定向链接与您自己的品牌联系起来,或创建一个问题来增强入职流程,以便每个人都能从中受益。

不过,如果您想在您的应用程序arweave-account中实施自己的加入流程,请参阅以下高级用法部分。

高级用法

连接用户钱包

await account.connect(jwk?);

如果没有传递参数,帐户将使用注入的 arweaveWallet对象。在这种情况下,请确保您在调用此方法之前已使用正确的权限处理了钱包连接流,以避免任何意外行为。

创建/更新 arweave 帐户资料

await account.updateProfile(profileObj);

确保之前调用了connect()

示例:更新用户的用户名和简介

如果用户没有帐户,它将创建帐户。

import Account, {ArAccount} from 'arweave-account'

const account = new Account()

(async () => {
  const user: ArAccount = await account.get(await arweaveWallet.getActiveAddress())

  displayProfile(user.profile);

  await account.connect();
  user.profile.handleName = "DMac"
  user.profile.bio = "Accelerating the worlds transition to decentralized messaging"
  await account.updateProfile(user.profile)
})()

注意

高级用法仅与使用 dispatch() 注入arweaveWallet对象的钱包兼容。

如果您希望兼容更多钱包,请随时在此处展开讨论(问题)或在 discord 上私信我:cromatikap#6039

参考

Typescript导入

import { ArAccount, ArProfile } from 'arweave-account';

Ar 账户对象

当获取帐户信息时,库通过网关请求相关事务,对存储的信息进行解码,并返回按以下方式格式化的帐户对象:

Ar资料对象

avatarbanner 属性

avatar和 banner等图像属性可以引用来自不同链的 NFT。支持以下协议:

  • http://
  • https://
  • ar://

如果您希望添加其他协议,我们很乐意这样做。请随时与我们联系!

❣️ 此外,Metaweave 团队为合并的 Pull Requests 提供资助。

对于每个图像属性,都会根据提供的原始 URI 生成一个https URL。您可以使用后缀 URL 访问它。

例如:

数据协议

Account 是 Arweave 上的一个简单的原生数据协议。它由一个包含最新数据状态的简单事务组成。钱包密钥附加到其自己的最新写入,标签为 Protocol-Name: 'Account-<version>'

例如:

使用 ArQL(详情请点击ArQL) 请求最新更新的帐户资料

{
  transactions(
    first: 1
    tags: [{name:"Protocol-Name",values:"Account-0.2"}]
  ) {
    edges {
      node {
        id
        owner {
          key
          address
        }
        tags {
          name
          value
        }
        block {
          timestamp
        }
      }
    }
  }
}

数据架构

在 arweave 账户协议中,一组代表用户配置文件的数据被编码存储在交易中,并解码为 ArAccount类型的对象。

以下是钱包 aIUmY9Iy4qoW3HOikTy6aJww-mM4Y-CUJ7mXoPdzdog的编码和解码账户数据集示例:

编码的 arweave 账户数据(写在链上)

{
  "handle":"cromatikap",
  "avatar": "ar://xqjVvn9b8hmtDJhfVw80OZzAsn-ErpWbaFCPZWG5vKI",
  "banner": "ar://a0ieiziq2JkYhWamlrUCHxrGYnHWUAMcONxRmfkWt-k",
  "name":"Axel",
  "bio":"Founder of Metaweave.xyz\nI love dogs",
  "links": {
    "twitter":"cromatikap",
    "github":"cromatikap",
    "instagram":"cromatikap",
    "discord":"cromatikap#6039",
    "linkedin": "",
    "facebook": "",
    "youtube": "",
    "twitch": ""
  },
  "wallets": {
    "eth": "0xeEEe8f7922E99ce6CEd5Cb2DaEdA5FE80Df7C95e"
  }
}

解码后的 arweave 帐户数据

以下是使用库获得的数据集

{
  "txid": "NPJJoq-9EwUeAce_bSbSyqICaGs4_7Hg6VxCyoCY8UQ",
  "addr": "aIUmY9Iy4qoW3HOikTy6aJww-mM4Y-CUJ7mXoPdzdog",
  "handle": "cromatikap#aIUdog",
  "profile": {
    "avatar": "ar://xqjVvn9b8hmtDJhfVw80OZzAsn-ErpWbaFCPZWG5vKI",
    "avatarURL": "https://arweave.net/xqjVvn9b8hmtDJhfVw80OZzAsn-ErpWbaFCPZWG5vKI",
    "banner": "ar://a0ieiziq2JkYhWamlrUCHxrGYnHWUAMcONxRmfkWt-k",
    "bannerURL": "https://arweave.net/a0ieiziq2JkYhWamlrUCHxrGYnHWUAMcONxRmfkWt-k",
    "handleName": "cromatikap",
    "name": "Axel",
    "bio": "Founder of Metaweave.xyz\nI love dogs",
    "links": {
      "twitter": "cromatikap",
      "github": "cromatikap",
      "instagram": "cromatikap",
      "discord": "cromatikap#6039",
      "linkedin": "",
      "facebook": "",
      "youtube": "",
      "twitch": ""
    },
    "wallets": {
      "eth": "0xeEEe8f7922E99ce6CEd5Cb2DaEdA5FE80Df7C95e",
    }
  }
}

为了方便起见,添加了相关的txid和钱包addr。此外,您还可以访问从用户选择的用户名及其钱包地址派生的完整唯一handle

从 1.2.5 迁移到 1.3.x

1、唯一用户名(名称#xxxxxx)位于帐户级别

account.profile.handle  -> account.handle

从用户选择的用户名及其钱包地址派生的唯一用户名现在可以在account级别访问。

account.profile对象中,有一个新的属性handleName可用,它仅构成用户名的名称部分。

2、URL 资源自动生成

您不再需要从 avatar属性制作 URL。该库现在提供可在任何标准标签中使用的 URL。

关于 PermaDAOWebsite | Twitter | Telegram | DiscordMediumYoutube

0.png

点赞 0
收藏 0
分享
该文章收录于 Arweave 技术专栏
17 订阅 40 篇文章

0 条评论

请先 登录 后评论
PermaDAO
PermaDAO
0x40F9...8718
Arweave 生态系统的共建者 DAO。 @ArweaveEco will be adopted by more developers. All projects of Arweave ecology can post their tasks and rewards here. @everVisionHQ@permaswap@ArweaveSCP