Design and implement decentralized systems such as Blockchains is one of the tougher task in computing science and development. It involves strong bits of knowledge such as node discovery, multi-threading programming, fast-data processing, scalable data storage, etc.
At Archethic, we have developed a complete decentralized and highly scalable solution including distributed systems, P2P network, limitless storage, smart contract interpreter, and evolving cryptography by providing a new innovative, secured Blockchain and focused on mankind by making easier the interactions without omitting the eco-environment around.
All these wonderful and top-edge technology aspects add a new layer of complexity and require dealing with technical and business issues by providing a strong research and development approach backed by architectural best practices and patterns.
Deal with complexity
Archethic innovates in many domains: transaction chain, multi-dimensional sharding, decentralized ID and keys, etc. by patents and strong technical specifications.
To design a good architecture solution, we needed to tackle the complexity, by tearing down the barriers between business and technology and increased the understanding and the communication by applying the Domain-Driven Design and its principles such as a ubiquitous language and a pair built model with business and technical experts. So we had strong communication with the patent owner, business developers to be able to define good architectural and technical specifications.
By applying the Domain-Driven Design, we were able to have a single and unify model around us split by fragments into multiples models:
- Transaction processing
- Transaction validation
- Smart contracts
Multiple models are important in a huge system such as Blockchain, or distributed system. When models are combined, the software becomes often buggy, difficult to understand, unreliable. Confusion in team communication can appear, and the system becomes not so clear.
Using bounded contexts we can ensure an explicit set which the model must apply by defining specific parts of an application: code, database schemas, technical specifications, … This strategic design enforces team understanding and interaction using the same vision and success in the expected goal to reach.
Flexibility and Agility
Domain-Driven Design comes also with the idea to have an evolving model and needs. To accomplish this, an agile approach is often used (i.e. Scrum methodology).
But when we are dealing with complex software engineering and system design, flexible software architecture is required. Softwares often suffer from technical debts and the cost of maintainability.
To avoid this, at Archethic, we decided to use the Hexagonal architecture (or Port/Adapters).
The idea is to improve the maintainability and to reduce the time spent on the code base evolving by require less work on the long-term vision.
Each external side of the hexagon represents a way that our system can communicate with other systems
The core of the hexagon defines the domain of the application which is technology independent.
In our case external sides can be either a client, a peer in distributed system or a database. The big advantage of this approach is the flexibility you can make by changing or add technologies. In agile process, over the sprints we may have to adapt the choice of implementations or technologies and more again in complex subjects as Blockchain or decentralized systems.
In our case, external sides can be either a client, a peer in a distributed system, or a database. The big advantage of this approach is the flexibility you can make by changing or adding technologies. In the agile process, over the sprints, we may have to adapt the choice of implementations for technologies and more again in complex subjects such as Blockchain or decentralized systems.
The application core — defined in the center of the hexagon — is a good fit with the Domain-Driven Design approach because the domain is isolated and the implementation of the external sides does not alter the business logic.
Whatever the database or networking technology is used, the model remains independent and isolated from the choice made on the architecture. The model will remain the same.
This approach defines, what’s is called elsewhere, a loosely coupled system making easier integration, testing, evolving, and understanding.
Going further: Decentralized domains
Inspiring by the loosely coupled vision or micro-service approach, we designed an architecture that tends to answer for maintainability, understanding, and stability also. Our domain remains independent of any implementation details. This approach works well in centralized systems but when we want to be fully decentralized we need to think about the idea to expand and to evolve the system over time and contributors (inside or outside).
We decided to go further at Archethic by bringing decentralized models into the core of our systems.
Blockchains are suffering a lot about their governance, the implementation choices, will lead to forks and destabilize networks. Why does this happen?
While most decentralized systems and blockchains tend to be decentralized by the protocol, their implementation is not. Softwares are designed to evolve in a decentralized manner. Take for instance the code repository, all blockchains use GitHub or GitLab for hosting and receive contributions, discussion and decisions become off-chain and governance is not really well managed. Therefore, the codebase is mostly hosted on a centralized system and the reloading of new features must be done manually. So we cannot ensure each node has the level of features and support the latest patch.
Archethic network enables hot-swapping of any part of the systems and supports on-chain governance to evolve in a decentralized and open-source manner. Everything aims to be on-chain including code source and governance rules.
Thanks to the transaction chains and smart contracts we are able to first make easy the upgrade of each module and two audits and rewards any contributor (on-chain) to any changes.
With this advanced feature, we can bring the hexagonal architecture and domain-driven design to the next level and be able to swap any implementations (domain or infrastructure) according to the governance requirements from the network.
Because our consensus ARCH (Atomic Rotating Commitment Heuristic) involves Atomic and Heuristic, with this approach we can ensure that every node has the latest version of its code based on heuristic algorithms and can respect the atomic commitment to provide 99,99999999% of confidence.
Archethic Public Blockchain
Archethic is a Layer 1 aiming to create a new Decentralized Internet.
Its blockchain infrastructure is the most scalable, secure & energy-efficient solution on the market thanks to the implementation of a new consensus: "ARCH".
Archethic smart contracts expand developers' boundaries by introducing internal oracle, time-triggers, editable content & interpreted language.
Through native integration for DeFi, NFTs & decentralized identity; Archethic offers an inclusive and interoperable ecosystem for all blockchains.
In order to achieve the long-term vision of an autonomous network in the hands of the world population, we developed a biometric device respecting personal data privacy (GDPR compliant).
Making the blockchain world accessible with the tip of a finger. Be the only key! https://www.archethic.net/
Archethic Foundation Non-profit in order to manage decentralized governance of the public blockchain