hedera-hcs-sxc-java
hedera-hcs-sxc-java copied to clipboard
Add metadata parameter to application-message
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.