hashgraph / hashgraph/hedera-hcs-sxc-java
Add metadata parameter to application-message
- Dominant language
- Java
- Stars
- 20
- Forks
- 9
- PR merge metrics
- No merged PRs in 30d
Description
**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.
Contributor guide
Assessment
This issue has not been assessed yet.