In Hedera Services v0.13.2, we have redesigned scheduled transactions. The new design gives collaborating nodes a well-defined workflow if they happen to schedule identical transactions, even if they are using different gRPC client libraries (for example, Go and JavaScript). The new design also reduces the number of signatures required to submit a valid ScheduleSign
transaction in many common use cases. Users will be able to schedule CryptoTransfer and ConsensusSubmitMessage transactions in this release. Other transaction types will be introduced in future releases.
This release deprecates three fields in the protobuf for system files 0.0.101
and 0.0.102
. The three deprecated fields are ipAddress
, portno
, and memo
. When we rely on these fields, we cannot concisely represent node with multiple IP addresses. For example, take mainnet node 0 (account 0.0.3
), which as of this writing has proxy IPs 13.82.40.153
, 34.239.82.6
, and 35.237.200.180
. The mainnet 0.0.101
file must include a NodeAddress
entry for each proxy, which means duplicating fields like nodeCertHash
.
The new protobuf avoid this duplication, letting us represent node 0 in a protobuf equivalent of,
{
"nodeId" : 0,
"certHash" : "337390d8fea144afc12e81254a28dac6ea82893836ac072effd85e0a7748580ef28096648c5a7f8dbb4ce81476815137",
"nodeAccount" : "0.0.3",
"serviceEndpoints" : [ {
"ipAddressV4" : "13.82.40.153",
"port" : 50211
}, {
"ipAddressV4" : "34.239.82.6",
"port" : 50211
}, {
"ipAddressV4" : "35.237.200.180",
"port" : 50211
} ]
}
However, Services will continue to populate the deprecated fields in duplicate entries for six months, to give all consumers of files 0.0.101
and 0.0.102
time to prepare for exclusive use of the new format. After six months, we will eliminate the duplication and the ipAddress
, portno
, and memo
fields will be left empty. (The fields will never be removed to ensure it remains possible to parse early versions of these system files.)
In a minor point, Services now rejects any protobuf string
field whose UTF-8 encoding includes the zero-byte character; that is, Unicode code point 0, NUL
. Databases (for example, PostgreSQL) commonly reserve this character as a delimiter in their internal formats, so allowing it to occur in entity fields can make life harder for Mirror Node operators.
To simplify tasks for network admins, we have also streamlined the signing requirements for updates to system accounts, and introduced a Docker-based utility called "yahcli" for admin actions such as updating system files.
Enhancements
- Redesign scheduled transactions #1177
- When updating a system account's key, if the account's signature is waived, also waive signing with new key #1148
- Basic implementation of yahcli, e.g. #1176
Protobuf deprecations
- Three
NodeAddress
fields, to be replaced by a richerServiceEndpoint
message #750
Bug fixes
- Re-institute policy of exporting account balances every 15 minutes since the epoch #1142
- Abort signing of resolved schedules #1303
- Update default throttles packaged as throttles.json in JAR to desired values #1312
Contributors
We'd like to thank all the contributors who worked on this release!