Hello Hive Community โ
Birthday needs a gift ๐ and we, ๐ thebeedevs group, prepared a few for you, to make this platform better and simplify application development.
To make quick retrospection, Hive was born in a block 41818752, by executing the HardFork #23.
Here are our gifts... A few has been already mentioned (but they got a lot of new features), some (like HAF itself and a few base HAF applications powering the platform) are being continuously developed to make it faster, better and more reliable. Finally, we have also created new applications to address community needs.
๐น like a BeekeePy tool
๐ like Improvements
โ like Reliability
๐ like a Transaction Inspector web application
โ like a hAIve (our Artificial Intelligence powered search engine for Hive)
๐ป like a Denser web application
๐ธ like A wAx library
๐ like Yet more wallets to sign Your transactions
Below I would like to describe shortly mentioned things...
One of previously published posts introduced a tool called beekeeper "for those developing a Hive". The purpose of this tool is to preserve your keys from direct access and allow only performing basic operations like:
Beekeeper is a SUPERHERO ๐ฆธ right now ๐, and guards your keys in three environments:
It is very hard to select most important enhancements being done by the group teammates. Our main focus is a performance of provided tools... The greatest motivation for the work put into optimization ๐ is the constantly growing blockchain, which increments every 3s โฐ together with local resource needs required to hold it.
To address the issue, we did several things like:
We are also planning new ones especially specific to critical parts the Hive services like Hived. Hopefully some of them will be also ready soon.
To achieve good software quality it must be... tested. And ideally not only by final users ๐ but during software development process. To make testing efficient, during last few years of Hive development we have created a lot of new testcases like also a Python based library simplifying their creation (called test-tools).
Below you can find some information on the number of regression tests that exist in each of the most important projects included in the Hive platform:
| Project | Total number of tests | Example pipeline URL |
|---|---|---|
| Hive | 5015 | develop branch pipeline |
| HAF | 117 | develop branch pipeline |
| Hivemind | 1467 | develop branch pipeline |
| HAfAH | 656 | develop branch pipeline |
| WAX | 923 | develop branch pipeline |
To make this testing possible and efficient like also reproducible, all our projects have implemented Continuous Integration processes, being useful for automatic building, testing as well as deployment of each project.
Additionally, making good software not only needs tests, but also some tools which allow performing scenarios not easy (nor safe) to happen in production environment. To make them a reality, during the last few years we created testing tools like:
What is worth noting, 5 years ago when Hive was born, its testing ability was minimal and actually the whole test suite contained chain_test and plugin_test tools being able to run multiple simple unit tests to verify basic funcions. They are both still present right now...
Regression tests ๐งช, additional tools ๐ง and automation of development processes ๐ค are useful for us, developers... But we also think about you: Hive users. One of the biggest problems you have to deal with is the rejection of transactions due to improper authorization. To address this issue and help solve it without a need to look for a Blockchain Wizard we created a new application: Transaction Inspector.
Its purpose is to visualize the process of verifying the authenticity of the transaction by showing analysis steps performed starting from account signing the transaction, then coming up through (potential) intermediate account authority redirections (e.g. if you permitted some other entities to operate on behalf of your account) to finally end with the account satisfying the authority required by a given transaction.
Let's discuss briefly the main application features - we will publish soon a separate article where authority analysis steps will be discussed in details. To work with it you need to point a transaction being an analysis subject. You have various ways to do it:
Provide transaction button and pasting transaction contents into the dialog as:
Binary option); similar to the previous case you can point potentially broken/not yet broadcasted transactionAfter opening the above link, you should get a similar view:
As you can see, application shows information divided into several sections specific to:
Formatted, JSON or Binary view to allow you a better analysis by choosing a preferred presentation form.The following application documentation contains the description of mentioned things: Transaction inspector documentation.
The important note is that this application uses the same algorithm to process authority as Hive Protocol due to the functionality exposed by a wax library.
Please enjoy yourself! We hope you will find this application useful. We also plan to improve it more soon to simplify significantly the analysis of the negative cases.
One of our wishes for Hive's birthday was to do something exciting both for you - the users of the platform - and for us - programmers involved in its development. I think we all love to have contact with the cutting edge technologies... That's why we decided to spend some of our time on the prototype of the engine, powered by AI and offering us some practical features. During our brainstorm we had a lot of great ideas on how we can use AI technology to improve our social platform. They all lead to a common requirement: massive processing of blockchain data (e.g. posts) and teaching some AI models with it. Fortunately, we have HAF already so making a dedicated app to process posts was quite simple at least at side specific to receiving input data...
Another big challenge was to select a proper AI model and configure it to make it work efficiently. In the end, we need a solution to provide ability to serve API calls and here again we could reuse our experience related to PostgREST integration into HAF applications.
Finally, we created the application called internally HiveSense having following architecture:
To make the entire project successful we had to achieve an acceptable level of performance. The beginnings (as always) were difficult and first versions of the application were able to process the first 5M blocks in a few days. Currently, the optimizations made both in the software layer and the system and hardware configuration allowed the HiveSense application to be supplied with a full set of 94M blocks in 38 hours and to stick at head block continuously with live-sync processing block times at level: 0.078173 s.
The amazing thing is that our software development and system administration team members involved into this project, had to use just two regular PCs:
โก Monster(s) โก - yes, They are software development monsters and magicians ๐ง๐ผโโ๏ธ doing best things โ
The important thing to mention is also the timeframe of this task: it took ca. one month to start from the rough idea to implement the working prototype ๐ชโจ. Of course you can test it yourself: we prepared a special version of our Blog App where regular search backend has been replaced with our AI powered engine.
You can find it here: AI search engine prototype.
Below, there are some interesting search prompts where you can see the difference (yes, really big) in the quality of received results - please compare to condenser search, available here: Current search engine.
Some example prompts:
| Prompt | HiveSense results | Current search results |
|---|---|---|
| russian classic cars | russian classic cars | russian classic cars |
| breed frogs | breed frogs | breed frogs |
| swimming competition | swimming competition | swimming competition |
Another nice feature provided by this version are related posts shown for given one, where the list of such posts is created by looking for similar word vector values computed during AI model processing.
Please look at side panel described as You Might Also Like e.g. displayed for this post
Today we would also like to announce providing the new version of denser application.
The idea behind the creation of this application was to provide functional equivalent of old Condenser software, but made by using nowadays technology stack. This way we could reduce maintenance effort (especially) required to preserve acceptable security level.
Our frontend team did a great job to implement a wallet (similar to the one available e.g. at hive.blog, improve posts rendering and finally add support for signing transactions using Keychain. We hope you will find this application handy and appreciate it, just by switching your blog application to denser.
As we have already announced in past articles:
the purpose of wax library was to provide flexible and safe way to operate with Hive platform. Another important feature is sharing the Hive protocol code that allows the 3rd party programmers (e.g. developing using Typescript or Python) to use directly types and algorithms specific to Hive Protocol. Such architecture (where blockchain code can be immediately called from a Web application instead of gathering results through network API calls) opens a lot of opportunities for implementing new features, making common functional layer where things are evaluated in the same way as hived service does. The examples can be Transaction inspector application (mentioned above, peforming transaction authority verification in the same way as hived), as well as binary view component (embeeded in it but also available separately) able to process transactions the same way as low level blockchain code.
The last several months of development allowed us to enhance this library a lot. Implemented features contain:
REST or JSONRPC API)swagger.json specification which simplified the development process of e.g. haf_block_explorer API callsThe library test suite has been also extended a lot to allow us to provide you with a much better and stable product.
We also did a lot of optimisations, including great reducing of package size.
The big step forward is also Python support which has been done lately Python support.
The whole list of done features you can see by visiting a project releases page
The library is used by a few applications offered by Hive platform like:
We would like to encourage you to try it as it offers great integration to IDEs intellisense (like Visual Studio Code) which speeds up the development process a lot !
Happy Coding โ
The last important thing to mention - especially for non-developer part of Hive Community - is extending the support of alternative wallets to be used for Hive transaction signing.
As you probably know, our team also offers a desktop tool clive which provides safe capabilities to sign transactions (e.g. using its offline signing features).
But that's not all - the Hive platform already contains several tools (like Keachain, PeakVault, Beekeeper) which allow signing your transactions inside a Webbrowser we lacked a tool which allow to enclose management of your keys in single place. Especially, if such keys are not only specific to Hive blockchain. To address it, we need to have a tool which by using modern cryptography features will be able to provide signing services to different blockchains.
Creating such a tool would be very difficult, so we decided to use a great feature of wax instead: external signature providers. This way we are able to implement integration to... MetaMask wallet and provide them a Hive dedicated snap.
Besides, to make Hive onboarding process much easier (for MetaMask users already having a Hive account and those who - hopefully - would like to join our platform) we implemented dedicated service and wizard application to simplify configuration steps.
We hope that this service will become a bridge between Hive and the external world... You can find it here.
Offered functions cover:
Following animation shows steps to be performed to setup Meta Mask wallet to Hive account:
WARNING At the moment our snap implementation needs to be accepted by Meta Mask as trustworthy. See how MetaMask accepts snaps. Because of it, we need to operate with MetaMask Flask browser extension instead of the regular one.
๐๐๐๐ฅณ After party ๐
We hope you enjoyed reading this article. We would like to see you using successfully our applications and libraries described above.
See you on Hive โ
Thanks for reading and we are waiting for your feedback - which is invaluable...