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.