Skip to content

Release Notes

STRATO 9.0.0 Release Notes

February 1, 2023

Features, Improvements, and Updates

  • External Key Vault for STRATO nodes - enables multiple STRATO nodes to connect to the same key management server
  • By default, user IDs are used to link addresses in Shared Vault instead of email addresses
  • Enabled Private Shards to read from multiple other shards (previously only one parent shard was allowed)
  • Added extensive documentation for Application Development on STRATO Mercata
  • STRATO Management Dashboard
    • Pagination is enabled in the "Chains" page
    • History toggle available in the "Create Chain" and "Create Contract" modals
    • Improved navigation experience to the "Contracts" page
    • Added link added to STRATO Developer Documentation
    • The "Create Contract" modal now has default values and autofills chain ID & label to the currently selected chainID
    • SMD references to "private chain" have been removed and changed to "private shard"
  • Developers will now know when private shard creation fails due to a runtime error - the POST /chain API now properly gives error responses in these scenarios
  • The chain ID of a contract is now accessible in its hex-string representation on the this built-in member
  • POST /transaction endpoint responds with a more informative error message when a contract and/or chainID pair doesn't exist
  • Private shard constructors no longer have empty block timestamps
  • Cirrus history tables are always on for contracts
  • Network validators moved from address based user identity to x509 certificate based identity opening up the scope for verified identities, KTC, KYB, AML
  • Network validator voting moved to smart-contract based governance in the Genesis Block at the static address of 0x100
  • Identity Management Dapp (CertificateRegistry) moved to the Genesis Block at the static address of 0x509
  • Shard IDs and private transaction hashes can no longer be accidentally reused
  • New metatadata endpoint for easier attainability of: node's pubkey, list of validators, node sync status and other administrative checks
  • Genesis block updates to be configurable, specify network validators, admins, and pre-load X.509 certificates

Bug Fixes

  • Default Governance Contracts for private shards in SMD no longer have syntax error
  • SMD ‘Create Chain’ modal now has a contract selection option
  • SolidVM now stores the correct organization of the creator of a Private Shard when using Code Pointers
  • Governance contracts without explicit constructors now cause chain creation to fail
  • Create Chain endpoint now returns an error when the governance contract throws a type or runtime error
  • P2P communication limited based on networkID (Nodes with different networkIDs are put on a blocklist)
  • Adding private chain members makes peers connect directly to each other

STRATO 8.1.0 Release Notes

December 9, 2022

Features, Improvements, and Updates

  • Only the contract owner is able to call Certificate.addChild() in the X.509 Identity Dapp
  • POST /chains endpoint added to Swagger doc
  • Improved logging in P2P when members are added to shards
  • Removed SolidVM pragmas and related tests and consolidated all versioned features into the core functionality of SolidVM
  • Improved security of private shard transactions

Bug Fixes

  • Fixed SMD Contracts tab that was failing to load on large networks
  • Improved display of error responses during contract creation in SMD

Update from previous version

  • Older versions of STRATO (pre-8.1.0) cannot be updated to 8.1.0

STRATO 8.0.0 Release Notes

November 9, 2022

Features, Improvements, and Updates

  • Remove flag for requiring X.509 Certificates for users and make this required/always on
  • Added gas in SolidVM
  • Updated validators and private chain users to use X.509 common names
  • Updated SMD to display new logo

Bug Fixes

  • Fixed bug occurring during private chain creation causing the Organization to be an empty string
  • Fixed bug on SMD causing a warning message to appear despite a successful function call on a private chain contract

Update from previous version

  • Older versions of STRATO (pre-8.0.0) cannot be updated to 8.0.0

STRATO 7.9.0 Release Notes

October 28, 2022

Features, Improvements, and Updates

  • Added /x509/createCert API endpoint
  • Added pagination to the GET /bloc/v2.2/chain API endpoint
  • Implemented OrganizationAdded and OrganizationRemoved events to allow chain members to be added/removed based on x509 cert information
  • Added isDisableValidator flag to allow the disabling of validator behavior of a node
  • Added getUserCert function for access to a user's Certificate Contract based on user address in the Certificate Registry App

Bug Fixes

  • Fixed bug causing cache inconsistencies on Slipstream query failures
  • Fixed bug causing the API to interpret SolidVM contracts as if they were EVM
  • Fixed bug where members could not be added or removed in the contract's constructor of a private chain
  • Fixed VM memory leak issue

Update from previous version

  • For updating from STRATO Version 7.5 and older: Before any validator on a network is updated to 7.9 and any transactions are posted to the network, the rest of the nodes must be also updated to 7.9 to avoid the existing nodes running the older versions of STRATO becoming unhealthy.

STRATO 7.8.0 Release Notes

October 10, 2022

Features, Improvements, and Updates

  • Added new SolidVM pragma version 3.4
  • Improved SolidVM typechecker:
    • Added check receive function's signature
    • Added check fallback function's signature
    • Added duplicate declaration checks for symbols
  • Added the following functionalities to SolidVM 3.4:

    • Added support for function overloading
    • Implemented pure, and view function modifiers
    • Added constant and immutable state variable modifiers
    • Implemented Revert function
    • Implemented code function for address type
    • Added Hex String Literal support
    • Implemented additional Binary operators
    • Added msg.sig and msg.data buiilt-ins
    • Implemented ecrecover builtin function
  • Added "expirationDate" field to the X.509 Certificate contract

  • Added Certificate Smart Contract for X.509 Registry Dapp
  • Added ability to set the root key, used for cert verification, at Cert Registry Dapp post time
  • Added ability to set certificate expiration date when using the certificate generation tool

