Arweave 帐户是 Arweave 上一个可组合和可定制的配置文件协议(DID)。它依赖于本地网关的操作来写入和检索用户数据。
Web3 正在加速发展,Arweave 作为基础设施将被更多的开发者采用,创造一个全新的、更加丰富多彩的生态系统。 PermaDAO 正是为此而建立起来的共建者社区。所以参与的人都能在这里找到自己的角色来贡献 Arweave 生态,任何关于 Arweave 的提案与任务都可以发布于此,并得到整个社区的支持与回馈。 加入 PermaDAO,建设 Web3!
翻译自愿者:Scarlett LI @ Contributer of PermaDAO 审校自愿者:Xiaosong HU @ Contributer of PermaDAO
此 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资料对象
avatar
和 banner
等图像属性可以引用来自不同链的 NFT。支持以下协议:
如果您希望添加其他协议,我们很乐意这样做。请随时与我们联系!
❣️ 此外,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"
}
}
以下是使用库获得的数据集
{
"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、唯一用户名(名称#xxxxxx)位于帐户级别
account.profile.handle
-> account.handle
从用户选择的用户名及其钱包地址派生的唯一用户名现在可以在account
级别访问。
在 account.profile
对象中,有一个新的属性handleName
可用,它仅构成用户名的名称部分。
2、URL 资源自动生成
您不再需要从 avatar
属性制作 URL。该库现在提供可在任何标准标签中使用的 URL。
关于 PermaDAO:Website | Twitter | Telegram | Discord| Medium | Youtube
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!