Variants of BlockchainProtocol and V10Documents should use Box to limit size of the common data structure
Rust enum acts like C unions, and a space large enough to contain any of the possible variant is allocated. By using Box, we're using a pointer approach by moving this sized data outside of the enums.