In Hedera Services v0.9.0, we finished the alpha implementation of the Hedera Token Service (HTS). Note that all HTS operations are enabled on Previewnet, but remain disabled on Testnet and Mainnet. Please consult the SDK documentation for HTS semantics.
We made several changes to the HAPI protobuf. First, we removed the deprecated SignatureList
message type. Second, we added a top-level signedTransactionBytes
field to the Transaction
message to ensure deterministic transaction hashes; the top-level bodyBytes
and sigMap
fields are now deprecated and the already-deprecated body
field is removed. Third, we deprecated all fields related to non-payer records, include account send and receive thresholds. This followed from the effective removal of non-payer records in v0.8.1.
For the same reason, the semantics of the CryptoGetRecords
and ContractGetRecords
queries have also changed. The only queryable records are now those granted to the effective payer of a transaction that was handled while the network property ledger.keepRecordsInState=true
. Such records have an expiry of 180 seconds. It is important to note that because a contract account can never be the effective payer for a transaction, any ContractGetRecords
query will always return an empty record list, and we have deprecated the query.
Enhancements
- Complete alpha implementation of HTS, e.g. #646 #703 #751
- Ensure deterministic transaction hashes via the
Transaction#signedTransactionBytes
field #611 - Drop some artificial constraints on the form of a
CryptoTransfer
used for a query payment #581
Deprecations
- Remove all code involved with non-payer records; deprecate all associated protobuf elements #548
Bug fixes
- Consolidate fees for variable-size transaction records to ensure the payer's max
transactionFee
is respected #502 - Fix issues with pre-alpha HTS implementation, e.g. #698
Contributors
We'd like to thank all the contributors who worked on this release!