Skip to content

Instantly share code, notes, and snippets.

@u2
Last active February 21, 2019 02:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save u2/1c90a07c8a0889331f186f8cf6ef88ae to your computer and use it in GitHub Desktop.
Save u2/1c90a07c8a0889331f186f8cf6ef88ae to your computer and use it in GitHub Desktop.
SGX 演示流程

在这里演示下CITA SGX的隐私交易的处理流程。

当前以一个转帐合约为例,合约中存储的数据都是密文,SGX中存储了监管方的非对称私钥。

用户发送转帐交易中的金额为密文数据,SGX首先使用监管方的私钥解密出用户私钥,再使用用户的私钥解密出明文数据,

使用明文数据进行计算之后,再将结果使用用户的私钥加密,返回到区块链应用中。

整个解密,计算,加密过程都在SGX中进行,外部世界无法获取任何明文信息。

  1. 第一步初始化区块链合约和SGX

初始化的过程,会将我们事先准备好的隐私合约部署到区块链,并将监管方的私钥保存到SGX,监管方私钥加密后的用户用户私钥保存到区块链。

  1. 初始化账户

将用户A的账户余额的密文初始化金额保存到合约中,并将监管方加密过的用户对称私钥保存到SGX中。

此时链上保存的用户A的数据为密文数据。

  1. 查询A的账户余额

查询操作,是直接从链上读取存储的密文数据,只有A使用自己的对称私钥才能解密。

  1. A向B转帐

这里交易中的金额是经过A的私钥加密的金额。SGX通过前面介绍过的方式解密密文,并进行余额计算,将计算后的结果加密后返回给合约,合约保存加密后的结果。

  1. 查询最新余额

同样查询到的是密文,需要A和B各自使用自己的私钥解密并进行验证。

  1. 解密并验证金额
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment