PrivacyContent 合约请求示例

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

构建Contract对象

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

import {ethers, providers} from 'ethers'

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

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

调用合约方法

用户自付gas费

  1. 预生成token

用户需要预生成token,在调用post方法时传入预生成的tokenId。当用户调用post方法,会消耗掉预生成的token。

  1. 查询用户预生成的token

  1. 发布内容

预生成token之后,才能发布内容。用户需要通过Lit Protocol进行数据加密,然后将需要发布的内容上传至Arweave,内容格式为:

上传后得到的交易哈希,作为content记录至合约中

  1. 将内容分享给我的follower

用户可以将上传的隐私数据分享给follower,需要指定tokenId以及要分享的Follow合约地址。为了避免出现循环次数过多引发查询异常,合约内限制最多分享20个Follow合约地址

  1. 将内容分享给指定的Dao

用户可以将上传的隐私数据分享给指定的Dao,那么所有的Dao成员将可以通过Lit Protocol解密出隐私数据。为了避免出现循环次数过多引发查询异常,合约内限制最多分享20个Dao合约地址

  1. 查询tokenId已分享的Follow合约地址列表

通过sharedFollowAddressCount 和 sharedFollowAddressByIndex方法可以遍历出tokenId已分享的Follow合约地址列表

  1. 查询tokenId已分享的Dao合约地址列表

通过sharedDaoAddressCount 和 sharedFDaoAddressByIndex方法可以遍历出tokenId已分享的Follow合约地址列表

  1. 查询用户发布的内容列表

遍历出用户的token列表,即可得到其发布的内容列表

  1. 预生成token(代付Gas费)

用户对数据进行签名,构建上链参数。任意地址可携带此上链参数发起交易,Gas费由发起交易的地址支付。

  1. 发布内容(代付Gas费)

用户上传内容到Arweave,对数据进行签名,构建上链参数。任意地址可携带此上链参数发起交易,Gas费由发起交易的地址支付。

  1. 将内容分享给我的follower(代支付Gas费)

用户对需要分享的tokenId以及Follow合约地址进行签名,构建上链参数。任意地址可携带此上链参数发起交易,Gas费由发起交易的地址支付。

  1. 将内容分享给指定的dao(代支付Gas费)

用户对需要分享的tokenId以及dao合约地址进行签名,构建上链参数。任意地址可携带此上链参数发起交易,Gas费由发起交易的地址支付。

Last updated