If you missed the recent announcement by ARK SCIC CEO Ray Alvarez, the migration to Polygon is now canceled. In turn, I have officially taken over as project owner for ARK Core and the ARK Core-related projects. As a first order of business, I will be ensuring that all repos we have built to date for ARK Core are made open source to allow anyone and everyone to view, review, and plunder anything useful they may find in our work.
It was always the goal of ARK to be an open source project, driven by community contributions and a joint effort toward building something better. In the past, many of our development efforts were done initially in a closed source fashion and then opened up later upon release. Projects like Bearmint that did not see a release were often buried, making it impossible for others to learn from our efforts as well as our mistakes. I’d like to fix that.
As of today, the following Core-related repos are now open source:
- Core Ex
- Bearmint
What is Core Ex?
Core Ex is an internal name for a repository that was being used to experiment on updates for ARK Core v4 prior to the shift to Bearmint. The work on this repo helped inform the direction that a fresh start was necessary and that we would move away from Core v4 and onto a new and rebuilt Core in the form of Bearmint.
This is not a production-level repo and should not be used for any production-level blockchain applications. Let me repeat, this is HIGHLY EXPERIMENTAL and is not safe to use in its current state. It is incomplete at best.
Despite the experimental nature of Core Ex, I believe it is important to open up this repo so that others can see what our previous CTO and Core development team were working on as they began to experiment for Core v4 and beyond.
There may be useful nuggets of ideas or information that can be gleamed from their code and therefore I think it is important to let others take a look.
You can view the relevant repository here:
- Core Ex - highly experimental PoC version of Core
What is Bearmint?
Bearmint was the result of the knowledge gained from experimenting with Core v4. Due to the legacy baggage, code exceptions, old systems, and poor architecture of some of the prior versions of ARK Core, our CTO determined that the best route was to start from scratch using the principles that were steering Core NOW as opposed to those that were steering Core 7 years ago.
That means Bearmint was built from the beginning to be highly modular in every aspect. It was built to avoid the Quorum system and some of the consensus difficulties present in the current implementation of ARK Core, and it was built to be more efficient on all fronts, using industry standards from systems that are currently at the forefront of innovation.
If you read our initial blog post on the Migration to Polygon, you know that Bearmint has since been discontinued. The reason for this is complicated but ultimately the time, energy, and money involved in seeing it to fruition and the need to “reset” the network in order to implement it simply wasn’t feasible.
Let me be clear, Bearmint is really cool. It was a great idea and while it isn’t ideal for a network already running on ARK Core, for a network that is starting fresh, there is a lot of good in Bearmint that may be worth finishing. I know there were a lot of grumbles and dislike for the flourish with which the Bearmint blogs were presented, but the code underlying the project is solid stuff. My hope is that by making it open source, someone gets something positive out of the work that was done.
With that being said, I want to start off with expectations in check. Bearmint as a whole was not 100% complete and while it may run, it should not be considered for production. Let me repeat again, it SHOULD NOT be used in production in its current state. It is being released as-is to let others learn from and perhaps continue what was started with Bearmint if anyone is interested. Just keep that in mind as you look through the repo.
You can view the relevant Bearmint repositories here:
- Bearmint - Fully modular Tendermint-based version of ARK Core
- Bearmint OpenAPI Clients - Auto-generated API Clients for Bearmint based on OpenAPI Specifications
- Bearmint Railway - Bearmint Laravel indexer for Blocks, Transactions, Wallets, and other relevant data
Closing Thoughts
These two repositories account for a large portion of the efforts towards Core over the last year. While they are not production ready, there is a lot of useful insight and pieces that we can draw from to help improve our current implementation of ARK Core moving forward.
As for Core, my priority is not to reboot, reset, or restart ARK Core or anything related to ARK Core in any way. We will instead focus on improving what we know needs improving, starting with our Consensus engine. Our first task will be to address block finality in ARK Core and we will be using anything we can learn from our efforts of the past year to help inform that process.
Feel free to view, review, and plunder these repositories in your own efforts and let us know if you find anything interesting!