This PR adds a pruntime RPC named AllowHandoverTo. It allows the council members to sign a new version of pRuntime in order to enable them to hand over the key when pRuntime encounters issues syncing block data.
This is part of #1499.
Usage
Suppose we have two version of pRuntime A and B, where A is stucked, and we want to force handover to B.
SGX MR of A: 0x10c24c0e6bf8a86634417fcd8f934e62439c62907a6f1bc726906a50b054ddf10000000083d719e77deaca1470f6baf62a4d774303c899db69020f9c70ee1dfc08c7ce9e
SGX MR of B: 0xf42f7e095735702d1d3c6ac5fa3b4581d3c3673d3c5ce261a43fe782ccb3e1dc0000000083d719e77deaca1470f6baf62a4d774303c899db69020f9c70ee1dfc08c7ce9e
Genisis block hash: 0x0a15d23307d533d581291ff6dedca9ca10927c7dff6f4df9e8c3bf00bc5a6ded (Can be got via get_info)
Then the steps would be:
Ask at least half of the council members to sign a message as below:
Allow pRuntime to handover
from: 0x10c24c0e6bf8a86634417fcd8f934e62439c62907a6f1bc726906a50b054ddf10000000083d719e77deaca1470f6baf62a4d774303c899db69020f9c70ee1dfc08c7ce9e
to: 0xf42f7e095735702d1d3c6ac5fa3b4581d3c3673d3c5ce261a43fe782ccb3e1dc0000000083d719e77deaca1470f6baf62a4d774303c899db69020f9c70ee1dfc08c7ce9e
genesis: 0x0a15d23307d533d581291ff6dedca9ca10927c7dff6f4df9e8c3bf00bc5a6ded
This PR adds a pruntime RPC named AllowHandoverTo. It allows the council members to sign a new version of pRuntime in order to enable them to hand over the key when pRuntime encounters issues syncing block data.
This is part of #1499.
Usage
Suppose we have two version of pRuntime A and B, where A is stucked, and we want to force handover to B.
SGX MR of A: 0x10c24c0e6bf8a86634417fcd8f934e62439c62907a6f1bc726906a50b054ddf10000000083d719e77deaca1470f6baf62a4d774303c899db69020f9c70ee1dfc08c7ce9e SGX MR of B: 0xf42f7e095735702d1d3c6ac5fa3b4581d3c3673d3c5ce261a43fe782ccb3e1dc0000000083d719e77deaca1470f6baf62a4d774303c899db69020f9c70ee1dfc08c7ce9e Genisis block hash: 0x0a15d23307d533d581291ff6dedca9ca10927c7dff6f4df9e8c3bf00bc5a6ded (Can be got via get_info)
Then the steps would be:
Ask at least half of the council members to sign a message as below:
See https://files.kvin.wang:8443/signit/ for an example
Collect the signatures and assamble them into a rpc request like this:
Load the sigs.json to pruntime A
Run a new pruntime B instance to start the handover
$ ./gramine-sgx pruntime --request-handover-from http://localhost:8000