# Release Notes

# [v3.4.0]

# Release Date - 16th March 2026

# Added

  • [CLI] Add -s|--stringify option for createtransaction command.
  • Add an option maxIntervalTxValidFrom in the Node-config to enforce a maximum limit on the future value allowed for a transaction's 'ValidFrom' timestamp.
  • Allow MiyabiLogger to be set in app.config using dependency injection.
  • Add and update in-code XML documentation for transaction entry models.
  • [API] Add Apis to get the state proof for Asset, Binary, Entity, NFT and Private Data modules.
  • [SDK] Add SDK methods to assist in verifying the state proof for Asset, Binary, Entity, NFT and Private Data modules.
  • [Logging] Add functionality to write the API logs to log files, instead of just to console.
  • [BLSTool] Add readsecret command to read stored secret file.
  • [API][CLI] Add new endpoint and command to list invokable method definitions for a deployed smart contract instance.
  • [API][CLI] Add new endpoint and command to get information about contract assembly.

# Changed

  • [SDK] Remove unused parameters members from sdk config.
  • [SDK] Update namespaces correspond to file locations.
  • [API] Permission model CheckRowOnly will throw a "NotFound" exception instead of returning zero balance for non existent asset addresses.
  • [CLI] Remove obsolete cli commands - getblock, getblockevents, getheader and setbinaryvalue.
  • [API] Raise error if no read permission credential is presented when fetching address for NFT token.
  • [API] Get balance for non-existing address should throw NotFound error in NFT table.
  • [CLI][API] Make changes to getstateproof command so that the response is same is the Get Api.
  • [API] Don't remove the Asset row whose balance becomes zero in the Asset table with PM CheckRowOnly.
  • Upgrade NetRevisionTask C# library version to 0.4.3.
  • Migrate from legacy gRPC to C# gRPC for Node-to-Observer communication.
  • Ensure a secure SSL handshake is enforced for Node-to-Observer communication [Required mandatory SSL pkcs12 keystores for observer client and server].
  • Changed the ECC curve used for internal TLS/SSL communication from 'secp256k1' to 'secp256r1' [Required updating all SSL pkcs12 keystores used].
  • Migrate Miyabi network layer from TCP to C# gRPC.
  • Upgrade secp256k1 native lib with upstream version v0.5.1.
  • Update nuget Portable.BouncyCastle version to 1.9.0.
  • [CLI] Remove the getstateproof command.
  • [CLI] Remove the getproofhash command.
  • Add Validator to ITransactionEntry interface to validate each transaction entry before execution.
  • Upgrade Secp256k1sharp C# library to .net8.
  • Upgrade the native mcl in cryptosharp to upstream version v2.10 and bls to upstream version v1.94.
  • Upgrade Hashsharp C# library to .net8.
  • Upgrade Optional C# library to .net8.
  • Harden check for ssl and consensus keystores to use correct ECC curve based keys and certificates.
  • [CLI] Update querycontract command to align its response format with its Get API.
  • [.net8.0] Change RuntimeIdentifier configuration from win10-x64 to win-x64 in Miyabi solution.
  • Upgrade NetRevisionTask C# library version to .net8.
  • [BLSTool] Improvement on BLS commands.
  • Disallow forbidden character / in table names, NFT token IDs, and contract instance names.
  • Upgrade MessagePack C# library to v2.5.198.
  • Upgrade C# language version to 12.0.
  • Upgrade all Microsoft and third party nuget packages.
  • [SDK] Enhance SDK to update consensus credentials admins and blockchain parameters via smart contract.
  • [SDK] Make instantiators mandatory in the smart contract deploy transaction.
  • Implement cyclic exponential backoff for network connection retry.
  • Support for multiple external observers to be attached [Required change in config_node.json].
  • Add exponential backoff retry mechanism in case ObserverException occurs on the external observer.

# Fixed

  • Unable to automatic store debuggable transformed files at Miyabi server.
  • [API] Corrected NotFound and Unauthorized error format.
  • [API] Correct the error message in case of negative height input in the GetHistoryDetail and GetHistory Api.
  • [CLI] Correct the output of gettransactiontesults to match the Api response.
  • [CLI] Fix getallinfo command output in case any node is down.
  • [API] Raise error if no read permission credential is presented when fetching an asset entry from read-restricted table.
  • [API] Fix getentitytree representation data field for recursive relation.
  • [API] Fix error message in Get-value(s) Api of all modules to include the 'tableName' in addition to the 'key'.
  • [Logging] Updated Log4Net nuget and configuration to include thread ID in API logs.
  • [API] Handle not-well-formed transaction entries in the transaction requests.
  • Sendtransaction now rejects empty JSON {} input with an 'invalid input' error.
  • [CLI] Commands getbinaryowners and getprivatedataowners should show result in same format as API.
  • [API] Fix mempool count and index handling to prevent negative/incorrect counts and invalid slot selection.
  • Fixed transaction Bloom filter not updating for old proposed blocks due to proposal-time checks instead of commit-time.