8. ARK Peripherals

8.1 Expanding on Core

Driven by a lean, extensible, and powerful Core, ARK can expand its value proposition through useful peripherals including Software Development Kits (SDKs), external products, open source projects, branded plugins, and more. The entire range of peripherals is available on any deployed ARK blockchain, offering users and developers all they need right out of the box.

8.2 ARK Software Development Kits

With ARK SDKs, developers can employ the programming language of their choice to build applications utilizing the ARK blockchain. Each implementation is split into two sub kits: Client and Cryptography. Client sub kits help developers fetch information from the ARK blockchain about its current state, such as which delegates are currently forging, what transactions are associated with a given wallet, and so on. Cryptography sub kits assist developers in working with transactions, such as signing, serializing, deserializing, and the like.

The following SDKs are currently available:

C++

C++ is widely used in embedded systems software engineering. C++ can be run on microcontrollers such as Arduino and Raspberry Pi, and its addition pushes ARK further into the world of IoT [12].

.NET

The .NET motto is Any developer, any app, any platform! As such, this framework is very popular in corporate settings. It is the perfect tool for startups and hobbyists who are just starting out with ARK [13].

Elixir

Elixir takes advantage of the Erlang VM, which is known for running low-latency distributed and fault-tolerant systems while also being successfully used in web development and embedded software domain [14].

Go

GoLang is an open source programming language developed by Google and designed for building fast, simple, and reliable software. GoLang is often compared to Python for its user-friendliness [15].

Java

Java is a general-purpose computer-programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few implementation dependencies as possible. With ARK’s Java SDK design, it is easily to re-use Java Crypto and Client packages to integrate into popular frameworks such as Kotlin, Groovy and Scala [16].

JavaScript

JavaScript is an object-oriented computer programming language commonly used to create interactive effects within web browsers. ARK Core is written in TypeScript, a more stringent iteration of JavaScript [17].

PHP

PHP is an extremely popular open source scripting language that is well suited for web development as it can be embedded into HTML. PHP is used as a server-side programming language for over 80% of working websites [18].

Laravel

Laravel is an important member of a new generation of frameworks [19]. It is a free, open source, PHP web framework with expressive, elegant syntax intended for the development of web applications [20]. Laravel is extremely popular with developers ranging from hobbyists to enterprise level. Laravel is very highly ranked according to Github [44].

Symfony

Symfony is a set of reusable PHP components and a PHP framework for web projects. It allows for rapid production and maintenance of PHP web applications and ends repetitive coding tasks. This also benefits developers as they can also add their own modules. Symfony is popular in the enterprise space [21].

Python

Python is a great starting language widely taught in universities and used for working with beginner and IoT-friendly devices such as the Raspberry Pi. Python is easy to learn, readable, powerful, and fast. The wide availability of Python IDEs along with Python’s exceptionally large library make it an especially accessible and popular language [22].

Ruby

Ruby is a dynamic, reflective, object-oriented, general-purpose programming language. It supports multiple programming paradigms including functional, object-oriented, and imperative. It also has a dynamic type system and automatic memory management [23].

Rust

Many large and small companies use Rust for a variety of tasks such as command line tools, web services, DevOps tooling, embedded devices, audio and video analysis and transcoding, cryptocurrencies, bioinformatics, search engines, Internet-of-Things applications, machine learning, and even major parts of the Firefox web browser [24].

Swift

Swift is a powerful and intuitive programming language for macOS, iOS, watchOS and tvOS. Writing Swift code is interactive, the syntax is concise yet expressive, and Swift includes a host of features that make it particularly developer-friendly. Swift code is safe by design, and produces software that runs lightning fast [25].

Wolfram

The Wolfram Language leverages built-in computational intelligence that relies on a vast depth of algorithms and real-world knowledge carefully integrated over three decades. Wolfram is heralded as the first true computational communication language for humans and AIs. Wolfram is adding full read and transactional write support for ARK [26].

RPC

The JSON-RPC compliant SDK was created to aid organizations with the integration of ARK in their existing RPC based infrastructure when extenuating circumstances make using the ARK Public API less than ideal [45]. All operations provided by the JSON-RPC can be performed using the ARK Public API [27].

Additional Resources

8.3 ARK Test Suite

Most software developers are aware of how difficult it is to get full test coverage over different testing phases that must take multiple stakeholders into account [58]. Now add blockchain mechanics to that recipe, and think about how to test distributed systems, their mechanics, security, block propagation, transaction management, transaction pool handling, fork management, client API - things get dicey.

With these challenges in mind, it was paramount to select a powerful and flexible testing framework. Upon assessing the market for options, it was decided that the Jest Framework best suited ARK’s needs. Jest was developed and is used by Facebook to test all of their JavaScript code including React applications. Jest is also used by Airbnb, Twitter, Pinterest, Instagram, and Oculus [2]. We are establishing a common base for ARK developers, delivering the best possible tools, like powerful mocking, snapshot testing, built-in code coverage, and zero configuration. ARK Test Suite also facilitates cross-team collaboration with testing appearing uniform across different sections of code. By doing so, we deliver valuable implementation examples that enable newcomers to learn and understand the existing code, as uniformity ensures platform integrity.

