Big news! Hot on the heels of the official release of ARK Core v2.6 yesterday (read more about it here); we have something incredibly exciting to share … the ARK Core V3 Codebase is now public! Built from the ground up, this early version of the totally reimagined and restructured codebase is now publicly available, allowing our community a chance to be a larger part of the development process. More than just an update, the cutting-edge v3 Codebase will be the foundation of ARK for years to come — welcome to the next generation of blockchain!

ARK Core V3 Codebase is available at https://github.com/ArkEcosystem/core/tree/develop

The ARK Core v3 codebase has been in parallel development with Core v2.6 for some time now and we felt it was time to pull back the curtain on what we’ve been building. ARK Core v3 will be the next major Core release and is one of our biggest to date; featuring a completely reimagined architecture that will power the ARK Core Framework and set the standard for modular development within the industry.

Opening up Core v3 at this early stage will allow our developer community to be a larger part of the development process and help make ARK Core v3 our best release yet. While the official debut on the Development & Public Networks won’t happen until later this year, we couldn’t wait to share what we’ve been working on!

Why ARK Core v3?

During the course of ARK’s development over the past two years, we’ve come a long way. We’ve grown personally, professionally and learned a great deal about how to improve the architecture that powers the ARK Core Framework. We have taken inspiration from our internal team, the community, hackathons, conferences, and from the projects, partners and businesses building on ARK Core. All of this experience led to us completely reimagining and rebuilding Core from the ground up, led by our esteemed lead developer and following the latest and best development practices.

The outcome will be a completely re-engineered codebase that we believe sets a new standard for the industry to follow. If you’re a developer that likes clean, structured code following best software designs and patterns, you’re going to love Core v3. Welcome to the future of blockchain development!

What’s new with ARK Core v3.0

During the course of the next few weeks, we’ll help break down the vision by delving deeper into how and why we’re building Core v3. In this blog post, we’ll give a brief overview of the most significant upcoming changes and the philosophy behind the decisions.

Here are just a few of the major changes being made in ARK Core v3:

Strict TypeScript mode — This will force developers to avoid common pitfalls when working with TypeScript and ensure that you make use of all the benefits TypeScript offers. Without strict-mode, you’re just using JavaScript.

— This will force developers to avoid common pitfalls when working with TypeScript and ensure that you make use of all the benefits TypeScript offers. Without strict-mode, you’re just using JavaScript. IoC (Inversion of Control) architecture — Core 2.0 Introduced a container that is the heart of the application. It was implemented when the codebase was still JavaScript and thus based on a JavaScript package, Awilix to be specific. JavaScript being JavaScript meant that we couldn’t make use of real IoC as things like interfaces aren’t a thing, but, the migration to TypeScript freed us of those shackles and gave us the opportunity to migrate to Inversify to take full benefit of the IoC architecture.

— Core 2.0 Introduced a container that is the heart of the application. It was implemented when the codebase was still JavaScript and thus based on a JavaScript package, Awilix to be specific. JavaScript being JavaScript meant that we couldn’t make use of real IoC as things like interfaces aren’t a thing, but, the migration to TypeScript freed us of those shackles and gave us the opportunity to migrate to Inversify to take full benefit of the IoC architecture. Exposed Internals — Due to the lack of real IoC in Core 2.0 the exposure of certain internals in Core was rather difficult as it meant we would need to jump through hoops to make it work in a good way without affecting applications with every other release. Inversify allows us to bind everything to the Container without creating a mess and access those bindings through injection. In turn, this makes it easier for us to expose more internals.

— Due to the lack of real IoC in Core 2.0 the exposure of certain internals in Core was rather difficult as it meant we would need to jump through hoops to make it work in a good way without affecting applications with every other release. Inversify allows us to bind everything to the Container without creating a mess and access those bindings through injection. In turn, this makes it easier for us to expose more internals. Bootstrapping — The bootstrapping of plugins has been reworked from the ground up. It is now split into 3 phases which allows plugin developers to hook into other plugins to extend or modify their behavior and ensure that the system is cleaned up after Core is being shut down. This means that you, for example, could add API endpoints to one of our official packages instead of having to create your own plugin to spin up a single endpoint.

— The bootstrapping of plugins has been reworked from the ground up. It is now split into 3 phases which allows plugin developers to hook into other plugins to extend or modify their behavior and ensure that the system is cleaned up after Core is being shut down. This means that you, for example, could add API endpoints to one of our official packages instead of having to create your own plugin to spin up a single endpoint. Configuration — The way Core is configured has also received an overhaul. It is now possible to configure plugins per type of Core instance you are running. This means that you could use a different logger while running a relay compared to what your forger might run. This will give developers and node-maintainers more flexibility and reduce the overall noise in core if you use a dozen plugins that are specific to your forger but have no use for a relay.

— The way Core is configured has also received an overhaul. It is now possible to configure plugins per type of Core instance you are running. This means that you could use a different logger while running a relay compared to what your forger might run. This will give developers and node-maintainers more flexibility and reduce the overall noise in core if you use a dozen plugins that are specific to your forger but have no use for a relay. Plugin Architecture — ARK Core v3 is a continuation yet major overhaul of the plugin-based architecture that was introduced in 2.0. We’ll explain this further in a more detailed blog post in the upcoming weeks.

The above is just a basic overview of some of the major changes that are going to be introduced in Core v3. Excited to know more? We’ve got you covered. Stay tuned to the blog, as over the next few weeks we’ll be releasing a series of posts that get to the heart of Core v3, breaking down everything you need to know.

But don’t take our word for it dig into our Codebase at https://github.com/ArkEcosystem/core/tree/3.0

Help Us Shape The Future

The road doesn’t end with Core V3. Much like Core v2, v3 will have a few major iterations after the initial rollout, each of them focusing on adding additional features and improvements, and that’s where we need your help.

If you are a developer, bridgechain, startup, business, hobbyist or anyone with an interest, … let us know your thoughts on Core v3. If you have comments, feedback, or ideas for improvement, we’re listening. After all, we all know the collective mind is more impactful!

By previewing the codebase now, we’re opening it up to collaboration. So, if you have a suggestion for further improvement or feature requests, don’t hesitate to open an issue on GitHub to let us know.

We can’t wait to hear what you all think!