Bearmint's Place in the ARK Ecosystem

As announced on the ARK Ecosystem SCIC blog, Bearmint is the next iteration of what is currently known as ARK Core. In this post we'll dig into how Bearmint fits into the ARK Ecosystem and exactly how we ended up here after five long years of development.

What is Bearmint?

As we outlined in our introduction post, Bearmint is a Blockchain Framework developed on top of Tendermint, meaning that Bearmint is responsible for handling state management and persistence. This isn't fundamentally different from ARK Core, but in terms of development, this presents some major changes and a shift in mindset when it comes to building for (or on top of) Bearmint.

The biggest difference is that, at its center, Bearmint is powered by Tendermint. This means that Core is no longer in charge of the P2P communication or block production. Now this may sound odd and seem as though we're sacrificing a lot of power, but in reality, it works in much the same spirit as Core - keeping things as modular as possible to reduce maintenance and increase reuse.

At a fundamental level, aspects such as P2P communication and the manner in which block production and finalization take place do not require any kind of modification. Just as you wouldn't fork Ethereum and change the way their consensus works, there is no truly compelling reason to do the same with Tendermint. The power of Tendermint lies in its modularity and simplicity, and it is this that Bearmint will harness to its fullest.

The aspects you may wish to alter in terms of consensus relate to the way elections take place or how slashing is carried out. As such, Bearmint makes each of these fully modular, so stay tuned for more information on this in a future blog post...

So Why Do We Need Bearmint?

Now that you have a basic idea of what Bearmint is (don't worry, we'll explain more in future blog posts), it's important to understand exactly how we arrived here. To accomplish this, we'll need to look at the history books to find out how Core 2.0 and Core 3.0 came about to make it abundantly clear why Core 4.0 simply isn't feasible in today's ecosystem...

The development of Core 2.0 was turbulent to say the very least. This is because of the many issues that plagued Core 1.0, the initial version of the software that powered the ARK Blockchain on release in March 2017. The cause of these issues stems from the fact that development initially began as a solo operation by the CTO at the time. In spite of this fact, a few developers joined a few months later, resulting in some significant challenges.

Brian Faust (former CTO of ARK, now Bearmint) was one of these developers. Needless to say, he quickly identified several glaring issues that apply to the realm of software development as a whole:

  • Core 1.0 possessed no modularity whatsoever - This meant that conducting any kind of tests was extremely difficult since everything was essentially 'glued together.'
  • No means of conducting automated tests existed - This factor rendered the system incredibly brittle since after every change, it was necessary to manually verify the system's functionality.
  • No modern language features applied in any way - The language of choice at the time was JavaScript (an obvious red flag owing to the availability of TypeScript), but beyond this, no modern features and syntax were in use at all (for example,async/await versus then/catch).

The first and second points went hand in hand. Without any kind of modularity, the system was monolithic, making testing extremely brittle and difficult to perform. If you wished to carry out any kind of testing, you would need to set up a lot of boilerplate and heavily mock out the system as you effectively required a fully-functional instance of the entire blockchain if you wanted to achieve any measure of confidence in a given component.

Needles to say, this severely affected developer confidence and made shipping a new release very stressful. In terms of the last point, it may seem like nitpicking, but TypeScript easily boosts developer confidence tenfold since the TypeScript compiler will notify them whenever they make a mistake. Moreover, type hints serve as a kind of documentation on top of their compiler-related functionality.

Well, What Are You Waiting For? Fix It!

In all honesty, and as much as we hate to admit - it ain't that simple!

Upon identifying the aforementioned issues, they were swiftly brought forward with work on rectifying these commencing with immediate effect. Unfortunately, the damage was already done. Having said this, the system was extracted into modular pieces to make writing tests easier for everyone - this did wonders for developer confidence and substantially increased system stability.

Work continued on this until the 2.0.0 release of ARK Core, and in 2.1.0, we finally carried out the migration to TypeScript, resulting in another much-needed boost to overall confidence and productivity.

After these releases, we continued to iterate in order to modernize tooling (for example, we providing an out-of-the-box CLI to replace the ARK Commander - a bash script with a UI). We also introduced additional tooling, such as a simpler and standardized Exchange JSON-RPC and a REST API following the appropriate standards.

Eventually we implemented AIP11, and in September 2021, Core 3.0.0 saw its public release. While this release was undoubtedly a major milestone that rectified virtually all of the issues related to the 2.0.0 release, something was still amiss...

Now what was seemingly off may not surprise you too much if you've ever worked with legacy software, and blockchain amplifies by a factor of ten - you can never remove any code because backwards compatibility is absolutely essential. This results in a terribly complicated system, and since the complexity of a blockchain is inherently high, things become even more difficult and intricate when you attempt to reduce the overall complexity (which is quite the paradox).

This is precisely what motivated us to seek an alternative approach to resolving the issue with the way ARK's consensus functions while also removing all of the legacy baggage, thus revivifying ARK Core and giving it an entirely new lease on life (and a much better and more sustainable one for that matter).

In summary, it is entirely evident that ARK Core's deep-rooted architectural, functional and consensus flaws have existed for a long time. It follows that the only way to meaningfully rectify this is to take a step back and use industry-leading tooling to address these issues, all while preserving the positive aspects that people love about ARK Core. Rest assured, we will preserve all of the amazing parts, and any parts that don't meet this standard will finally become amazing!

So Where Does Bearmint Fit In?

Now that you know what Bearmint is, why it came into being and exactly why ARK Core 4.0 is not feasible in the long-run, you can now gain a better understanding of exactly where Bearmint fits into the bigger picture.

With the formation of Ardent and Strake Foundation, the ARK Ecosystem SCIC is now in a better position than ever to deliver more focused, result-driven work and effective solutions for end users. Bearmint forms an integral part of this in that our focus is now exclusively on the spiritual continuation of ARK Core, dedicating our full attention and time to it without any distractions whatsoever.

All of our work is in close cooperation with (and funding from) the ARK Ecosystem SCIC to ensure the ongoing and sustained development of Bearmint.

What's the Plan Leading Up to Launch?

Well partner, we'll be conductin' some thorough testin' and lay out a real good plan for exactly what features we plan to work on first. No need to fret - for this we'll work together with Ardent to ensure the readiness of client applications like the Wallet when Bearmint hits production. We'll also coordinate with the Strake Foundation when we deploy it for testin' and eventually production (ya know, once we have the confidence that we've taken care of all the nitty gritty when it comes to testin' of course)!