Search code examples
cordasgx

Transaction resolution using Intel SGX


According to this post from Mike Hearn:

https://www.corda.net/2017/06/corda-sgx-privacy-update/

in the transaction resolution process, I understand that in a transaction between a proposer A and party B:

  1. Proposer A sends the transaction to Party B
  2. Party B needs the transaction chain to validate the transaction, so asks for it (the transaction history) to Party A
  3. After the enclave and secure channel established, enclave on Party A sends the transaction history encrypted to the enclave on Party B
  4. Enclave on Party B decrypts it and validates the transaction

From now, suppose Party B is the proposer for a new transaction with Party C, using the UTXO from the previous transaction. As Party C will need all transaction history, how does it work? In the previous transaction, once it is validated, is the transaction chain stored encrypted on Party B (for subsequent transactions)?

If it's not clear, please, let me know to try to explain better the scenario.

Thanks


Solution

  • Yes - the resolved transaction chain is stored in encrypted form on Party B's node. This is for two reasons: 1. Party B may need it for future transaction resolutions - otherwise it would have to download a ton of stuff again 2. Party B may need to present the chain to Party C later on, as you suggest

    Does this mean that every node has to run SGX? In our initial design, yes. But in the future we may investigate how an enclave can convince a non-SGX node that a transaction chain is legit.