Encapsulate Metadata as a Header Rather than Inlining Before Payload
Problem
Provide better encapsulation so that it is easier to add new message header fields in the future (Spoiler Alert: new header fields will be defined below ).
Proposal
Rather than an ETH wire message being MessageCode || Payload replace MessageCode with Header, where
Header
is a list [ MessageCode || Metadata-0 || ... lt Metadata-N ]
Packet is [ Header || Payload ]
where Payload
conforms to the specification mandated for theMessageCode
in the header.