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
部署Dao合约
查询用户创建的dao列表
遍历用户在DaoRegister合约上持有的token,即可以得到用户创建的dao列表
构建DaoContract对象
Dao
查询Dao的管理员
设置DaoURI
Dao的管理员可以给Dao添加描述以及头像,将描述和头像存放在Arweave上,内容格式为:
上传的交易哈希,作为DaoURI存储至合约里
查询DaoURI
修改Dao的名称
管理员可以给修改Dao的名称
查询Dao的名称
管理员添加Dao成员
管理员可以将指定的地址加入到Dao中
设置开发加入
管理员可以将Dao设置为开放加入,即任何用户均可加入dao。
用户加入Dao
在管理员设置了开发加入后,用户可自行加入Dao
移除Dao成员
管理员可以移除Dao的成员,普通用户也可自行离开Dao
查询Dao成员列表
通过遍历Dao的所有token owner,可以得到完整的Dao成员列表
设置DaoURI(代付Gas费)
Dao的管理员可以给Dao添加描述以及头像,将描述和头像存放在Arweave上,内容格式为:
管理员对上传后得到的交易哈希数据进行签名,构建上链参数。任意地址可携带此上链参数发起交易,Gas费由发起交易的地址支付。
管理员添加Dao成员(代付Gas费)
管理员可以将指定的地址加入到Dao中
设置开放加入(代付Gas费)
管理员可以将Dao设置为开放加入,即任何用户均可加入dao。
用户加入Dao(代付Gas费)
在管理员设置了开发加入后,用户可自行加入Dao
移除Dao成员(代付Gas费)
管理员可以移除Dao的成员,普通用户也可自行离开Dao
Last updated