在这里演示下CITA SGX的隐私交易的处理流程。
当前以一个转帐合约为例,合约中存储的数据都是密文,SGX中存储了监管方的非对称私钥。
用户发送转帐交易中的金额为密文数据,SGX首先使用监管方的私钥解密出用户私钥,再使用用户的私钥解密出明文数据,
使用明文数据进行计算之后,再将结果使用用户的私钥加密,返回到区块链应用中。
整个解密,计算,加密过程都在SGX中进行,外部世界无法获取任何明文信息。
- 第一步初始化区块链合约和SGX
初始化的过程,会将我们事先准备好的隐私合约部署到区块链,并将监管方的私钥保存到SGX,监管方私钥加密后的用户用户私钥保存到区块链。
- 初始化账户
将用户A的账户余额的密文初始化金额保存到合约中,并将监管方加密过的用户对称私钥保存到SGX中。
此时链上保存的用户A的数据为密文数据。
- 查询A的账户余额
查询操作,是直接从链上读取存储的密文数据,只有A使用自己的对称私钥才能解密。
- A向B转帐
这里交易中的金额是经过A的私钥加密的金额。SGX通过前面介绍过的方式解密密文,并进行余额计算,将计算后的结果加密后返回给合约,合约保存加密后的结果。
- 查询最新余额
同样查询到的是密文,需要A和B各自使用自己的私钥解密并进行验证。
- 解密并验证金额