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.
- Loose Coupling: Reducing the degree of component coupling fosters.
- Abstraction: Increasing long-term consistency of interoperability and allowing underlying components to evolve independently.
- Reusability: 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.
- 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
- Specified the first language that we support (TypeScript)
- Specified in the future work that we will support more languages