Software Development Kits (SDKs) : Reborn
With ARK getting a totally new Core code, we felt it was necessary to streamline the same methodology and structure to our SDKs. As most of you know ARK has 15 SDK’s with more in the works. As such, the majority of our alternative programming language tools (most popular ones) have been rewritten from scratch.
Alternative programming language implementations to interact with the ARK blockchain have been re-thought, structured and re-written in a new way — each implementation has been decoupled and put into 2 repositories — Client and Crypto:
- Client — the purpose of each client is to allow easy communication between the public API and end-user, while also providing an easy way to manage multiple connections.
- Crypto — the purpose of crypto is to manage transaction serialization (AIP11), deserialization (AIP11), signing and verifying of transactions and to make it easy to work with transactions.
This is also known as a separation of concerns (SoC), which is a design principle for separating software into specific sections (each section challenges a separate concern), providing a layered and modularized way of development. The core value of SoC is simplifying development and maintenance of ARK’s software. When concerns are well isolated, individual sections can be easily reused, developed and updated independently. Additional value is the ability to improve or modify one section of the code at a later stage of development, without the need to know the details of other sections, and without having to make corresponding changes to those sections.
We’d also like to invite community developers who’d like to help keep these repositories updated to get in contact with our developer Brian in our Slack (Slack name “Brian [arkx.io]”) to talk more details.
With this new approach some of the old implementations will get deprecated in the upcoming weeks :
— Arky ( a Python repository, maintained by delegate toons, will stay available at : https://github.com/Moustikitos/arky )
— ARK-NET ( an old .NET implementation will stay available at : https://github.com/kristjank/ark-net )
— ARK-GO ( and old GOLang implementation will stay available at : https://github.com/kristjank/ark-go )
Others will be replaced by Client and Crypto Libraries, as seen at https://ark.io/developers
New guidelines for development of the new SDKs can be found at:
- Client guidelines: https://docs.ark.io/v1.0/docs/clients-guidelines
- Crypto guidelines: https://docs.ark.io/v1.0/docs/cryptography-guidelines
Let’s list currently redone implementations (note that some of the SDK documentation is still in the writing as each programming language has its own, along with Java and Swift crypto /client implementations in the final stages of development ready in the next few days):
JavaScript is now part of the default package inside of the new Core and is accessible as part of the Core codebase. We’ll add TypeScript definitions to the JS Client and JS Crypto so you can use one package for JavaScript & TypeScript instead of what we currently have, which are two separate implementations ARK-JS and ARK-TS.
Software:
- JS Client: https://github.com/ArkEcosystem/core/tree/master/packages/client
- JS Crypto:
https://github.com/ArkEcosystem/core/tree/master/packages/crypto
Documentation:
- JS Client Docs: https://docs.ark.io/docs/clients-javascript
- JS Crypto Docs: https://docs.ark.io/docs/cryptography-javascript
Software:
- PHP Client: https://github.com/ArkEcosystem/php-client
- PHP Crypto: https://github.com/ArkEcosystem/php-crypto
Documentation: - PHP Client Docs: https://docs.ark.io/docs/clients-php
- PHP Crypto Docs: https://docs.ark.io/docs/cryptography-php
Packages also published on Packagist: - PHP Client: https://packagist.org/packages/arkecosystem/client
- PHP Crypto: https://packagist.org/packages/arkecosystem/crypto
Software:
- Python Client: https://github.com/ArkEcosystem/python-client
- Python Crypto: https://github.com/ArkEcosystem/python-crypto
Documentation: - Python Client Docs: https://docs.ark.io/docs/clients-python
- Python Crypto Docs: https://docs.ark.io/docs/cryptography-python
Software:
- Go Client: https://github.com/ArkEcosystem/go-client
- Go Crypto: https://github.com/ArkEcosystem/go-crypto
Documentation: - Go Client Docs: https://docs.ark.io/docs/clients-go
- Go Crypto Docs: https://docs.ark.io/docs/cryptography-go
Software:
- Ruby Client: https://github.com/ArkEcosystem/ruby-client
- Ruby Crypto: https://github.com/ArkEcosystem/ruby-crypto
Documentation: - Ruby Client Docs: https://docs.ark.io/docs/clients-ruby
- Ruby Crypto Docs: https://docs.ark.io/docs/cryptography-ruby
Packages also published on RubyGems: - Ruby Client: https://rubygems.org/gems/arkecosystem-client
- Ruby Crypto: https://rubygems.org/gems/arkecosystem-crypto
Software:
- Elixir Client: https://github.com/ArkEcosystem/elixir-client
- Elixir Crypto: https://github.com/ArkEcosystem/elixir-crypto
Documentation: - Elixir Client Docs: https://docs.ark.io/docs/clients-elixir
- Elixir Crypto Docs: https://docs.ark.io/docs/cryptography-elixir
Packages also published on Hex: - Elixir Client: https://hex.pm/packages/arkecosystem_client
- Elixir Crypto: https://hex.pm/packages/arkecosystem_crypto
Software:
- Java Client: https://github.com/ArkEcosystem/java-client
- Java Crypto: https://github.com/ArkEcosystem/java-crypto
Documentation: - Java Client Docs: https://docs.ark.io/docs/clients-java
- Java Crypto Docs: https://docs.ark.io/docs/cryptography-java
As Kotlin programming language is a Java derivative, in the future any Java derivatives are supposed to use the Java packages itself.
Software:
- .NET Client : https://github.com/ArkEcosystem/dotnet-client
- .NET Crypto : https://github.com/ArkEcosystem/dotnet-crypto
Documentation: - .NET Client Docs : https://docs.ark.io/docs/clients-dotnet
- .NET Crypto Docs : https://docs.ark.io/docs/cryptography-dotnet
Packages also published on Nuget: - .NET Client : https://www.nuget.org/packages/ArkEcosystem.Client
- .NET Crypto : https://www.nuget.org/packages/ArkEcosystem.Crypto
Software:
- Swift Client: https://github.com/ArkEcosystem/swift-client
- Swift Crypto: https://github.com/ArkEcosystem/swift-crypto
Documentation: - Swift Client Docs: https://docs.ark.io/docs/clients-swift
- Swift Crypto Docs: https://docs.ark.io/docs/cryptography-swift
One of the most anticipated SDKs in development, C++, is also in the making (which will open the door to our IoT department and embedded systems). We’ll keep you informed of when it becomes available in a separate blog post (it’s very close).
If you are a developer then don’t forget you can take part of our Github Bounty Program where you can help with development and in return earn ARK tokens (plus if you are looking for a job at ARK what better way is there to apply than to prove your talent with code).
ARK.io | Github | Facebook | Twitter | Forum | Blog | Explorer | Shop