Bug Fixes

  • Fixed bug causing private chains to not be shared among other nodes in a network without a container restart on the node that created the chains
  • Fixed bug causing statediff to fail with duplicate key constraint violation when restarting STRATO Docker container
  • Fixed bug causing errors in binding variable assignment for loop expressions
  • Fixed bug preventing users from being able to use a random ordered list of named arguments in a function call

Update from previous version

  • For updating from STRATO Version 7.5 and older: Before any validator on a network is updated to 7.8 and any transactions are posted to the network, the rest of the nodes must be also updated to 7.8 to avoid the existing nodes running the older versions of STRATO becoming unhealthy.

STRATO 7.7.1 Release Notes

September 12, 2022

Bug Fixes

  • Fixed a bug where a block proposer could get a stateroot mismatch when running a block containing cert registrations

STRATO 7.7.0 Release Notes

August 29, 2022

Features, Improvements, and Updates

  • Added new SolidVM pragma version 3.3
  • Added the following functionalities in SolidVM:

    • Added support for custom function modifiers
    • Added support for salted contract creations
    • Added support for number unit suffixes (wei, szabo, finney, ether)
    • Implemented the use of the "e" scientific notation for exponents
    • Implemented try/catch blocks
    • Implemented builtin functions:
      • sha256
      • ripemd160
      • blockhash
      • selfdestruct
      • tx.certificate
    • Reworked mapping behavior to return a types default value when a key is not in a mapping
  • Added the following functionalities in X509:

    • Added support for multi-root certs
    • Added support for root certs to be used for cert validation
    • Renamed references of "tx.group" to "tx.organizationalUnit"
    • Reworked verifyCert builtin function to check that the root cert is signed by the public key
    • Created function verifyCertAgainstCerts to compare a cert against a supplied list of root certs
    • Added the following fields to the Certificate contract:
      • bool isValid
      • Certificate parent
      • Certificate[] children
    • Added revoke function in the Certificate contract
    • Added revokeCert(address _cert) function to the CertificateRegistry Dapp
    • Reworked Certificate Dapp to update the necessary children and parent pointers of all related Certificate contracts after Certificate is registered
  • Added check for single-member private chains in --drop-chains command for strato-getting-started

Bug Fixes

  • Fixed bug that allowed “account” type name to be declared as a variable in SolidVM

Update from previous version

  • For updating from STRATO Version 7.5 and older: Before any validator on a network is updated to 7.7 and any transactions are posted to the network, the rest of the nodes must be also updated to 7.7 to avoid the existing nodes running the older versions of STRATO becoming unhealthy

STRATO 7.6.0 Release Notes

June 27, 2022

New features, enhancements and additions:

  • Updates to x509 including only allowing BlockApps user to use registerCert function
  • Added support for x509 certificate chaining
  • Updates to SolidVM for compatibility with latest Solidity version
  • Multiple enhancements to state variables, function, and account types in SolidVM
  • Added capability to allow multidimensional arrays of structs to be passed as function arguments in SolidVM
  • Added support to parse JSON objects as Solidity structs for API function arguments in SolidVM
  • Added support for mapping parser for API function arguments and support for allowing in-memory mappings to be altered in SolidVM
  • Added more informative STRATO API error related messages for transaction endpoint
  • Refactoring to have Total World Difficulty equal to the number of blocks in a network
  • Deprecated the No Index option on the STRATO Management Dashboard
  • Updates to documentation including x509 changes and SolidVM enhancements

Bug Fixes

  • Fixed bug causing block creation delay when voting to remove validator
  • Fixed bug causing multinode applications to fail
  • Fixed bug causing VM to crash when accessing/assigning unallocated array values
  • Fixed bug causing issues with chainId member access
  • Fixed Query Builder STRATO Management Dashboard page bug causing incorrect population of the columns for a queried contract
  • Fixed bug with syncing peers receiving private transaction information
  • Fixed bloc /transaction endpoint bug causing endpoint to hit fetch limit
  • Fixed bug that allowed contract state variables to be used as function return types in SolidVM
  • Fixed bug causing SolidVM to fail when reading a string state variable from another contract
  • Fixed bug where byte values passed as function arguments were not handled properly
  • Fixed Contracts STRATO Management Dashboard page bug displaying contracts with an error state
  • Fixed contract upload request details in blockapps-rest debug log output

Update from previous version

  • Due to the Total World Difficulty calculation change in 7.6, before any validator on a network is updated to 7.6 — and any transactions are posted to the network — the rest of the nodes must be also updated to 7.6 in order to avoid the existing nodes running the older versions of STRATO becoming unhealthy

STRATO 7.5.0 Release Notes

April 4, 2022

New features, enhancements and additions:

  • Removed External Storage feature
  • Refactoring to add and support Joins feature, including upgrading PostgREST version from v0.4.3.0 to v9.0.0
  • Security patches
  • Refactoring to decrease Kafka message size
  • Added a flag to enable/disable EVM indexing to Cirrus. EVM indexing is disabled by default.
  • Added more informative argument-error related messages
  • Updates to documentation and related tests
  • Updated dependecies to comply with GitHub's new security policy

Bug Fixes

  • Fixed bug causing high CPU usage occurring in specific rare situations
  • Fixed memory leak occurring in specific rare situations
  • Fixed 'Contracts' tile on the STRATO Management Dashboard main page to display proper Contracts count
  • Fixed bug where contracts would fail to be stored in Cirrus due to contract int variable values being too large
  • Fixed bug where Kafka errors were uncaught

Update from previous version

  • No custom changes required to update from 7.4.0

STRATO 7.4.0 Release Notes

December 16, 2021

New features, enhancements and additions:

  • Refactoring to support improved slipstream performance
  • Updated emojis used in node health
  • Added documentation, tests and enhancements to auto fuzzing debugger tool
  • Added tests for type checker and static analysis detectors

Bug Fixes

  • Fix error in contracts panel
  • Fix minor spelling error in VM logs
  • Fix to type checker tool that skipped checking state during variable declaration

Update from previous version

  • No custom changes required to update from 7.3.0

Known issues

  • A possible memory leak is being investigated and may affect performance on networks with large amounts of data.

STRATO 7.3.0 Release Notes

November 18, 2021

New features, enhancements and additions:

  • Add static analysis toolset to the IDE (and VSCode plugin) for smart contract development, and make infrastructure updates to support the same
  • Add controls to prevent sending transactions until nodes of network are in sync
  • Increase the contract lookup accuracy and efficiency
  • Improve slipstream performance efficiency
  • Widespread updates to documentation and related tests
  • Refactoring to remove stale code
  • Add error messaging to the /fill endpoint if called when gas is off

Bug fixes

  • Fix bug in table expansion contract lookup
  • Fix Kafka bug which interfered with syncing to a large network
  • Fix Bloc API contract retrieval bug impacting chain creation when using code pointers
  • Fix to remove excess vault-wrapper logs in production environments
  • Fix to bloc /contracts endpoint
  • Fix bug that crashes script when account is blank
  • Fix to enum conversion failure
  • Miscellaneous small fixes to VM and slipstream database

Update from previous version

  • No custom changes required to update from 7.2.0

STRATO 7.2.0 Release Notes

September 15, 2021

Features, Improvements, and Updates

  • Added new offline transactions feature and related tools to support offline transaction creation;
  • Created raw transaction API endpoint to support offline transactions;
  • Code optimization;

Bug Fixes:

  • Fixed the format and reading of the faucet key;
  • Fixed the node info tree view formatting;

Update from previous version

  • No custom changes required to update from 7.1.0

STRATO 7.1.0 Release Notes

August 13, 2021

Minor Improvements, Updates and Bug Fixes:

  • Add EVM compatibility flag
  • Increase Postgres connection limit to support more query-intensive applications
  • Enable flags on STRATO API for single threaded behavior and to avoid file descriptor errors
  • Remove and replace error calls in x509 certification error handling to provide more graceful failure for improper cert formats
  • Update Haskell LTS package and make related compatibility updates
  • Fix conditions resulting in infinite loop (and add break to prevent infinite looping)
  • Fix edge case for storage-related crash occurring in STRATO-API when using the creator field
  • Fix type conversion bug in cirrus when versioned contracts contain uninitialized variables
  • Fix calculation error in dashboard usage stats

Update from previous version

  • No custom changes required to update from 7.0.0

STRATO 7.0.0 Release Notes

June 28, 2021

Features and Updates:

  • Finish beta version of the x509 feature development, enabling association of users with an organization and contract versioning of applications and contracts. This included:
  • Implementing naming schema and support for application-level versioning
  • Applying the application versioning feature to contract events
  • Introducing table expansion logic to support contract versioning
  • Adding runtime logic for a creator field in SolidVM to keep track of the org of a contract's creator
  • Enhancing internal creator and org lookup logic
  • Add paging for GET requests to /contracts endpoint to improve endpoint performance
  • Add additional platform-side support for VS Code extension (that is coming soon)"
  • Enhance features for the Solidity IDE, including improvements to expression evaluation functionality
  • Enhance support for code Pointers including adding support in blockapps-rest
  • Add buttons to allow dashboard users to compile contracts as SolidVM or EVM contracts
  • Improve logic to enhance blockhash query speed and improve STRATO API performance
  • Change default network parameters to transact with gas off
  • Hide the "value" textbox in the modal when a contract function isn’t marked as payable
  • Add support to be able to see and retrieve private chain transactions in the dashboard transactions table
  • Enforce pragma version support requirement to support upgradability of network

Bug Fixes:

  • Fix chainID field for method calls in dashboard
  • Fix to SMD account detail display panel
  • Fix bug with encoding of private chain governance contracts
  • Fix bug causing flickering in uptime data on dashboard
  • Fix bug in vault db migrations and resolve other migration issues
  • Fix issues with token-getter
  • Fix to query parameter of the chainID during contract creation
  • Fix to disallow stateroot changes resulting from svmTrace parameter
  • Fix to state root mismatch error during upgrade

Known Issues

  • The SolidVM Debugger and IDE have been enabled on the platform but the extension has not yet been released in the marketplace. Installation of the VSCode extension is required in order for the feature to be used.
  • If using the contract versioning feature without an x509 identity in place, users must instantiate all variables in the contracts. Failure to instantiate variables intermittently results in improper data typing and storage when contracts are updated. Investigation of this issue is underway.
  • "ethereum-discover" is a service that all ethereum nodes run to find other peers. Communication between different servers is done via UDP datagrams. There was a bug in a third party library we use to accept UDP packets, where a blank packet would cause the executable to crash. We are updating to a newer version of that library where the bug was fixed
  • The underlying data storage in Postgres is limited in its number of available connection threads. If Postgres connections are exhausted too rapidly, the STRATO container may crash. Investigation of this race condition is underway.
  • If upgrading from a prior STRATO version to this release, all nodes must be upgraded before transactions using STRATO 7.0 features are performed. Failure to upgrade fully before using 7.0 features will result in container failure on non-upgraded nodes.

