7. ARK Core
Last updated
Was this helpful?
Last updated
Was this helpful?
In late 2018, ARK released an entirely new codebase operational on the ARK Public Network [2]. This codebase was developed entirely from the ground up to set the standard for the next generation of deployable DPoS blockchains.
The new architecture has been completely rethought to decouple delegate forging activity, transaction pool management, and API interface on separate threads. Transactions will need to pass complete SPV (Simple Payment Verification) on a separate process or server before hitting the mempool, thereby completely sandboxing the activity of the node against attacks [2].
ARK Core is a lightweight but very powerful codebase that functions as the base component of the entire ARK Ecosystem. Authored in TypeScript, the ARK Core’s extensive modular architecture empowers developers to modify, configure or extend all aspects of the code base with ease. Now that all inherited legacy code is purged, the ARK business entity sees no future need for another bottom-up redesign, since ARK’s modular architecture will handle all further evolution of the ARK Core.
The ARK Core uses a custom implementation of dynamic fees within a DPoS network model at the protocol level. This is uncommon in DPoS networks by any stretch, and is heralded as a large step forward for DPoS. Dynamic fees benefit both end users and delegates that secure the network. The end user will benefit from the network accepting lower fees, as delegates compete with each other. Delegates gain the capacity to both customize fees per transaction type and offer tiered transaction fees where higher fee transactions post faster [8]. Dynamic fees will also assist the delegates by providing defense from potential attack vectors such as spam attacks.
The ARK Core accommodates various transaction types and has the ability to service new custom transaction types via ARK Logic. Below are some of the transaction types that are currently utilized within Core or planned for the future.
The transfer transaction enables a user to broadcast a transaction to the network sending ARK tokens from one ARK wallet to another. This transaction type provides the utility of store-of-value and value transfer. It also contains a special data field of 255 bytes called the vendor field, allowing raw data, code or plain text to be stored on the blockchain. The vendor field is public and immutable, and is also utilized in ARK SmartBridge Technology [59].
This transaction type enables a user to add an extra layer of security to their address by creating a second passphrase, using mnemonic code for generating deterministic keys via BIP-39 to produce an additional 12 words [41]. Once a second signature has been registered to a wallet, the owner of the wallet will then be required to input their primary and secondary passphrase when sending a transaction to the network [59].
A user or organization can register their address to become a delegate and secure the network. Upon accumulating sufficient vote weight, the delegate will begin forging transactions and receiving block rewards. The delegate assigns a custom name to their address to differentiate it from other delegates [59].
A key feature of the ARK DPoS model is that each address can vote for one delegate of their choosing to secure the network. A vote and unvote transaction type is therefore necessary to enable this functionality. Once an address votes for a delegate, funds can enter and leave the address as needed, and vote weight adjusts automatically. Voting does not send funds to the delegate’s ARK address in question - it only assigns vote weight [59].
A transaction of this type acts as a simple logic function that restricts the spending of an amount of ARK at a specified address until a predefined future time or block height is met. This is useful for hash-based contracts and payment channels [59].
This type is designed to reduce the payload on the blockchain by enabling multiple payments to be combined and broadcast to the network as a single transaction. This benefits the end user and delegates by lowering transaction fees per payment and reducing congestion. Initially and depending on testing, the ARK Core will allow 400-500 payments to be combined within a single transaction. Eventually, the number of payments per transaction will be able to scale as needed [59].
This transaction type will enable delegates to block potential voters from voting for them if they choose to withdraw their status as delegates. A non-reversible transaction can be sent to the network to indicate that the delegate should no longer be included in any future forging rounds [59].
This transaction type utilizes a special data field similar to the vendor field to store Interplanetary File System data on the blockchain. This provides an easy way to timestamp and optionally encrypt and verify files. This implementation of the IPFS transaction type won’t allow storing data on the blockchain - for that, special IPFS nodes are needed [59].
This transaction type enables users and businesses to register on the ARK mainchain. For more information, see section 11.5.
This transaction type, which requires business registration, grants users and businesses access to the ARK Deployer suite for bridgechain launching. For more information, see section 11.5.
More transaction types can be implemented into Core based on community need, and the ARK Public Network can select which transaction types to support to keep the main network lean. Consult roadmap.ark.io for status updates on various transaction types.
The ARK Core will implement a multisignature protocol, or multisig, redesigned from the legacy version. ARK’s multisignature implementation will require multiple keys to authorize an ARK transaction to be broadcast to the network. This implementation will enable users, developers, and businesses to divide responsibility of possession of ARK tokens. A practical implementation of multisig can be found in large Bitcoin exchanges, where a trusted group of individuals controls keys to one single wallet/address. Consider the example of an exchange controlling a cold wallet containing ARK. This exchange could implement a ‘3-of-6’ multisig which would give six separate passphrases for one address. This address will only be allowed to send transactions if three out of six keys sign, thus distributing responsibility of holdings while increasing security and minimizing risk. The pending ARK multisignature implementation is quite similar to Bitcoin multisigs using Schnorr multisignatures [43].
As of v2.2.0, Core has become a Node Version Manager (NPM) module that can be installed and interacted with globally. A built-in Command Line Interface (CLI) is now also available. NPM is the world’s largest software registry, and installation of Core is now effortless for anyone regardless of technical background. The CLI, which now integrates ARK Snapshot Manager, is an essential tool that enables any node operator to update, manage, or monitor their node installation without the need for external programs. All ARK-based bridgechains will also be able to take advantage of the ARK CLI toolset.
ARK Core is split into multiple standalone packages using Lerna to manage their development and publishing. Each part of the Core can be replaced by custom implementations. For example, a custom core-logger-logstash package could replace the default logger without affecting the stability of other components. All plugins are interconnected via the Core Plugin Manager package, which functions as a container to hold all of the instances that are shared across plugins [2].
The plugin manager enables the provision of different Bootstrap functions for processes like starting a relay node or a forging node. The plugin manager accepts two parameters, the path to a folder that contains a plugins.json file, and an optional parameter containing options like including and excluding plugins from the Bootstrap process or plugin-specific options not included in the standard configuration file [2].
Future plugins released by the ARK business entity as well as third party plugins will integrate into Core, adding new benefits. When deploying a custom blockchain, additional use case plugins can be developed and integrated without affecting the stability of the existing code.
The webhook API has been integrated into ARK Core to enable developers to listen to specific events from the ARK blockchain. Webhooks provide other applications with real-time information without polling and adding stress to the network. On average, 98.5% of polls are wasted and increase the workload on the server, making webhooks much more efficient. Based on user specifications, webhook notifications will be sent out with every block update, including transactions sent, transactions received, and other timing events built on the ARK blockchain [9].
ARK Core is now available for Docker, the industry standard for packaging applications into a container. The Docker image includes all dependencies such as the language runtimes and libraries within the container, making an all-in-one node installation quicker and easier [10].
An all-new local snapshot system has been developed, allowing node operators to use their copies of the database when needed. When starting a new node or rebuilding a node due to errors, local copies allow for fast and safe synchronization. The ARK Snapshot Manager, now integrated into ARK Core ( as of version 2.2.0), provides simple commands such as dump
, restore
, rollback
, truncate
, and verify
.
ARK Utilities is a separate library providing common functions for working with data and performing frequent tasks while simultaneously increasing performance across the ARK Core. Elements of the ARK Utilities library replace many of the third party dependencies on Core, and the dependency layer as a whole enables the provision a common API. This allows developers to swap out or affect changes to the implementations as they identify performance issues and other shortcomings, all without affecting the API. Extensive real-world testing has proven ARK Utilities to offer improvements as high as 12x over other libraries such as Native and Lodash [11].