本体技术视点 | 如何运用数字身份进行转账?

2020-06-23 15:12:32 浏览数 (1)

01

引言

众所周知,ONT ID 是用户自治的身份,用户通过 ONT ID 可以管理自己的相关身份数据,比如 CFCA 的身份认证信息等。广泛来看,用户拥有的地址和数字资产也是用户的数据之一。

图 | 网络

同一个用户会拥有很多的地址和对应的资产,比如 Alice 可能拥有 ONT、ETH 和 BTC 等资产。那么我们如何通过 ONT ID 来进行这些数字资产的转账?

02

实现方法

接下来,我们将以 Celo 地址为例,介绍通过 ONT ID 进行 Celo 链上数字资产转账的两种方法。(https://celo.org/)

2.1 在本体链上将 ONT ID 和 Celo Address 绑定

基本理念:

在本体链上,用户可以将自己的 ONT ID 和 Celo 地址绑定,如此一来转账时可以直接根据 ONT ID 来进行转账,而不用找 ONT ID 的所有者确认 Celo 的转账地址。

主要步骤:

1. 在本体网络中部署 ONT ID X Celo 合约,该合约用于绑定和解绑 ONT IDCelo Address

2. 用户需要先注册 ONT ID,并保存好对应的秘钥;

3. 用户调用 ONT ID X Celo 合约提出绑定 ONT ID 和 Celo Address 的请求,该交易同时需要 ONT ID 的签名和 Celo Address 的签名;

4. ONT ID X Celo 合约验证 Celo Address 的签名,并调用本体网络中的 ONT ID 系统合约,验证 ONT ID 的签名,验证成功后将要绑定的 Celo Address 加入地址簿中,序列化后调用 ONT ID 系统合约 addAttributes 方法将地址簿存入 ONT ID document 的 Attribute 字段中;

5. 用户可以在转账时只填写接收人的 ONT ID,不必和接收人确认接收地址;

6. ONT ID X Celo 合约根据用户填入的 ONT ID,调用本体网络中的 ONT ID 系统合约的 getAttributes 方法,获取 ONT ID 的属性,从属性中解析出绑定的 Celo 地址簿;

7. 地址簿中的第一个地址为默认地址;

8. 向地址簿中添加地址同时需要 ONT ID 和 Celo Address 的签名;

9. ONT ID X Celo 合约支持移除地址簿中的地址,更改地址簿中的默认地址等,这些交易只需要 ONT ID 的签名。

2.2 在 Celo 网络中将 ONT ID 和 Celo Address 绑定

基本理念:

在 Celo 网络中,允许用户将自己的 ONT ID 和 Celo address 绑定,这样用户在转账时可以直接根据 ONT ID 来进行转账,而不用找 ONT ID 的所有者确认转账地址。同时,采用 Oracle 技术实现 Attestation Service,来验证 ONT ID 的签名是否正确。

主要步骤:

1. 在 Celo 网络中部署 ONT ID 合约,该合约用于绑定和解绑 ONT ID 和 Celo Address;

2. 用户需要先在注册 ONT ID,并保存好对应的秘钥;

3. 用户向 Celo 网络中的 ONT ID 合约提出绑定 Celo Address 和 ONT ID 的请求,该交易需要 Celo Address 的签名并附带 ONT ID 的签名消息;

4. Celo 网络的 ONT ID 合约验证 Celo Address 的签名,确认 Celo Address 的所有权。并推出验证 ONT ID 签名的事件,将附带的 ONT ID 签名消息推出;

5. Attestation Service 监听到验证 ONT ID 签名的事件,将附带的签名消息发送到本体网络,获取验签结果;

6. Attestation Service 将验签结果发送到 Celo 网络的 ONT ID 合约中。

7. Celo 网络的 ONT ID 合约收集到足够的验签结果后,实现 Celo Address 和 ONT ID 的绑定;

8. 用户可以在转账时填写接收人的 ONT ID,这样就不必和接收人确认接收地址。

03

总结

采用第二种方法实现时,要求目标网络支持智能合约。我们在上面例子中 ONT ID 绑定了一个地址,现实中也可以绑定多个地址,并设置接收和发送 Token 的默认地址。同时,ONT ID 可以绑定邮箱、电话号码和 GitHub 等社交账号,实现通过邮箱、电话号码或者社交账号来进行转账,大大增强转账的便捷性和健壮性。

图 | 网络

0 人点赞