2023-3-22 使用智能合约创建数字孪生体,并实现访问控制


思考:使用智能合约和DHT,而不使用中心化后台和数据库的情况下,如何创建数字孪生体?

  • 智能合约可以看作是一个计算工具,当作后台使用,可以进行逻辑处理和存储简单的数据。
  • DHT可以看作一个文件服务器,用于存储智能合约无法存储的大型数据。

创建数字孪生体的步骤?

  1. 对称加密(AES_key)数字孪生体的数据,并上传到DHT,并返回DHT_key。
  2. 创建两个智能合约:
    1. spec智能合约,用户存放数字孪生体的元数据,包括上面DHT_key。
    2. auth智能合约,存放数字孪生体的role和permission,并初始化权限设置。
  3. 将用户的公钥+AES_key加密,并根据用户地址生成访问权限数组,存入DHT。

如何进行访问控制?

我们以查询为例:

  1. 调用spec合约,查询到需要访问的数字孪生体的合约地址。
  2. 调用auth智能合约,根据访问用户的地址查询是否拥有访问权限。
  3. 有权限,则根据spec合约查询数字孪生体的DHT_key。
  4. 根据DHT_key下载数字孪生体数据集。
  5. 从DHT上下载访问权限数组,找到自己的数据,私钥解密成AES_key。
  6. 使用AES_key解密数字孪生体数据。

创建数字孪生体

查询数字孪生体

访问控制智能合约