Privacy Content
基于Semantic SBT和Lit Protocol实现隐私数据分享,用户可以给满足指定条件的地址分享自己的隐私数据。
使用Lit Protocol对数据进行加密与解密,Arweave存储密文、加密后的密钥以及分享条件,Semantic SBT用于存储arweave的哈希以及定义分享条件。
分享的条件可以设置成:
EOA地址
拥有特定集合NFT的用户
拥有特定SBT的用户
拥有一定 ERC20 代币余额的用户
Schema
隐私数据分享的schema模版,schema以ttl文件的形式保存至Arweave,交易哈希将作为schemaURI,在初始化合约时传入,参数示例:
ar://DeM6LRONjAUYr3qixkguLuFvYSHkykN7ZRKHn2HR5Gsschema由以下三部分组成:
schema 前缀列表
PREFIX : <http://relationlabs.ai/entity/>
PREFIX p: <http://relationlabs.ai/property/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>Class
Soul用于表示地址实体
Predicate
谓词p:privacyData表述隐私数据
合约
完整的实现合约代码可访问:
隐私数据分享流程
加密
将待分享的隐私数据,通过Lit Protocol进行加密,并将加密结果(accessCondition、encryptedSymmetricKey、encryptedObject)封装成encryptMetaDada上传至存储层(arweave等),得到encryptMetaDada的地址。
encryptMetaDada格式如下:
Mint隐私SBT
基于Semantic SBT规范实现一个PrivacySemanticSBT合约,mint一个带隐私数据的SBT。其中该SBT的RDF中的object为arweave/ipfs的地址。
SemanticSBTPrivacy合约方法调用流程
完整的RDF示例如下:
encryptedObject的组成
web3存储系统,比如:
ar://或ipfs://web3存储的哈希
encryptedObject示例:
解密
解密方从SBT的object中获取encryptMetaDada。调用LitProtocol的解密方法,即可解密得到明文的object。
AccessConditions
允许设置不同类型的访问条件,来控制用户访问隐私数据。
用户拥有特定的钱包地址
如果解密者拥有指定的钱包地址,则有权限解密隐私数据。
用户持有NFT集合的token
如果解密者拥有指定NFT集合的token,则有权限解密隐私数据。
用户持有NFT集合的Token
如果解密者拥有指定SBT集合的token,则有权限解密隐私数据。
用户持有至少XX个ERC20 Token
如果解密者拥有指定数量的ERC20token,则有权限解密隐私数据。
可以使用AND或OR任意组合上述条件
Last updated