NEM Library Community Proposal

Learn it once, Code everything

Introduction

NEM Library is an abstraction for NEM Blockchain using a Reactive approach for creating Blockchain applications.

This project is being proposed to be funded with 1 million XEM from the Community Fund.

Active members: @guillem – Developer @aleix_mp – Developer, who have been active in the NEM Community. @jabo38 as Advisor

Community Voting has finished

The Community voted yes with a 4.86753% POI

The Poll account:

NCYTMBMTZDUKGCFEH7OCRAGMUL3MCXT6MLVF7V6P

Getting started with voting

Start the newest NanoWallet version >= 1.4.10 and login to your account. (only mainnet)

Click on Services and start the Voting module (“see polls”).

Watch out for the vote:

“Community Funding Proposal Vote for NEM Library - September 2017”

Goal

The NEM Blockchain provides an easy integration via its API, enabling any developer to choose his/her favorite programming language to use NEM.

This approach allows every developer to use the NEM Blockchain in his/her own manner, making it difficult for NEM Developers/Projects to share a code base due to the lack of standardized tools.

We have noticed the need of creating a stable tool that provides a common/standard way to interact with NEM using the common programming paradigms. We wanted to address it and we started developing the NEM Library.

NEM Library aims to address the NEM development issues to have stronger and more cohesive NEM Developers, accelerating the NEM adoption by the industry, increasing the development speed and lowering the learning curve.

NEM Library first version is developed using TypeScript language, providing support for TypeScript, ECMA2015 & ECMA2016. It will support automatically ECMA2017 when TypeScript will add the support.

NEM Library main characteristics are:

Usage of standard paradigms as Object Oriented Programming to model the different concepts of NEM, encapsulating the data and the behaviour.

Usage of the n-tier architecture

Multi platform support: Support for Browser, Backend and Mobile Applications from scratch.

High availability library: Ensuring a high uptime of the applications with a Connection Pool. If some node is offline, it will retry the request with other node automatically.

Testable components

Detailed documentation

More characteristics can be found here

NEM Library core values are:

Standardized Contracts: Guaranteeing interoperability and harmonization of data models.

Guaranteeing interoperability and harmonization of data models. Loose Coupling : Reducing the degree of component coupling fosters.

: Reducing the degree of component coupling fosters. Abstraction : Increasing long-term consistency of interoperability and allowing underlying components to evolve independently.

: Increasing long-term consistency of interoperability and allowing underlying components to evolve independently. Reusability: Enabling high-level interoperability between services and potential component consumers.

Enabling high-level interoperability between services and potential component consumers. Stateless: Increasing availability and scalability of components allowing them to interoperate more frequent and reliable.

Increasing availability and scalability of components allowing them to interoperate more frequent and reliable. Composability: For components to be effectively composable they must be interoperable.

For these reasons, it empowers the actual developers and newcomers to cooperate in the actual or new NEM projects, being productive from the minute zero thanks to this shared knowledge base and the usage of a common language.

Open Source MIT License

Once the version 1.0 is released, it will be published under Open Source MIT License.

Future

When the version 1.0 is published, our work will be support and help NEM to grow as much as we can.

NEM Library development of new features

NEM Library documentation maintenance

NEM Library formation

Cooperation with NEM

Port the NEM Library to other languages

Milestones

Milestone 1 - 35 % (350.000 XEM) Accomplished

Project definition and structure

Immutable data interfaces

Client side signatures

Repositories AccountHttp and TransactionHttp, BlockHttp, ChainHttp, NodeHttp, NamespaceHttp and MosaicHttp.

Endpoints return immutable models instead of immutable interfaces

Transaction, account, namespace, mosaic and blockchain models

Transaction fees

WebSocket support

Listeners

Wallets (simple wallet and brain wallet)

Encrypted Messages

Pagination in transaction and harvest info requests

Enable Https protocol

Documentation nemlibrary.com

Milestone 2 - 25% (250.000 XEM) Accomplished

Paginated models structure is Reactive Modeled

Secure brain wallet password must be at least 12 seed word password to avoid collisions and increase security

Transaction request by hash

Persistent Wallets

Model MosaicTransferable to calculate mosaic transfer transaction fees

XEM, EcobitEco, DimCoin, DimToken mosaics

Connection pool

Enable select manually the NIS nodes

AccountOwnedMosaicService to get all MosaicTransferables of an account.

