- Option to create a client from config file without mirror network
- Finished LegderID implementation
- Comments on the rest of the functions
- Comments on
clientand allqueryandtransactiontypes
TransactionID.String()will now return the TransactionID string without trimming the leading zeroes
- Alias support in
AccountCreateTransaction CreateAccountWithAliasExampleCreateAccountWithAliasAndReceiverSignatureRequiredExample
CustomFractionalFee.SetAssessmentMethod()AccountAllowanceApproveTransaction.ApproveTokenNftAllowanceWithDelegatingSpender()PrivateKeyFromStringECDSA()- New mirror node endpoints, only 443 port is now supported
mainnet-public.mirrornode.hedera.com:443,testnet.mirrornode.hedera.com:443,previewnet.mirrornode.hedera.com:443
- Minimum query cost can now be less than 25 tinybars
TransactionFromBytes()now correctly sets transactionValidDuration
PrivateKeyFromStringECSDA()
- Support for HIP-583
- Example for HIP-583
account_create_token_transferwhich autocreates an account by sending HBAR to an Etherum Account Address Mnemonic.ToStandardEd25519PrivateKeywhich uses the correct derivation pathMnemonic.ToStandardECDSAsecp256k1PrivateKeywhich uses the correct derivation path
Mnemonic.ToPrivateKey()was using incorrect derivation pathPrivateKeyFromMnemonic()was using incorrect derivation path
- Panic in multiple node account id locking
- Regenerating transaction id, when not expired
- Signs more than once per node/transaction
- Not retrying other nodes when there are multiple nodes are locked
- Panic when locking multiple nodes
- Panic when too many nodes are not healthy
- INVALID_NODE_ACCOUNT error
- Setting MaxAutomaticTokenAssociations on ContractUpdate even if not set
IsZero()andEquals()inAccountIDGetSignedTransactionBodyBytes()inTransaction
SetDefaultMaxQueryPaymentandSetDefaultMaxTransactionFeeinClient
- Schedule network recursive call
- Wrongly deprecated
SpenderIDfield inTokenNFTInfo
CustomFee.AllCollectorsAreExempt
- Addressbook Query no logner panics
- Example for HIP-542
- Example for HIP-573
- 10 seconds blocking on creating a
Client
NewAccountBallanceQueryto correctly return account balance
- Update documentation for
ContractFunction[Parameters|Result]to show how to use large integer variants - Implement
TransactionResponse.ValidateStatus
*Transactionsnow don't sign twice
AccountCreateTransaction.[Set|Get]Alias[Key|EvmAddress]()ContractCreateFlow.[Set|Get]MaxChunks()- Support for automatically updating networks
Client.[Set|Get]NetworkUpdatePeriod()Clientconstructor supports_ScheduleNetworkUpdateto disable auto updatestask updatefor manual address book updating
- Removed deprecated flags for wrongfully deprecated
Client.[Set|Get]LedgerID - Added
SetGrpcDeadlinetoEthereumTransactionandTokenUpdateTransaction - Deprecated
LiveHash.DurationuseLiveHash.LiveHashDuration - Added missing
LiveHashQuery.[Set|Get]MaxRetry - Added missing
TopicInfoQuery.SetPaymentTransactionID
AccountBalance.[tokens|tokenDecimals]use a mirror node query insteadAccountInfo.tokenRelationshipsuse a mirror node query insteadContractInfo.tokenRelationshipsuse a mirror node query insteadTokenNftInfo.SpenderIDreplaced byTokenNftInfo.AllowanceSpenderAccountID
Token[Update|Create]Transaction.KycKeyTokenCreateTransaction.FreezeDefaulwasn't being set properly.- Requests should retry on
PLATFORM_NOT_ACTIVE
PrngThansactionTransactionRecord.PrngBytesTransactionRecord.PrngNumbertaskrunner support
ContractFunctionResult.ContractStateChangeswith no replacement.
PrngThansactionTransactionRecord.PrngBytesTransactionRecord.PrngNumber
ContractFunctionResult.ContractStateChangeswith no replacement.
StakingInfo.PendingHbarReward
StakingInfoAccountCreateTransaction.[Set|Get]StakedAccountIDAccountCreateTransaction.[Set|Get]StakedNodeIDAccountCreateTransaction.[Set|Get]DeclineStakingRewardAccountInfo.StakingInfoAccountUpdateTransaction.[Set|Get]StakedAccountIDAccountUpdateTransaction.[Set|Get]StakedNodeIDAccountUpdateTransaction.[Set|Get]DeclineStakingRewardAccountUpdateTransaction.ClearStaked[AccountID|NodeID]ContractCreateTransaction.[Set|Get]StakedNodeAccountIDContractCreateTransaction.[Set|Get]StakedNodeIDContractCreateTransaction.[Set|Get]DeclineStakingRewardContractInfo.StakingInfoContractUpdateTransaction.[Set|Get]StakedNodeAccountIDContractUpdateTransaction.[Set|Get]StakedNodeIDContractUpdateTransaction.[Set|Get]DeclineStakingRewardContractUpdateTransaction.ClearStaked[AccountID|NodeID]TransactionRecord.PaidStakingRewardsScheduleCreateTransaction.[Set|Get]ExpirationTimeScheduleCreateTransaction.[Set|Get]WaitForExpiry- Protobuf requests and responses will be logged, for
TRACE, in hex.
TopicMessageSubmitTransactionemptyChunkInfowould always cause an error
StakingInfoAccountCreateTransaction.[Set|Get]StakedNodeAccountIDAccountCreateTransaction.[Set|Get]StakedNodeIDAccountCreateTransaction.[Set|Get]DeclineStakingRewardAccountInfo.StakingInfoAccountUpdateTransaction.[Set|Get]StakedNodeAccountIDAccountUpdateTransaction.[Set|Get]StakedNodeIDAccountUpdateTransaction.[Set|Get]DeclineStakingRewardContractCreateTransaction.[Set|Get]StakedNodeAccountIDContractCreateTransaction.[Set|Get]StakedNodeIDContractCreateTransaction.[Set|Get]DeclineStakingRewardContractInfo.StakingInfoContractUpdateTransaction.[Set|Get]StakedNodeAccountIDContractUpdateTransaction.[Set|Get]StakedNodeIDContractUpdateTransaction.[Set|Get]DeclineStakingRewardTransactionRecord.PaidStakingRewardsScheduleCreateTransaction.[Set|Get]ExpirationTimeScheduleCreateTransaction.[Set|Get]WaitForExpiry
EthereumFlowEthereumTransactionData
Transaction.[From|To]Byteswould ignore some variables- Fixed naming for
Ethereum.SetCallDataFileID()andEthereum.SetMaxGasAllowanceHbar()to be consistent with other sdks.
ContractCreateTransaction.[Get|Set]MaxAutomaticTokenAssociations()ContractCreateTransaction.[Get|Set]AutoRenewAccountId()ContractCreateTransaction.[Get|Set]Bytecode()ContractUpdateTransaction.[Get|Set]MaxAutomaticTokenAssociations()ContractUpdateTransaction.[Get|Set|clear]AutoRenewAccountId()ContractCreateFlow.[Get|Set]MaxAutomaticTokenAssociations()ContractCreateFlow.[Get|Set]AutoRenewAccountId()ContractInfo.AutoRenewAccountIDContractDeleteTransaction.[Get|Set]PermanentRemovalContractCallQuery.[Get|Set]SenderIDScheduleCreateTransaction.[Get|Set]ExpirationTimeScheduleCreateTransaction.[Get|Set]WaitForExpiryScheduleInfo.WaitForExpiryEthereumTransactionTransactionRecord.EthereumHashAccountInfo.EthereumNonceAccountID.AliasEvmAddressAccountID.AccountIDFromEvmAddress()TransactionResponse.Get[Record|Receipt]Query
FileUpdateTransactionandTopicMessageSubmitTransactionduplicate transaction errors.*Transaction.ToBytes()now properly chunked transactions.
*Querypayment signatures weren't getting updated after updating body with new random node.
ContractCreateTransaction.[Get|Set]MaxAutomaticTokenAssociations()ContractCreateTransaction.[Get|Set]AutoRenewAccountId()ContractCreateTransaction.[Get|Set]Bytecode()ContractUpdateTransaction.[Get|Set]MaxAutomaticTokenAssociations()ContractUpdateTransaction.[Get|Set|clear]AutoRenewAccountId()ContractCreateFlow.[Get|Set]MaxAutomaticTokenAssociations()ContractCreateFlow.[Get|Set]AutoRenewAccountId()ContractInfo.AutoRenewAccountIDContractDeleteTransaction.[Get|Set]PermanentRemovalContractCallQuery.[Get|Set]SenderIDScheduleCreateTransaction.[Get|Set]ExpirationTimeScheduleCreateTransaction.[Get|Set]WaitForExpiryScheduleInfo.WaitForExpiryEthereumTransactionTransactionRecord.EthereumHashAccountInfo.EthereumNonceAccountID.AliasEvmAddressAccountID.AccountIDFromEvmAddress()
FileUpdateTransactionandTopicMessageSubmitTransactionduplicate transaction errors.*Transaction.ToBytes()now properly chunked transactions.
*Querypayment signatures weren't getting updated after updating body with new random node.
*Query.GetMaxQueryPayment()*Query.GetQueryPayment()
*Query.GetPaymentTransactionID()panic when not set.`- Removed unneeded parameter in
AccountDeleteTransaction.GetTransferAccountID(). FileUpdateTransaction.GeFileMemo()is nowFileUpdateTransaction.GetFileMemo()TopicMessageSubmitTransactionfailing to send all messages, instead was getting duplicated transaction error.TopicMessageSubmitTransactionwould panic if no message was set.
TokenNftAllowance.DelegatingSpenderAccountAllowanceApproveTransaction.AddAllTokenNftApprovalWithDelegatingSpender()AccountAllowanceApproveTransaction.ApproveTokenNftAllowanceAllSerialsWithDelegatingSpender()
AccountAllowanceAdjustTransactionwith no replacement.AccountAllowanceDeleteTransaction.DeleteAllTokenAllowances()with no replacement.AccountAllowanceDeleteTransaction.DeleteAllHbarAllowances()with no replacement.AccountInfo.[Hbar|Toke|Nft]Allowances, with no replacement.TransactionRecord.[Hbar|Toke|Nft]Allowances, with no replacement.
AccountAllowanceDeleteTransactionContractFunctionResult.[gas|hbarAmount|contractFunctionParametersBytes]AccountAllowanceExampleScheduleTransferExample
AccountAllowanceAdjustTransaction.revokeTokenNftAllowance()with no replacement.AccountAllowanceApproveTransaction.AddHbarApproval(), useApproveHbarAllowance()instead.AccountAllowanceApproveTransaction.ApproveTokenApproval(), useGrantTokenNftAllowance()instead.AccountAllowanceApproveTransaction.ApproveTokenNftApproval(), useApproveTokenNftAllowance()instead.
*Transaction.GetTransactionID()panic when not set.Transaction.Freeze()now properly sets NodeAccountIDs*Querypayment transaction now properly contains the right NodeAccountIDs.
AccountAllowanceDeleteTransactionContractFunctionResult.[gas|hbarAmount|contractFunctionParametersBytes]AccountAllowanceExampleScheduleTransferExample
AccountAllowanceAdjustTransaction.revokeTokenNftAllowance()with no replacement.AccountAllowanceApproveTransaction.AddHbarApproval(), useApproveHbarAllowance()instead.AccountAllowanceApproveTransaction.ApproveTokenApproval(), useGrantTokenNftAllowance()instead.AccountAllowanceApproveTransaction.ApproveTokenNftApproval(), useApproveTokenNftAllowance()instead.
AccountInfoFlowVerify[Signature|Transaction]()Client.[Set|Get]NodeMinReadmitPeriod()- Support for using any node from the entire network upon execution if node account IDs have no been locked for the request.
- Support for all integer widths for
ContractFunction[Result|Selector|Params]
- Ledger ID checksums
TransactionFromBytes()should validate all the transaction bodies are the same
- Network behavior to follow a more standard approach (remove the sorting we used to do).
AccountInfoFlowVerify[Signature|Transaction]()Client.[Set|Get]NodeMinReadmitPeriod()- Support for using any node from the entire network upon execution if node account IDs have no been locked for the request.
- Support for all integer widths for
ContractFunction[Result|Selector|Params]
- Ledger ID checksums
TransactionFromBytes()should validate all the transaction bodies are the same
- Network behavior to follow a more standard approach (remove the sorting we used to do).
ContractCreateFlowQuery.[Set|Get]PaymentTransactionID- Verbose logging using zerolog
*[Transaction|Query].[Set|Get]GrpcDeadline()TransactionRecord.[hbar|Token|TokenNft]AllowanceAdjustmentsTransferTransaction.AddApproved[Hbar|Token|Nft]Transfer()AccountAllowanceApproveTransaction.Approve[Hbar|Token|TokenNft]Allowance()AccountAllowanceAdjustTransaction.[Grant|Revoke][Hbar|Token|TokenNft]Allowance()AccountAllowanceAdjustTransaction.[Grant|Revoke]TokenNftAllowanceAllSerials()
HbarAllowance.OwnerAccountID, wasn't being set.- Min/max backoff for nodes should start at 8s to 60s
- The current backoff for nodes should be used when sorting inside of network meaning nodes with a smaller current backoff will be prioritized
TopicMessageQuerystart time should have a default
AccountUpdateTransaction.[Set|Get]AliasKey
Account[Approve|Adjust]AllowanceTransaction.Add[Hbar|Token|TokenNft]AllowanceWithOwner()
ContractCreateFlowAccount[Approve|Adjust]AllowanceTransaction.add[Hbar|Token|TokenNft]AllowanceWithOwner()Query.[Set|Get]PaymentTransactionID- Verbose logging using zerolog
*[Transaction|Query].[Set|Get]GrpcDeadline()
HbarAllowance.OwnerAccountID, wasn't being set.- Min/max backoff for nodes should start at 8s to 60s
- The current backoff for nodes should be used when sorting inside of network meaning nodes with a smaller current backoff will be prioritized
AccountUpdateTransaction.[Set|Get]AliasKey
ownerfield to*Allowance.- Added free
AddressBookQuery.
- Changed mirror node port to correct one, 443.
- Occasional ECDSA invalid length error.
- ContractIDFromString() now sets EvmAddress correctly to nil, when evm address is not detected
ownerfield to*Allowance.- Added free
AddressBookQuery.
- Changed mirror node port to correct one, 443.
- CREATE2 Solidity addresses can now be represented by a
ContractIdwithEvmAddressset. ContractId.FromEvmAddress()ContractFunctionResult.StateChangesContractFunctionResult.EvmAddressContractStateChangeStorageChange- New response codes.
ChunkedTransaction.[Set|Get]ChunkSize(), and changed default chunk size forFileAppendTransactionto 2048.AccountAllowance[Adjust|Approve]TransactionAccountInfo.[hbar|token|tokenNft]Allowances[Hbar|Token|TokenNft]Allowance[Hbar|Token|TokenNft]AllowanceTransferTransaction.set[Hbar|Token|TokenNft]TransferApproval()
- Requests not cycling though nodes.
- Free queries not attempting to retry on different nodes.
ContractId.FromSolidityAddress(), useContractId.FromEvmAddress()instead.ContractFunctionResult.CreatedContractIDs.
- CREATE2 Solidity addresses can now be represented by a
ContractIdwithEvmAddressset. ContractId.FromEvmAddress()ContractFunctionResult.StateChangesContractFunctionResult.EvmAddressContractStateChangeStorageChange- New response codes.
ChunkedTransaction.[Set|Get]ChunkSize(), and changed default chunk size forFileAppendTransactionto 2048.AccountAllowance[Adjust|Approve]TransactionAccountInfo.[hbar|token|tokenNft]Allowances[Hbar|Token|TokenNft]Allowance[Hbar|Token|TokenNft]AllowanceTransferTransaction.set[Hbar|Token|TokenNft]TransferApproval()
- Requests not cycling though nodes.
- Free queries not attempting to retry on different nodes.
ContractId.FromSolidityAddress(), useContractId.FromEvmAddress()instead.ContractFunctionResult.CreatedContractIDs.
- CREATE2 Solidity addresses can now be represented by a
ContractIdwithEvmAddressset. ContractId.FromEvmAddress()ContractFunctionResult.StateChangesContractFunctionResult.EvmAddressContractStateChangeStorageChange- New response codes.
ChunkedTransaction.[Set|Get]ChunkSize(), and changed default chunk size forFileAppendTransactionto 2048.AccountAllowance[Adjust|Approve]TransactionAccountInfo.[hbar|token|tokenNft]Allowances[Hbar|Token|TokenNft]Allowance[Hbar|Token|TokenNft]AllowanceTransferTransaction.set[Hbar|Token|TokenNft]TransferApproval()
- Requests not cycling though nodes.
- Free queries not attempting to retry on different nodes.
ContractId.FromSolidityAddress(), useContractId.FromEvmAddress()instead.ContractFunctionResult.CreatedContractIDs.
- Support for regenerating transaction IDs on demand if a request
responses with
TRANSACITON_EXPIRED
- Support for regenerating transaction IDs on demand if a request
responses with
TRANSACITON_EXPIRED
AccountId.AliasKey, includingAccountId.[From]String()support.[PublicKey|PrivateKey].ToAccountId().AliasKeyfields inTransactionRecordandAccountInfo.Noncefield inTransactionId, includingTransactionId.[set|get]Nonce()Childrenfields inTransactionRecordandTransactionReceiptDuplicatesfield inTransactionReceipt[TransactionReceiptQuery|TransactionRecordQuery].[Set|Get]IncludeChildren()TransactionReceiptQuery.[Set|Get]IncludeDuplicates()- New response codes.
- Support for ECDSA SecP256K1 keys.
PrivateKeyGenerate[ED25519|ECDSA]()[Private|Public]KeyFrom[Bytes|String][DER|ED25519|ECDSA]()[Private|Public]Key.[Bytes|String][Raw|DER]()DelegateContractId*Id.[from|to]SolidityAddress()
PrivateKeyGenerate(), usePrivateKeyGenerate[ED25519|ECDSA]()instead.
AccountId.AliasKey, includingAccountId.[From]String()support.[PublicKey|PrivateKey].ToAccountId().AliasKeyfields inTransactionRecordandAccountInfo.Noncefield inTransactionId, includingTransactionId.[set|get]Nonce()Childrenfields inTransactionRecordandTransactionReceiptDuplicatesfield inTransactionReceipt[TransactionReceiptQuery|TransactionRecordQuery].[Set|Get]IncludeChildren()TransactionReceiptQuery.[Set|Get]IncludeDuplicates()- New response codes.
- Support for ECDSA SecP256K1 keys.
PrivateKeyGenerate[ED25519|ECDSA]()[Private|Public]KeyFrom[Bytes|String][DER|ED25519|ECDSA]()[Private|Public]Key.[Bytes|String][Raw|DER]()
PrivateKeyGenerate(), usePrivateKeyGenerate[ED25519|ECDSA]()instead.
- New smart contract response codes
ContractCallQuery.[Set|Get]MaxResultSize()ContractUpdateTransaction.[Set|Get]ByteCodeFileID()
- New smart contract response codes
ContractCallQuery.[Set|Get]MaxResultSize()ContractUpdateTransaction.[Set|Get]ByteCodeFileID()
TransferTransaction.GetTokenTransfers()TransferTransaction.AddTokenTransfer()- Persistent error not being handled correctly
TransactionReceiptQueryshould return even on a bad status codes. Only *.GetReceipt()should error on nonSUCCESS` status codes
- Refactored and updated node account ID handling to err whenever a node account ID of 0.0.0 is being set
ContractCallQuery.[Set|Get]MaxResultSize()ContractUpdateTransaction.[Set|Get]ByteCodeFileID()
TransactionReceiptQueryshould fill outTransactionReceipteven when a badStatusis returned
TransferTransactionshould serialize the transfers list deterministically
- Support for toggling TLS for both mirror network and services network
FreezeTypeFreezeTransaction.[get|set]FreezeType()
- Support for HIP-24 (token pausing)
TokenInfo.PauseKeyTokenInfo.PauseStatusTokenCreateTransaction.PauseKeyTokenUpdateTransaction.PauseKeyTokenPauseTransactionTokenUnpauseTransaction
- Support for automatic token associations
TransactionRecord.AutomaticTokenAssociationsAccountInfo.MaxAutomaticTokenAssociationsAccountCreateTransaction.MaxAutomaticTokenAssociationsAccountUpdateTransaction.MaxAutomaticTokenAssociationsTokenRelationship.AutomaticAssociationTokenAssociation
Transaction*helper methods - should make it easier to use the result ofTransactionFromBytes()
- TLS now properly confirms certificate hashes
TokenUpdateTransaction.GetExpirationTime()returns the correct time- Several
*.Get*()methods required a parameter similiar to*.Set*()This has been changed completely instead of deprecated because we treated this as hard bug - Several
nildereference issues related to to/from protobuf conversions
- Support for automatic token associations
TransactionRecord.AutomaticTokenAssociationsAccountInfo.MaxAutomaticTokenAssociationsAccountCreateTransaction.MaxAutomaticTokenAssociationsAccountUpdateTransaction.MaxAutomaticTokenAssociationsTokenRelationship.AutomaticAssociationTokenAssociation
- Support for TLS
- Setters which follow the builder pattern to
Custom*Fee Client.[min|max]Backoff()support
TokenNftInfoQuery.ByNftID()- useTokenNftInfoQuery.SetNftID()insteadTokenNftInfoQuery.[By|Set|Get]AccountId()with no replacementTokenNftInfoQuery.[By|Set|Get]TokenId()with no replacementTokenNftInfoQuery.[Set|Get]Start()with no replacementTokenNftInfoQuery.[Set|Get]End()with no replacement
AssessedCustomFee.PayerAccountIDswas misspelled
- Support for
CustomRoyaltyFee - Support for
AssessedCustomFee.payerAccountIds
nildereference issues within*.validateNetworkIDs()
- Implement
Client.pingAll() - Implement
Client.SetAutoChecksumValidation()which validates all entity ID checksums on requests before executing
- nil dereference errors when decoding invalid PEM files
- Updated
Statuswith new response codes - Support for
Hbar.[from|to]String()to be reversible
*.AddCustomFee()use*.SetCustomFees()instead
- Update
Statuswith new codes
PrivateKey.LegacyDerive()should correctly handle indicies
- Support for NFTS
- Creating NFT tokens
- Minting NFTs
- Burning NFTs
- Transfering NFTs
- Wiping NFTs
- Query NFT information
- Support for Custom Fees on tokens:
- Setting custom fees on a token
- Updating custom fees on an existing token
- All requests should retry on gRPC error
INTERNALif the message containsRST_STREAM AccountBalance.Tokensas a replacement forAccountBalance.TokenAccountBalance.TokenDecimals- All transactions will now
sign-on-demandwhich should result in improved performance
TopicMessageQuerynot callingUnsubscribewhen a stream is cancelledTopicMessageQueryshould add 1 nanosecond to theStartTimeof the last received messageTopicMessageQueryallocate space for entire chunked message ahead of time for retriesTokenDeleteTransaction.SetTokenID()incorrectly settingtokenIDresulting inGetTokenID()always returning an emptyTokenIDTransferTransaction.GetTokenTransfers()incorrectly setting an empty value
AccountBalance.TokenuseAccountBalance.Tokensinstead
Client.SetMirroNetwork()producing a nil pointer exception on next use of a mirror network- Mirror node TLS no longer producing nil pointer exception
- Support TLS for mirror node connections.
- Support for entity ID checksums which are validated whenever a request begins execution. This includes the IDs within the request, the account ID within the transaction ID, and query responses will contain entity IDs with a checksum for the network the query was executed on.
TransactionTransaction.AddHbarTransfer()incorrectly determine total transfer per account ID
TopicMessageQuery.MaxBackoffwas not being used at allTopicMessageQuery.Limitwas being incorrectly update with fullTopicMessagesrather than per chunkTopicMessageQuery.StartTimewas not being updated each time a message was receivedTopicMessageQuery.CompletionHandlerwas be called at incorrect times- Removed the use of locks and
sync.MapwithinTopicMessageQueryas it is unncessary - Added default logging to
ErrorHandlerandCompletionHandler
- Support for
MaxBackoff,MaxAttempts,RetryHandler, andCompletionHandlerinTopicMessageQuery - Default logging behavior to
TopicMessageQueryif an error handler or completion handler was not set
- Renamed
ScheduleInfo.Signers->ScheduleInfo.Signatories TopicMessageQueryretry handling; this should retry on more gRPC errorsTopicMessageQuerymax retry timeout; before this would could wait up to 4m with no feedbackdurationFromProtobuf()incorrectly calculation duration*Token.GetAutoRenewPeriod()and*Token.GetExpirationTime()nil dereferenceHbar.As()using multiplication instead of division, and should return afloat64
- Exposed
Hbar.Negated()
- Scheduled transaction support:
ScheduleCreateTransaction,ScheduleDeleteTransaction, andScheduleSignTransaction - Non-Constant Time Comparison of HMACs [NCC-E001154-006]
- Decreased
CHUNK_SIZE4096->1024 and increased default max chunks 10->20
- Non-Constant Time Comparison of HMACs [NCC-E001154-006]
- Decreased
CHUNK_SIZE4096->1024 and increased default max chunks 10->20 - Renamed
ScheduleInfo.GetTransaction()->ScheduleInfo.getScheduledTransaction()
Transaction.Schedule()should error when scheduling un-scheduable tranasctions
noncefromTransactionIDScheduleTransactionBody- should not be part of the public API
Transaction[Receipt|Record]Queryshould not error for statusIDENTICAL_SCHEDULE_ALREADY_CREATEDbecause the other fields on the receipt are present with that status.ErrHederaReceiptStatusshould printexception receipt status ...instead ofexception precheck status ...
- Executiong should retry on status
PLATFORM_TRANSACTION_NOT_CREATED - Error handling throughout the SDK
- A precheck error shoudl be returned when the exceptional status is in the header
- A receipt error should be returned when the exceptional status is in the receipt
TransactionRecordQueryshould retry on node precheck codeOKonly if we're not getting cost of query.Transaction[Receipt|Record]Queryshould retry on bothRECEIPT_NOT_FOUNDandRECORD_NOT_FOUNDstatus codes when node precheck code isOK
- Updated scheduled transaction to use new HAPI porotubfs
ScheduleCreateTransaction.AddScheduledSignature()ScheduleCreateTransaction.GetScheduledSignatures()ScheduleSignTransaction.addScheduledSignature()ScheduleSignTransaction.GetScheduledSignatures()
- Support for scheduled transactions.
ScheduleCreateTransaction- Create a new scheduled transactionScheduleSignTransaction- Sign an existing scheduled transaction on the networkScheduleDeleteTransaction- Delete a scheduled transactionScheduleInfoQuery- Query the info includingbodyBytesof a scheduled transactionScheduleId
- Support for scheduled and nonce in
TransactionIdTransactionIdWithNonce()- Supports creating transaction ID with random bytes.TransactionId.[Set|Get]Scheduled()- Supports scheduled transaction IDs.
TransactionIdWithValidStart()
- Updated protobufs #120
NewTransactionId()- UseTransactionIdWithValidStart()instead.
- All requests support getter methods as well as setters.
- All requests support multiple node account IDs being set.
TransactionFromBytes()supports multiple node account IDs and existing signatures.- All requests support a max retry count using
SetMaxRetry()