This release introduces a working beta version of the x509 identity feature as well as a SolidVM debugging tool.

x509 Identity

The x509 Identity feature (beta) allows you to post an x509 certificate and associate your account with an organizational identity. You accomplish this by creating and then registering an organizational x509 certificate. Users currently would need to generate an x509 certificate through external tools or utilize the x509 details of a certificate their organization already has. You would then create a record of this certificate on the blockchain and register its use.

A sample contract to create the certificate on the blockchain would look like this: pragma solidvm ^3.0; contract CreateACertificate { address myAddress = tx.origin; string myNewCertificate = "<paste certificate details here>"; string myCommonName = ""; string myCountry = ""; string myOrganization = ""; string myGroup = ""; string myPublicKey = ""; constructor() { registerCert(myAddress, myNewCertificate); myCommonName = parseCert(myNewCertificate)["commonName"]; myCountry = parseCert(myNewCertificate)["country"]; myOrganization = parseCert(myNewCertificate)["organization"]; myGroup = parseCert(myNewCertificate)["group"]; myPublicKey = parseCert(myNewCertificate)["publicKey"]; } } To register this certificate, a built-in platform method is used registerCert(tx.origin, cert1). This method could be used within the constructor to the sample contract, CreateACertificate, or it could be called in another contract. After this association of an account to an organization is created, any applications or contracts uploaded by the user will be associated with the related organization. This also allows users to restrict methods and contract function calls to only users associated with an organization.

Contract Naming and Versioning

In order to better support the development and evolution of applications and smart contracts, this release introduces a contract naming and versioning solution (in beta) to allow users to have multiple versions of the same contract with different values, without a name or version collision. In order to use the beta version of the contract naming and versioning feature, developers currently need to instantiate all variables in smart contracts that are being used and set variables to a non-empty value (even if immediately changed thereafter). This is a known issue in the beta version. Instantiating the variables ensures that the proper data type for the variables are stored for each contract of the same name.

SolidVM Debugger (coming soon)

The SolidVM debugger is a Visual Studio (VSCode) extension that helps to debug Solidity contract code while you are developing smart contracts. This release adds platform-side support for a VS Code extension (that is coming soon). To run a node with the Solidity Debugger extension enabled, you will need to do a few additional steps:

When starting your STRATO node to enable debugging on it, add these additional parameters to your startup script: debugSolidVM=true \ wsDebug=true \

When starting VSCode, make sure that your VSCode is running on the same machine that your node is running on AND there is a GUI installed on the machine. [Typically this means you are developing on a local node (even if you are connected to a network for development), but this also works if you have VSCode on a remote machine with a GUI installed and a VNC server connection.] 1. Open the strato-platform repository in your VSCode folder system. Under the subfolder blockapps-rest, install with 'yarn install' and build the images with yarn build 2. Change directories into the Strato-vscode folder and build the images in that directory using yarn. 3. To run the extension, open all the files under the strato-vscode directory using code . and then run debugging under the Run Extension configuration. This will open up a separate VSCode window with the extension enabled (You should see the BlockApps logo in the lefthand extension tray). 4. When the VSCode extension window is open, click on the BlockApps logo and you should see the opens to Create, Deploy, Run and Test code. Create Project will allow you to create a new track-n-trace project at a designated location on your file system. It will also close out whichever project you're currently working on. Deploy Project will deploy the dapp contracts to the node, using the node URL specified in the project's config.yaml file. Run Project currently only runs the server for the project. This means you'll still need to start the nginx container and the UI from your terminal Test Project runs the server test suite.

Upgrading

If you are upgrading to 7.0 from a previous version, this upgrade requires that all nodes of the network be upgraded before new transactions are added to the network (mixed version networks cannot be supported)


STRATO 6.0.3 Release Notes

April 20, 2021

Features and Updates:

  • Add infrastructure and backend support for future x509 certificate feature
  • Add infrastructure and backend support for future Solidity IDE extension
  • Add backend support for Solidity debugging
  • Revise the block hydration method and related tests
  • Enable use of Unicode chars in contract string fields
  • Add missing function parameters to typescript support
  • Add RLP encoding for negative integers
  • Add detailed usage reporting to server and API call counting

Bug Fixes:

  • Fix subject JSON encodings and added JSON roundtrip tests
  • Fix bug in escaping logic which was mishandling event arguments that used reserve words
  • Fix bug in stats submission scheduler
  • Fix issue with entering Unicode characters in Solidity source code
  • Fix serialization bug in Merkle Patricia trees
  • Miscellaneous bug fixes to tests

STRATO 6.0.2 Release Notes

March 8, 2021

Features and Updates:

  • Refactoring and consolidation of Bloc and STRATO API endpoints.
  • Change the default networkID parameter to reference the blockapps network
  • Add a new network flag and additional support for network identification
  • Increase the default settings for Kafka message limit and size
  • Update default blockapps-rest package to 8.0.0
  • Add support for building STRATO on nix0s
  • Update serve module version in SMD and disable obsolete calls to mixpanel
  • Add prelude "read" function that can accept a label used when the function fails to help identify issues more easily.

