hedera-hcs-sxc-java icon indicating copy to clipboard operation
hedera-hcs-sxc-java copied to clipboard

Add metadata parameter to application-message

Open tim-mchale opened this issue 4 years ago • 0 comments

Problem There is a need to be able to optionally append implementation-specific data to an application-message independent of the current businessProcessMessage payload.

Solution Modifications to /hcs-sxc-java-proto/src/main/proto/Messages.proto

Add:

import "google/protobuf/any.proto"

Modify application-message to:

ApplicationMessageID applicationMessageId = 1;
    bytes businessProcessMessage = 2;  // the payload
    bytes unencryptedBusinessProcessMessageHash  = 3;
    bytes businessProcessSignatureOnHash  = 4;
    bytes encryptionRandom = 5;  // random number used for ivspec. it doubles as a flag to test if message is encrypted
    google.protobuf.Any metadata = 6; // container for extensibility and/or inclusion of filtering criteria
    bytes metadataHash = 7;
    bytes metadataSignatureOnHash = 8;
}

The additional metadataHash and metadataSignatureOnHash are included to support discretionary proof after the fact on metadata if included; this mechanism is identical to that which is currently implemented on businessProcessMessage.

Additional Context

  • This modification allows external references to be added to simplify correlation with external systems using their own identifiers.
  • In addition, data can be included to allow more granular filtering on a modified mirror-node to reduce message processing requirements on appnet participants subscribed to that mirror-node. This is of particular value if the businessProcessMessage is encrypted.
  • Care must be taken to avoid inclusion of any PII data inside the metadata parameter.

tim-mchale avatar Apr 21 '20 11:04 tim-mchale