Does the Graphene protocol make use of a shared secret key by the set of block producing witnesses in each round? If yes, please describe the protocol for generating the shared secret key and what current and potential function(s) is served by its use. References within the code are also appreciated.