Catapult Developers Preview — SDK

COE Tech Series

NEM is 3 years old and a lot of software has already been built on top of it. We have been involved in supporting various projects and by doing so, we learned about the difficulties that occur in the development process in a field where technology is constantly evolving.

In order to stay on top of this rapid development pace, we are continuously analyzing, developing, and closely observing the NEM community. This is vital to create sustainable growth and to create future proof technology for individuals and companies.

With the help of the community, we have managed to identify the current drawbacks:

1. A significant amount of specific implementation code exists related to NEM

NIS1 API allows developers to choose the programming language they like, but it comes with the implication that not everything is handled by the API, e.g. signing a transaction, key pair generation, etc. This amounts to time spent developing, which is not directly related to the problem at hand.

2. There is hardly any knowledge sharing between projects.

At the moment, each NEM based project is developing its own tools and implementing the technology in different ways. It is because of this, that we intend to create a knowledge center to provide guidelines and best practices to solve common obstacles.

3. The different wrappers, libraries and SDKs of NIS1 do not share any design, architectural decisions nor naming conventions.

Have you used csharp2nem on a server and then switched to nem-library to build the web page? If so, then you had to spend some time to understand the different naming conventions and underlying patterns. Resulting in, decreased learning and development speed when switching between programming languages.

“An evolving system increases its complexity unless work is done to reduce it.” — Meir Lehman

The Center Of Excellence intends to address the previously mentioned problems by providing a complete Software Development Kit, that greatly enhances NEM development experience.

Nem2-sdk goals are:

Provide an abstraction layer of NEM2

Reduce complexity of developing NEM2 Libraries and Applications

Enable cross language design

Be Lightweight

It should be emphasized that nem2-sdk is not an NIS2 API wrapper, but a full featured SDK. That’s why we, the NEM Center of Excellence team, are rigorous in creating an SDK that match NEM’s goals and long term strategy. This SDK is after all, the base for all other components that we are building.

Here is the current catalogue of supported languages:

Java, Kotlin & Scala: Done

Typescript and Javascript: Done

C#: Work in Progress by @kodtycoon

PHP: Work in Progress by @evias, open to new contributors

Go: Work in Progress by @brambear, open to new contributors

Python: Planned, looking for a developer

Ruby: Planned, looking for a developer

Providing full SDK support for the most common languages is challenging and the reason why we would like to invite the developer community to join forces with us at GitHub. Basic tool creation is essential to facilitate NEM blockchain adoption.

Furthermore, at the moment the Center of Excellence is searching for the following roles:

Senior Backend Developer (C++)

Senior Backend Developer (Node.js/MongoDB)

Senior Frontend Developer (Typescript, Javascript)

Senior QA Engineer

Senior Test Engineer

System Administrator

UX Designer

BONUS: Penetration Testing, Python, PHP, GO, Ruby, Swift