MosaicService to fetch the Mosaic information and calculate the levy of a Transfer Transaction with Mosaics

QRService generating and decrypting account private key, address, and transaction QR codes

Angular 4 seed project

Ionic 2 seed project

TypeScript Sample code repository

Documentation

Milestone 3 - 40% (400.000 XEM) Q4 2017

Mijin integration

Enable multiple environments

Translate documentation to Japanese

Error handling strategies

Concurrent data fetching

Standardize the method to share the private key between devices using cryptography

Enable multiple strategies to send Encrypted Messages via a Multisig Transfer Transaction

Create strategies to handle the confirmation of the transactions included in a block

Release under Open Source License (MIT)

Documentation

Future work

Development of new features

Documentation maintenance

Formation

Cooperation with NEM Foundation

Port the NEM Library to other languages

NEM Library Angular 2 and Ionic 2 seeds

We have created two seeds as part of the NEM Library project with the following goals:

Help new developers start coding with NEM Blockchain using the seeds and understanding how NEM works, as well as which are the main NEM functionalities and benefits.

Allow developers bootstrap them NEM projects into an Angular and/or Ionic project.

Together with the community, extend these projects and add functionalities, making it become a huge NEM Blockchain knowledge base to help the two first goals.

Test the angular 2 seed at https://guillemsole.github.io/nem-library-angular2-seed/

Source code angular 2 seed: https://github.com/guillemsole/nem-library-angular2-seed

Source code ionic 2 seed: https://github.com/guillemsole/nem-library-ionic2-seed

Angular 2 seed view



Ionic 2 seed view

Integrated projects

NEM Authenticator

NEM Authenticator is a 100% decentralized 2 Factor Confirmation system to secure your account assets from being stolen using the NEM Blockchain native features. The system consists in two applications:

Web Page: Generates and manages the NEM Authenticator accounts to secure the assets via a clean and easy to use interface.

Mobile Application: Lists all pending transactions to be confirmed by the account owner, displaying all the critical information of each transaction before the transaction is signed.

NEM Authenticator system is aimed to prevent the user to loose its assets when a device is compromised and it gives an easy way to remove the compromised account when the private key is stolen by a evil user. So, the evil user cannot move your assets without the confirmation of the second device, making it a robust system to manage your assets and an easy method to operate with them without compromise the security.

The system works for NEM MainNet and TestNet.

Source code: https://github.com/aleixmorgadas/NEM-Authenticator

Post How NEM Authenticator is made

NEM Pay

NEMPay is a mobile app developed by Atraura Blockchain that allows sending and receiving NEM mosaics easily and securely. Just selecting the asset to be sent from the balance, typing recipient’s address and the amount to be sent, a quick transaction could be sent just in some seconds. Distributed as an open source solution, organizations and individuals can take advantage of NEMPay, using it as a boilerplate for creating their own NEM applications. An example of use case is the creation of an app to transfer assets such as tickets, coupons, stocks or even share representation, cutting cost of acquisition, as there is no need to code a new app.

Source code: https://github.com/dgarcia360/NEMPay

Social Media

Inside NEM https://youtu.be/viRR05IBsUc?t=9m52s

NEM of Tony https://youtu.be/vZ2-22PGse4?t=2m51s

KingofDew https://youtu.be/-1CrtlVU8LM?t=4m36s

CryptoGordo https://youtu.be/XONDxy-Pnoo?t=18m41s

NEM Library launch medium https://medium.com/@aleixmorgadas/releasing-nem-library-edcda90f45fd

NEM Library angular 2 seed medium https://medium.com/@gsolecubilo/nem-library-meets-angular-2-33a154047ab9

NEM Library ionic 2 seed medium https://medium.com/@gsolecubilo/nem-library-meets-ionic-2-a157d4862584

Statistics

NEM Library can be downloaded using the node package management (https://www.npmjs.com/package/nem-library), project statistics in terms of downloads are:

2.678 downloads in the last week

9.255 downloads in the last month

20.099 downloads in the last year

https://npm-stat.com/charts.html?package=nem-library

Relevant information

Project Details and Summary: Discussed above, but more details will be given on the forum or to the core team for review upon vote.

Real Identity: Aleix and Guillem will be revealing their identity during the project applications process to the Core Team reviewing the proposal.

Change log

31/08/2017

Added the poll address

Added the voting information

3/09/2017