Hi all,
Hope you are all doing well.
Please allow me a moment to give a short update about where we stand with HEAT technical development.
Lets start with one thing that's clear, but perhaps underapreciated, which are the big improvements to the HEAT network stability since the last major release. HEAT network has operated smoothly and uninterupted ever since, thankfully!
Also the extensive client/wallet/exchange visual makeover and overall upgrade seems to work well, no major bugs have surfaced or any emergency fixes have been needed since that was released. This ofcourse being possible because of our very special, very custom heat-ui crypto-client framework. Which in turn allows our client developer to perform his magic efficiently.
During the holiday season work was started on the software backend for our licensed EUR wallet operator. Through this new company with which Heat Ledger Ltd has a partnership we will be bringing EUR to the blockchain. Users can deposit and withdrawal EUR to and from their account and send EUR from one account to any other account in the system.
To realize this we decided a private blockchain system together with an indexed database and an API was the way to go.
In order for HEAT to benefit most it became clear that instead of forking HEAT and building a private chain from that code, a better way was to upgrade HEAT itself by adding private chain functionality to its core. This way the system would benefit from later upgrades to HEAT and HEAT itself would benefit.
We went a little further than that by making HEAT core into an embeddable software component, this means that now other applications can add the HEAT library and use it.
By embedding the HEAT library in your application;
- you get your own private blockchain and p2p network
- you can extend and use the HEAT database
- you can expose your own custom API by extending the (OpenAPI compatible) HEAT API
All this came very close to what we needed to built our backend system, the only part that was missing was a database solution.
The database had to;
- be protected against data loss, this means we needed realtime backups to multiple servers
- record all changes to its data
- be impossible to change data without it being detected
Of course solutions for such exist, but most are costly to implement and maintain. What we found was a way to achieve the same by using the blockchain and a simple sql database.
For this we first created our basic database models, in software developement a database model is a piece of code that wraps all your database queries and inserts and updates into a unit. From there we identified all inserts and updates and created what we call 'messages' to pass data into those models. The messages are basically data structures but with the ability to turn them into binary data and vice versa create them from binary data.
To be able to pass a message to one of the model's insert or update routines we created what we call 'handlers', each handler having its unique id. The handlers in turn are invoked by observing the embedded private blockchain transactions, if we see a transaction with a message we look up its handler and the handler will pass the message to the database model.
So there you have it. We now have all our data backed up on the private chain p2p network and no one can change any part without rewriting the blockchain. Pretty cool!
The messages + handler logic will be ported to HEAT core at a later stage, we plan to wrap the logic in such a way that with a few lines of code you could built your blockchain powered database driven app.
We also created the web/mobile client for the EUR wallet operator. For this we took heat-ui framework as a starting point, we dressed it down, took the best parts and upgraded it which gives us a nice mobile friendly client framework. This code is expected to find its way back to HEAT as our upgraded mobile friendly wallet base. The wallet is mostly functional and will be passed down to our visual/ui specialist to complete its looks.
Also our java developer recently completed work adding MYSQL support to HEAT. HEAT replicators have always been designed to work with multiple database engines but up to now we only supported H2 database. MySQL is better suited for heavy loads which is why we will soon be using that to power the public wallet at
https://heatwallet.com.
Heat-ui (the HEAT wallet) has a number of upgrades pending release, among which is better mobile support and the addition of mouseover/popover details to things like accounts, orders and trades.
Preparations have also been going on to better formalize microservices and to enable balance leasing which can be expected in the coming release.
Also preparations for the remake of the p2p/networking layer are on going and will be implemented next.