Dao 合约请求示例

我们使用Relation Protocol部署好的DaoRegister合约,可以为用户创建Dao合约。Dao合约可以实现对Dao成员的管理。DaoRegister与Dao合约均实现了Contract Standard定义的合约接口。

构建Contract对象

DaoRegister和DaoWithSign的合约地址、abi文件,以及Dao合约的abi文件可以查询Relation Protocol资源列表获得,Dao合约的地址需要通过DaoRegister查到。

  • 构建DaoRegisterContract对象:

import { ethers, providers } from 'ethers'

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

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

调用合约方法

DaoRegister

  1. 部署Dao合约

  1. 查询用户创建的dao列表

遍历用户在DaoRegister合约上持有的token,即可以得到用户创建的dao列表

  • 构建DaoContract对象

Dao

  1. 查询Dao的管理员

  1. 设置DaoURI

Dao的管理员可以给Dao添加描述以及头像,将描述和头像存放在Arweave上,内容格式为:

上传的交易哈希,作为DaoURI存储至合约里

  1. 查询DaoURI

  1. 修改Dao的名称

管理员可以给修改Dao的名称

  1. 查询Dao的名称

  1. 管理员添加Dao成员

管理员可以将指定的地址加入到Dao中

  1. 设置开发加入

管理员可以将Dao设置为开放加入,即任何用户均可加入dao。

  1. 用户加入Dao

在管理员设置了开发加入后,用户可自行加入Dao

  1. 移除Dao成员

管理员可以移除Dao的成员,普通用户也可自行离开Dao

  1. 查询Dao成员列表

通过遍历Dao的所有token owner,可以得到完整的Dao成员列表

  1. 设置DaoURI(代付Gas费)

Dao的管理员可以给Dao添加描述以及头像,将描述和头像存放在Arweave上,内容格式为:

管理员对上传后得到的交易哈希数据进行签名,构建上链参数。任意地址可携带此上链参数发起交易,Gas费由发起交易的地址支付。

  1. 管理员添加Dao成员(代付Gas费)

管理员可以将指定的地址加入到Dao中

  1. 设置开放加入(代付Gas费)

管理员可以将Dao设置为开放加入,即任何用户均可加入dao。

  1. 用户加入Dao(代付Gas费)

在管理员设置了开发加入后,用户可自行加入Dao

  1. 移除Dao成员(代付Gas费)

管理员可以移除Dao的成员,普通用户也可自行离开Dao

Last updated