Bug Fixes:

  • Fix bug that was failing to enforce proper enode formation

Notes:

  • The refactoring to the API endpoints did not result in any functional change, but the prior API version can be accessed by adding the following to the run script:

bash USE_OLD_STRATO_API=true \ blocHost=bloc:8000 \

  • The default network ID changed between 6.0.1 and 6.0.2. If upgrading, add the following parameters to the run script when the node is upgraded: networkID=6 \

STRATO 6.0.1 Release Notes

December 8, 2020

Bug fixes

  • Minor bug fix to peer discovery flag in secondary nodes.

STRATO 6.0.0 Release Notes

November 23, 2020

New Features

  • Added network-level flag to remove gas from transactions
  • Implement identity management, which included:
  • Implement Vault-wrapper's management of the node private key
  • Removing usage of nodekey/blockstanbulPrivateKey environment variables and files
  • Updating P2P module to use vault-wrapper for the node's public key, signatures, and shared secrets
  • Updating Ethereum Discovery and PBFT modules to use vault-wrapper for signing respective messages with the node's private key.
  • Implement node-level self-generation of blockstanbul key at runtime.
  • Implement code collection feature to enable contract versioning through use of smart contract code references
  • Add functionality to allow use of constructor arguments during private chain creation
  • Implement SSL (https://) support for blockstanbul-vote function
  • Implement ability to call main chain contracts from within private chain transactions
  • In SolidVM, add string concatenation, and add typecasting between strings and ints, bools, and addresses
  • Improve vault-wrapper performance through changes in user key handling

Bug fixes

  • Fix minor instability in P2P sync mechanism related to ordering of block headers when transmitted

Breaking Changes

This release implements important identity management security which results in a breaking change.
Additional steps (including a migration script) are required to upgrade from <6.0 to 6.0.
Additionally, it is recommended that all nodes in a network choose the same option with respect to the use of gas in transactions


STRATO 5.5.0 Release Notes

August 13, 2020

New Features

  • Library upgrades in vault-wrapper
  • Upgrade the milena Kafka client
  • Upgrade to make hash type uniform (convert SHA to Keccak256 hash types)
  • General refactoring and core code maintenance
  • Optimize P2P gossip performance to prevent latency degradation
  • Provide more detailed information in protected health endpoint

Bug fixes

  • Fix bug in P2P occurring when nodes in the network are not connected to all validator nodes (i.e. allow nodes to gossip)
  • Fix Kafka short term connection bug occurring during network upgrade process
  • Fix leading zero bug in getAccounts endpoint

STRATO 5.4 Release Notes

May 21, 2020

New Features

  • Add parallel transaction API endpoint and make related nonce counter changes to support concurrent transactions
  • Add SolidVM support for equality checks between contract addresses and user account addresses
  • Refactor and update internal API mechanics (no impact to external endpoint behavior)
  • Add SolidVM support for parsing ternary operations

Bug fixes

  • Fix to SMD faucet button when using a custom port
  • Fix SolidVM string handling in function call response
  • Add SMD fix to reflect an "Unhealthy" node status when the browser websocket connection to STRATO node is missing

STRATO 5.3.0 Release Notes

April 10, 2020

Enhancements and fixes to SolidVM:

  • Acceptance of multiple named returned from SolidVM functions
  • Fixed behavior of while loops
  • Add support for calling functions that do not have function bodies
  • Ensure out of bound index access error throws proper error and does not crash STRATO container
  • Production support through better error handling
  • Improved error messages for SolidVM errors
  • Fix for boolean equality handling
  • SolidVM support in contract upload function in SMD
  • Fix to /compile route handling of SolidVM inputs

STRATO 5.3.0 Release Notes

--


STRATO 5.2.1 Release Notes

--


STRATO 5.2.0 Release Notes

--


STRATO 5.1.0 Release Notes

January 7, 2020

New Additions / Feature Improvements

  • Enhancements to database performance
  • Limits added on volume of contracts returned from Bloc's \contracts endpoint to prevent crashes from large volume contract handling (interim solution)
  • Improvements to API endpoints to support future ability to use of createChain, uploadList, and callList functionality on multiple private chains at a time
  • Implement SolidVM's ability to empty an array in storage
  • Implement use of difference lists for handling state accumulation in the platform
  • Improved logging in Nginx (milisecond timestamps),

Bug fixes

  • Fix navigation menu issues that were present when external storage was enabled

Breaking Changes & Announcements

  • There is a known SMD interface-side bug which affects the ability to upload contracts to private chains using the UI (This and other SMD interface bug fixes are being scheduledfor an upcoming release.)

STRATO 5.0 Release Notes

November 25, 2019

New Additions / Feature Improvements

In this release we have added SolidVM - a fully production-ready option for processing Ethereum smart contracts. SolidVM can be used to improve overall smart contract functionality and performance over the standard EthereumVM. With the EthereumVM, Solidity event data is hashed and inaccessible to smart contracts directly. With SolidVM, event data is maintained in a human readable format, with the argument information for all events persisted and more easily obtainable. The use of SolidVM for smart contracts enables a more lightweight transmission of event information into the blockchain by only transmitting relevant new or updated values.

  • SolidVM event handling implemented
  • SMD dashboard updated to integrate OAuth support
  • New Nginx logs format for better debugging
  • External Storage backward compatibility added for STRATO 4.5.1 and below

Bug fixes

  • Fix response to GET/state request when SolidVM
  • Remediate issues causing STRATO to crash when trying to post a transaction to a private chain after restarting the node
  • Fix indexing of SolidVm blocks after STRATO restart to avoid Slipstream failure
  • Fix nonce issue in SolidVM
  • Fix bloc/v2.2/ contracts endpoint for contracts uploaded using SolidVM
  • Fix unhandled exception in Vault-wrapper for Get request for user keys when keys do not yet exist
  • Fix method to transfer tokens to private chain members when using SolidVM
  • Fix benchmark in strato-sequencer for stability
  • Fix bug in SolidVM event handling protocols causing intermittent system failures during removal of a private chain member
  • Fix intermittent looping in the transactionResult endpoint by ensuring transaction list of blocks to run on a private chain is cleared properly
  • Fix the OAuth logout in SMD for users using Google SSO
  • Fix for Nginx logs that was causing it to show messages selectively

Upgrades, Breaking Changes & Announcements

  • Users wishing to use SolidVM in a production state should install 5.0. Prior releases contain a demo version of this feature.
  • Full OAuth support has been enabled in the Track & Trace demo application

STRATO 4.5.2 Release Notes

September 13, 2019

New Additions / Feature Improvements

  • Add support for STRATO to bypass compiler when running solidVM
  • New verbose logging options for private chains and additional privacy db tools for debugging
  • Improved internal logging for blocks to be run and block hash information
  • Improvement which sends values set in the private chain governance contract constructors to slipstream.
  • Improved private chain error handling

Bug fixes

  • Better handling for the result of insertChainHash
  • Fix to private chain hydration mechanism
  • Ensure that private transaction bodies are automatically stored in redis

STRATO 4.5.1 Release Notes

August 26, 2019

New Additions / Feature Improvements

  • New IP-address agnostic peer identity scheme for enode addresses
  • New endpoint for retrieving detailed information for an account address, including username
  • Platform improvements to sync functions of private chains
  • Implementation of internal platform tools related to enode address management
  • Inclusion of STRATO version in the SMD UI
  • Improved error handling for ambiguous or duplicate private chain transaction requests

Bug fixes

  • Fix to management of database updates for contract history
  • Button fix to re-enable file upload in the external storage UI when Oauth is not enabled
  • Fix to allow the CMD to handle arrays of warning messages
  • Fix to the disk space monitoring alerts in the SMD
  • Added support for enabling External Storage feature when OAuth is also enabled

STRATO 4.5 Release Notes

July 3, 2019

New Features

Enhanced key management/security measures - Key Management variable added in platform and Strato Getting Started to block unauthorized transactions

Significant Private Chain Improvements - Deduplication of chain details in peer to peer communications - Allow manual override of chain membership on a node - Ethereum VM checkpointing for private chains - Improved persistence and query tools for private chain metadata and related information

Significant Improvements to Network Restart functions - Ability to update executables in place without complete network upgrade - Improved checkpointing and retention of checkpoints by sequencer during restart - Manual (backup) private chain synchronization trigger in sequencer - Removed expiration for Kafka checkpoints - improvements to queryStrato diagnostic tool

Central Monitoring Dashboard Improvements - Support for use of ports other than 80 - Performance enhancements from updates to polling endpoints - Health calculation refactor - Better Health Update Notifications for offline connections

Demo Application Improvements - Improvements for using track and trace on remote hosts

Documentation improvements - Swagger documentation improvements (link) - Developer documentation updates (link)

Bug fixes

  • Several P2P sync-related fixes
  • Fix preventing Nginx from using stale DNS information if container IP addresses change
  • Fix to health updatime calculations after restart
  • Fix to postgres record inconsistencies resulting from container restart
  • Updates to prevent reinsertion of statediff information into postgres
  • Fix to API response when querying GET /transactions with chainID and lastURL

Upgrades & Breaking Changes

  • Because 4.5.0 introduces a key management variable in the backend, users should also update to the most recent version of the Strato Getting Started repository to avoid potential conflicts.
  • Upgrading to 4.5.0 requires additional support for users who have created private chains and private chain transactions. Please contact us for additional information if you are using a version below 4.5.0 with private chains employed and seek to update your network.

STRATO 4.4.1 (HotFix) Release Notes

May 15, 2019

Bug Fixes

  • Fixed disruption to sync from long term memory issue
  • Fixed debugging messages for SolidVM
  • Resolved testing issues for the following beta features: - Tool for adding node to network - Central Monitoring Dashboard

STRATO 4.4 Release Notes

May 3, 2019

New Features

  • Alpha (2.0) Version Solidity Virtual Machine - Improved SolidVM transaction execution bottlenecks and addition of multinode functionality infrastructure
  • Improved Private Chain Sync capabilities
  • Infrastructure and backend support for CMD monitoring tool - Backend development included the development of network uptime calculation and node health calculation algorithms and related alert system integration with OpsGenie
  • OAuth Integration for Swagger Documentation - Improvements to current Swagger documentation descriptions and organization and integration of endpoints with OAuth
  • P2P Performance Enhancements - Improvements to P2P memory usage
  • Demo Application Tools - Development of application framework generation tool and enhancements to demo application including the incorporation of blockapps-sol and blockapps rest tools
  • Network on-boarding enhancements - Tools to simplify the process of on-boarding new members to the network

Bug Fixes

  • Several fixes were developed to address upgrade issues, specifically, upgrade bugs state root mismatches, p2p syncing and private chain syncing

  • SMD UI fixes for the private chain interfaces and interactions

Instructions for Upgrading Your Network

For production deployments, please contact us for further support. For non-production deployments, the following steps are recommended for upgrading without data loss. When upgrading, only one node can be upgraded at a time. Once an upgrade has been successful on one node, the next node can be upgraded and upgrades should continue in sequence until the entire network is upgraded

  • Steps:
  • Update the docker-compose.yaml file on your node and replace the contents with the version for 4.4
  • Use./strato --pull to retrieve updated docker compose images
  • Backup local data: mkdir db_backup docker exec -i strato_postgres_1 pg_dumpall -U postgres -f /tmp/pgdump docker cp strato_postgres_1:/tmp/pgdump ./db_backup docker exec -i strato_postgres_1 rm -rf /tmp/pgdump
  • Run ./strato --remove to remove the current containers
  • Add the additional script configurations to your run.sh scripts based on your current version

    Users seeking to upgrade from version 4.2 or below will need to add the following lines to the run.sh script configurations before running 4.4:

    `export brokenRefundReenable=true` (add this as the first line of the script)
    `blockstanbulAdmins=$validators \` (replace $validators with the string value from validators in run.sh)
    `OAUTH_STRATO42_FALLBACK=true \`(if using OAuth)
    

    Users seeking to upgrade from version 4.3 (or related implementations) will need to add the following to the run script configurations before running 4.4:

    `blockstanbulAdmins=$validators \` (replace $validators with the string value from validators in run.sh)
    
  • Start the container using sh run.sh

STRATO 4.3 Release Notes

March 8, 2019

New Features

  • Alpha (1.0) Version Solidity Virtual Machine - Allows use of a pluggable Solidity VM on designated contracts through additional metadata properties in the contract API requests

  • Improved Application Deployment - Refactoring of code and libraries relied upon for application deployment, which resulted in a time-saving 50% decrease in deployment time on a single node.

  • New Demo Application - Fresh new demo application which showcases the latest STRATO features, including OAuth, External Storage, Private Chains, and Consortium Network Governance

  • Extension of OAuth protection capability to all remaining API endpoints. This provides a foundation for future development work on network monitoring tools

Bug fixes

  • Several Space and memory leak fixes to better support extended network usage. Performance measurements both in speed and in space usage is improved, with overall improvements of 25% and 50%, respectively

  • Fix to bug that blocked use of External Storage feature when OAuth was enabled

Announcements

  • Starting with the following release (4.4), we will no longer officially be supporting versions of STRATO platform earlier than 4.0.

STRATO 4.2 Release Notes

January 22, 2019

New Features

  • Enhanced Private Chain Synchronization - Users creating private chains on the blockchain can now add private chain members after the chain has been created, and are able to resynchronize with a private chain if their connection to the blockchain experiences a disruption.
  • Private Chain Governance UI and Contract Enhancements - Users now can see a drop down list of default private chain governance options or can drag and drop a Private Chain Governance contract into the UI from a local folder.
  • Enhanced Audit Trail Capabilities - Improvements to STRATO's UI to allow audit trail feature to be configured on a contract-specific basis at the time contracts are created or uploaded through the UI. Additional enhancements to improve the coordination between audit trail and private chain features.
  • Oauth Integration - New integration capablities with OAuth authentication solutions, extending OAuth-based authentication to all main chain and private chain transactions and interactions.
  • UI Improvements - Enhanced user feedback on fauceting.

Bug fixes

  • Fixed issue in the create contract modal
  • Addressed an intermittent memory leak
  • Added a default peer connectivity PBFT parameter
  • Removed a race condition affecting the consensus protocols

STRATO 4.1.0 Release Notes

STRATO 4.0.1 (HotFix) Release Notes

STRATO 4.0.0 Release Notes

New Features

  • Private Transaction Chains - To provide transaction privacy, we introduce the concept of private transaction chains. With private transaction chains, participants on the public blockchain will be able to transact with each other privately, while maintaining the immutability and auditability of the public blockchain.
  • Enterprise User Management - BlockApps STRATO can be integrated with existing enterprise user management systems, such as OAuth2, OpenID, etc. When submitting a request to sign transactions with BlockApps STRATO, STRATO will validate user metadata with the user management system before proceeding with transaction signing.
  • PBFT - We introduce an experimental feature which allows users to select between two consensus algorithms based on their network performance requirements. We offer PBFT as a configurable option (Practical Byzantine Fault Tolerance) and default POW (Proof-of-Work). PBFT is faster than Proof of Work, and is designed for permissioned networks where the identities of the participants are known to others.
  • Solidity 0.4.24 Upgrade - STRATO now supports Solidity up to version 0.4.24!

STRATO 3.1.2 (HotFix) Release Notes

  • Storage offset bug fix;
  • Parsing fixes for contacts;
  • Multi-node syncing issue fixes;
  • Other small fixes

STRATO 3.1.1 (HotFix) Release Notes

  • Hot fix for syncing issue affecting the old networks
  • Security fixes for public mode
  • Other small fixes

STRATO 3.1 Release Notes

May 23, 2018

New Features

  • Genesis Ingestion Tool - for Large Record Contract Creation Constant memory usage for file creation and storage initalization of ingestion. Added support for hash maps.
  • Solidity Improvements - supports constant keyword and variable initalization.
  • Query Pagination - support for offset and limit when querying Cirrus in order to control response size over large datasets.
  • Node Performance Improvements - increased contract creation transactions per second.
  • Updates to Kafka Library - Kafka has been upgraded to 1.1.0.

Updates

  • Solidity now enforces the “constant” modifier on variables. This means that the previous workaround to initialization of constants in the constructor function may not longer work.

STRATO 3.0 Release Notes

April 6, 2018

New Features

  • Batch Contract Uploader - In an effort to make our blockchain even faster, we devised a method to upload empty contracts to the genesis block. This eliminates bottlenecks when uploading hundreds (or thousands) of contracts, such as the case of our enterprise users. The result? 4,000 contracts uploaded to STRATO in 144 seconds, which translates to 27.7 contracts per minute. Not bad!
  • Improved Signup Flow - We updated our signup flow to make it easier to request tokens and launch apps. Try it out now.

Bug Fixes

  • BlockApps BA is Fixed - Some users were unable to deploy our supply chain demo app. Upon investigation, we discovered a circular dependency between Bloc, our state route API, and Cirrus, our contract indexer. This was fixed by letting Cirrus discover and index contracts on its own, which eliminates the needlessly high number of function calls that were previously being made to the Bloc state route.
  • Array Members Return Properly in State - Previously, contracts with large arrays produced truncated JSON results. We solved this by paginating Bloc, the state route, and STRATO, the storage route. Now, large arrays return properly formatted JSON.
  • CLI Instructions Updated - We improved our documentation to better distiguish between uploading apps to localhost versus the testnet. Click here to try the CLI.

March 6, 2018 Release Notes

New Features

  • STRATO CLI - You can now deploy STRATO apps directly from your CLI. Run npm install -g strato-cli to download a sample app and upload it to the testnet.
  • New User Flow for STRATO Getting Started - We revamped our onboarding experience to accomodate our token request form and new CLI. Click here to get started.

February 20, 2018 Release Notes

New Features

February 2, 2018 Release Notes

New Features

Bug Fixes

  • We're continuing to improve the reliability of STRATO deployment on RedHat OpenShift. Our efforts are focused on single-node versions of STRATO, but we're planning to begin performance enhancements on multi-node in an upcoming release.
  • Method call popup on STRATO dashboard now populates with addresses consistently. Users complained about adding addresses that didn't show up in their dashboard, but this issue is now resolved.
  • Improved gas and ether usage values from STRATO transaction results. Some users were not getting accurate gas and ether values when querying STRATO transaction results. This issue is now resolved.

January 19, 2018 Release Notes

New Features

  • Improved documentation for BlockApps BA - Supply Chain Demo App. Users were experiencing difficulty deploying our demo app on AWS, so we revised the documentation to make it easier to get started.

Bug Fixes

  • Account Detail is blank if address has no associated balance
  • Date on transaction and transaction detail page, on firefox, shows up as Invalid Date

December 15, 2017 Release Notes

New Features

  • Contract Metadata added to STRATO contracts - all dApp metadata is now stored on the blockchain, making it easier for nodes to deliver dApps consistently
  • Ability to send ABI info to Bloc in order to call methods for contracts not created using Bloc
  • All contracts compiled through Bloc are now indexed by Cirrus automatically

Bug Fixes

  • Error handling added to incorrect password on contract creation
  • Sync Issue - I start mining on my own chain when reconnecting
  • Passes compilation button but fails when creating contract
  • P2p does not retry to sync if bootnode was unreachable on STRATO init
  • Show proper Solidity Compile errors for SimpleStorage on the SMD Code Editor
  • On Contracts list, contract card gets stretched when method name is long

December 1, 2017 Release Notes

New Features

  • Ensure Data persistence in the Testnet nodes for restarts, fixes and enhancements (upgrades)
  • Perform network upgrade by adding new substitute nodes (code upgrade) - could be laptop or VM's outside the network

Bug Fixes

  • Errors displayed if contract upload fails
  • Discovery fixed to improve node syncing
  • AppMetadata is registered before STRATO start syncing

November 10, 2017 Release Notes

New Features

Apps sync to all nodes on network

Apps can be launched from any node on the network. * Ability to register an application on the testnet * Ability to discover existing apps on the testnet * Microsoft Azure updated with latest images * Ability to see all dApps on the network when nodes are synced * Updated documentation for dApp guide * Updated packaging for lottery-app * Error handling added to lottery app

Bug Fixes

  • Initial value for "value" in bloc swagger docs is too high, making contract upload fail
  • Resolved error while syncing with Testnet - stuck at Block 3966
  • Resolved inability to create users In Developer Demo SMD linked to Site
  • Getting-started fails to init on CentOS - blockapps-bloc: libpq: failed (could not translate host name "postgres" to address
  • Fixed timestamp: Invalid Date
  • Execute fails Bloc API in Swagger docs - Post - /users/{user}/{address}/send
  • Added error handling to incorrect password on contract creation in SMD
  • Fixed issue code editor contracts not being indexed by cirrus

October 27, 2017 Release Notes

New Features

  • Apps Tab with a demo lottery app
  • Basic Code Editor with file management
  • Cirrus now supports updating contract definitions

Enhancements

  • Network request progress indicator on SMD
  • SMD no longer tries to get all accounts every 5 seconds
  • Misc performance and usability changes
  • Env variable checks for SMD for tracking and app deployment

Bug Fixes

  • Bloc gives compiler errors instead of generic 500 on compile issues
  • Pragma statement no longer causes contract compilation to fail

Check out our VS Code extension! Signup for STRATO Mercata