Archethic (Formerly Uniris) TechUpdate — April 2022

Archethic Editorial
Archethic
5 min readMay 18, 2022

--

The Archethic network published a new release end of April 2022.

What is about ?

This network upgrade correct bugs and enhance the system by pro the overall behavior and functioning of the network.

Network improvements

Databases are one of the most critical subject around software development and design, and we took this approach really seriously, doing a lot of benchmarks and studies for our need. Those far we used an enterprise database solution to provide our needs which were: NoSQL, Columar data selection and high throughput of write.

However, we faced some challenges along the road with the solution we used, from latencies to industrialization issues. So we have decided to re-think and re-design something which will be completely design for our need.
Then we have created a new custom and tailored embedded database for Archethic’s needs.

This new storage engine leverages things we wanted from the ground but with the addition of the specificities of Blockchain protocols which are immutable, append-only writes.

We took inspiration from things which exists out there, from Bitcoin to Facebook.
By running again our benchmarks, we got really great metrics of our new database without the constraints we faced before.

The results are way better and can make the system more responsive.

So in addition to make the system faster, we are also making it easier and more accessible by reducing the hardware requirements to run a node (specifically less memory is required) which was higher with the previous database solution.

For more technical details, there is a dedicated page on the Archethic docs: https://archethic-foundation.github.io/archethic-docs/build/core/database

Nowadays, we are using a lot of passwords to identify ourselves to websites other online services. And the crypto world doesn’t escape the rule. We are struggling with private keys and passphrase to remember and store for retrievals and backups.

Archethic, since its design, took this problem into consideration and wanted to bring a better solution with a password-less authentication while backed by the crypto. We designed a system which reduces the overhead of the private keys retrieval. This includes:

We are now proud to announce all those concept have been implemented through the first version of the keychain, which will help to retrieve and store new way of generating keys while keeping easy access to them.

This new feature brings us on the journey of the password-less authentication to be the only key in a near future.

But to go further on the read of the Web3, we have decided to create a decentralized identity on top of this keychain by using W3C standards such as DID ( Decentralized Identity)

Each keychain would map to DID which can be used and served across other applications using W3C DID Document, such as Verifiable Credentials

Archethic’s transaction are built in such a way to identify which device or origin created the transaction. This identification help to known if an authorized origin or device is allowed to make a transaction.

Archethic’s Proof of Work is to verify that a transaction have been signed by an authorized device, then the validation nodes will just scan over the authorized public keys to check the validity of the transaction’s origin signature.

To leverage this list of authorized keys, a dedicated transaction chain is built during the network initialization, to define the initial authorized keys and the origin shared private keys.

So every client, from now, would have to get the shared origin private keys and decrypt them (if authorized) to be able to build a transaction and secure the origin of it.

Along with some networking, synchronization and validation improvements we are also working on the smart contract layer to add some utilities functions to the language.

This month we have added two main functions we help to identify the first public key and address of a transaction chain.

Why is this important ?
Because Archethic is using a transaction chain when we are coding a smart contract for a given type, we won’t know what will be the address of a specific chain at another time.
Then if you want to apply some logic and condition based on a given person or a given chain, we want to know the first(genesis) address or public key to uniquely identify some chain.

condition transaction: [ address: get_genesis_address() == "000048979168..." ] actions triggered_by: transaction do add_uco_transfer to: "000074E7BD10....", amount: 100000 end

Condition incoming transaction by genesis address

We wanted from some time to be able to show and plot nodes in a world-map, to see the distribution of the miners.

Thanks to geographical patch algorithm, we can reverse back it to coordinates into 2D plan to plot nodes by cluster and identify how many nodes there are in those patches

So for now there is a distribution map available in the explorer.

To test the network, Archethic’s testnet can send UCO as experimental funds. Those can be used to send UCO to others or deploy contract.

However, in order to prevent the draining of the faucet by someone, we have implemented a limiter.

So when someone will request some UCO for a given address, this address could not receive more than 3 funding for an hour.

We worked on an overall improvement of the network by fixing some issues:

  • GeoPatch algorithm: Node’s coordinates leads to a more accurate geo patch to ensure a better distribution of the nodes around the world
  • During Self-Repair, synchronization and aggregation of BeaconChain summaries work better now and reduce the risk of an out-of-sync when a new node joins the network
  • Explorer have been updated to resolve some UI issues

DApps improvements

We embedded the keychain creation and access in the Javascript and Dart library and will continue to enhance it to support more feature to make decentralized wallet more accessible.

We also make the integration with origin key retrieval and usage smoother.

The updates are available on Github

Thank you !

A big thanks to the Archethic community and to all Archethic developers who come together to provide input, thoughts, and contributions.

Do you want to learn more about Archethic ?
Visit our website [Archethic.net], follow us on [X-Twitter], or join our community on [Telegram].

--

--