Additional Resources

8.4 ARK Explorer

The ARK Explorer is a fundamental tool, designed and developed from the ground up using the leading developmental frameworks Tailwind CSS and Vue.JS [38]. Sporting an aesthetically pleasing design, the ARK Explorer boasts features such as light and dark mode, multi language support, and token price tracking.

The ARK Explorer provides the user with critical data such as viewing the latest transactions and blocks, searching for wallet addresses and transactions, viewing wallet address rankings, and monitoring delegates for visibility on network state.

Additional Resources

8.5 ARK Desktop Wallet

The ARK Desktop Wallet is a multi-functional application written from scratch using VueJS and TailwindCSS and implementing the latest Electron framework [30]. The structure of public and private key generation follows the same specifications as Bitcoin, with the exception of using BIP-39 passphrases for end user ease of use. A custom implementation of BIP-32 for Hierarchical Deterministic Wallets is provided to ARK users. The ARK Desktop Wallet supports multiple transaction types and enables end users to determine transaction costs via the introduction of dynamic fees. Customization was an important factor during wallet development to ensure that developers, businesses, and end users could personalize the the application for their own requirements. Accordingly, the Desktop Wallet is now modular with the advent of wallet plugins. Bridgechains can implement use cases directly into the ARK Desktop Wallet, and third party developers can enhance its features. With support for multiple ARK networks enabled, the ARK Desktop Wallet is a key tool for all users in the ARK Ecosystem.

The ARK Desktop Wallet is a lite client, working in tandem with ARK DPoS to deliver a seamless experience. Users can launch the wallet and interact with the blockchain immediately, with no need to sync. Bridgechain registration in Core 2.6 will automate the addition of all bridgechains to the application for virtually effortless discovery and management. All ARK and ARK bridgechain wallets are additionally compatible with the Ledger Nano hardware device, offering passphrase management in a secure sandbox. The wallet is integrated with Changelly on the ARK Public Network, enabling users to acquire ARK using other cryptocurrencies and fiat from directly within the wallet.

The ARK Desktop Wallet is available on the Windows, Mac and Linux operating systems.

Additional Resources

8.6 ARK Mobile Wallet

The ARK Mobile Wallet is a hybrid application that uses the same code base for Android and iOS to help coordinate development across platforms. In the future, however, native apps will be developed to achieve better performance. The ARK Mobile Wallet currently uses the Ionic framework and ARK’s TypeScript API to interact with the network via mobile device [31]. The wallet supports multiple transaction types and the dynamic fee implementation of the desktop wallet.

The ARK Mobile Wallet is available on the Android and iOS operating systems.

Additional Resources

8.7 ARK Pay

ARK Pay is a simple open source library that brings ARK to online retailers. ARK Pay is an officially supported plugin that provides developers with a plug-and-play module to allow easy implementation of ARK as a payment method on websites and within web-enabled applications. ARK Pay also utilizes a customized URI scheme, enabling the auto-fill of wallet parameters via clickable link or QR code [32].

The next iteration of ARK Pay will also enhance the transaction management experience. The custom developed backend will have verification and order processing on the server side instead of polling the blockchain via public API. By simply inputting their network parameters, ARK bridgechain developers will also be able to quickly install the ARK Pay plugin.

Additional Resources

8.8 ARK Deployer CLI

ARK Deployer CLI is a lightweight deployment script for creating ARK- based blockchains. Designed to be user-friendly, ARK Deployer CLI enables the following:

  • Deployment of ARK node in auto-forging mode on a single computer or server, with a chosen number of forging genesis delegates. Genesis delegates act as initial placeholders until node operators in the field replace them. Custom parameters can be configured such as block times, transaction fees, block rewards, transactions per second, and so on. Bridgechains can under certain conditions theoretically attain thousands of transactions per second.

  • Deployment of ARK Explorer pre-configured to immediately sync with the installed ARK node.

  • Configuration of the ARK API to enable developers to start exploring, hacking, and developing solutions based on ARK technology [33].

Additional Resources

8.9 ARK Deployer GUI

ARK Deployer has been upgraded with a graphical user interface that will allow developers to visually configure their blockchain parameters and selected plugins without the need to interact with the Deployer CLI. Over time, complex processes will become simpler, and creating custom blockchains will become akin to designing a website with WIX or Squarespace.

There are three steps in the deployment process:

  • Prepare. Use the documentation hub to learn how to design an ideal network, create and connect to servers, and configure GitHub.

  • Customize. Use the graphical user interface to customize blockchain parameters. There are three levels of customization offered - Basic, Intermediate, and Advanced. All three result in a full-featured blockchain, but use default values as needed to speed up design time and offer a better user experience.

  • Deploy. Install the new bridgechain on a genesis node and create seed peers. The documentation hub provides procedures and guides on how to do this.

Additional Resources