code: func (r *Request) MarshalJSON() (rawData []byte, err error) {
  	var signatureString, dataString string
  	if r.Signature != nil {
  		signatureString = hexutil.Encode(r.Signature[:])
  	}
  	if r.data != nil {
  		dataString = hexutil.Encode(r.data)
  	}
  
  	requestJSON := &updateRequestJSON{
  		ID:              r.ID,
  		ProtocolVersion: r.Header.Version,
  		Data:            dataString,
  		Signature:       signatureString,
  	}
  
  	return json.Marshal(requestJSON)
  }
docs: // MarshalJSON takes an update request and encodes it as a JSON structure into a byte array
  // Implements json.Marshaler interface