分布式账号系统与数据主权回归个体

账号系统的构成如下:

  • SDK 可能包含多种版本,如 JAVA,js,go,python 等,提供用户调用账号系统的工具。社区所有的设计用户的功能都应该使用 SDK 调用账号系统。
  • Server 是账号系统的主要业务逻辑,也负责和数据库的交换以及链上调用的中间代理或者缓存
  • 数据层用于保存账号数据和权限信息(如果采用链,则数据在链上的智能合约中,数据库仅保存一些必要的辅助的管理数据,比如账号类型)

1. 背景与目标

1.1. 提出背景

技术服务于人,才有其价值,人在数据世界的抽象就是一个唯一 ID 加上其他一系列表征这个人的属性。密码以及其他如指纹、人脸等是验证当前操作主体与这个 ID 所代表的物理人的一致性。为了提升系统的适用性,这个 ID 代表的主体扩展到人之外,可以是某个组织、某个系统、某个 App 等,也可以是某个虚拟角色或者某个 AI 主体。在 Web3.0,数据的主权回归到个体的人本身,因此与该 ID 有关的属性及数值,都需要经过授权,才可以被另一个 ID 查看或者修改。

账号系统是其他所有系统的基础。需要提供 SDK 为其他服务提供使用上的便利。

1.1.1. 目标与内容

  • 账号主体包括人以外的实体,具备实体的扩展性
  • 属性不确定性,账号的属性具备扩展性,为了约束扩展性,特定实体可以包含某些必要的属性
  • 属性的访问与修改是受控的
    • 如果主体 A 对主体 B 的属性 X 具有写权限,那么必然包含读权限,反之不必然,即如果有读权限,则不一定拥有写权限
    • 主体 A 对自身的属性 X 不一定具有写权限
    • 除属性的读写权限外,增加属性,删除属性也是权限之一

2. 数据结构

数据对象

字段

账号类型(AccountType)

类型名称[char[256],类型 ID[long],必要的属性字段,密码

账号(Account)

账号 ID,账号类型[数组],是否允许密码登录,手机号(非必填)

属性值(AttributeValue)

账号 ID,属性 ID,属性值(数值加密)

属性(Attribute)

属性 ID,属性名称,归属类型,属性取值类型[address, number, char[256]],默认权限(r/w)

权限(Permission)

账号 ID,属性ID,授权 ID,授予权限(r,w,r/w,禁r,禁w)

SBT

名称,合约地址,图标

使用数值表示权限:

1000: 读权限 8

0010:写权限 2(不存在)

1010: 读写权限 10

x1x1: 禁止读写 15,5,7,13

x0x1: 禁止写 1,3,9,11

x1x0: 禁止读 4,6,12,24

所有账号都有的基础属性:积分,贡献分,持有的 SBT 列表

3. 核心接口

账号类型

增改查

属性

增改查

权限

授权,取消授权,增加属性授权(属性名称,属性说明)

SBT

增改查,绑定给某个账号

账号

账号登记,登录(密码登录,密钥登录)

4. 核心业务逻辑

4.1. 登录

左侧为密码,右侧为密钥登录

4.2. 授权

业务系统也需要为自己创建地址和私钥。启动时,使用私钥登录账号系统,获取 APP Token。在用户登录账号系统获得 User Token 后,业务系统检查改用户是否已经授权了必要的属性访问权限。如果未授权,则在客户端唤起授权对话框,用户操作同意后,业务系统提交到账号系统进行授权。

5. 设想

授权收费,App 要获得属性数据授权,必需转一笔积分给用户以及该属性的提供者,通用属性,则只转给用户

账号是区块链地址,每个属性都是一份智能合约,将属性授权给某个地址,该地址需要支付属性合约所有者和属性所有者一笔积分,(也支付节点一些积分)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值