NameService 合约请求示例

使用Relation Protocol部署好的Relation NameService合约,可以实现用户身份数据的存储与查询。Relation NameService合约是对Contract Standard里Name Service的实现。

构建Contract对象

NameService的合约地址以及abi文件可以查询Relation Protocol资源列表获得,通过ethers构建Contract对象:

import { ethers, providers } from 'ethers'

const getContractInstance = () => {
  // 合约地址
  const contractAddress = '0x0D195ab46a9C9C4f97666A76AADb35d93965Cac8'
  const provider = new providers.Web3Provider(window.ethereum)
  const signer = provider.getSigner()
  const contract = new ethers.Contract(contractAddress, abi, signer)
  return contract
}

调用合约方法

  1. 注册名称

register可以由用户调用给自己注册,也可以由管理员指定的minter用户给其他用户注册。且注册的同时,可以选择是否设置解析,设置解析的名称,则可以直接通过addr和nameOf方法查到名称与地址的映射关系。

我们给出其中两个示例供参考:

  • 给自己注册名称。注册并设置解析

  • minter用户给指定的地址进行注册。仅注册,不设置解析

  1. 查询用户持有的名称列表

通过遍历用户的token可以获得名称列表

  1. 设置名称解析

用户对自己持有且未设置解析的名称,进行设置解析操作。设置解析之后,则token将无法进行transfer

  1. 查询名称映射的地址

设置解析之后的名称,可以通过addr查询出其映射的地址

  1. 查询地址映射的名称

设置解析之后,可以通过nameOf查询出地址映射的名称

  1. 设置profileURI

用户可以将自己的头像信息上传到Arweave,其中json格式为

上传后得到的交易哈希,作为profileURI,存储至合约中

  1. 查询用户的profileURI

Last updated