NEM - 100% new code. Easy APIs. Integration with Bank and over 5000 Business
Apostille vs Factom
Recently the new NEM Apostille White Paper was released, a document which explains and demonstrates the technology behind a brand new notarization and timestamping system natively implemented in the NEM Blockchain.
NEM is one of the top 10 blockchains (by marketcap) worldwide and has been recognized by the Chinese government as one of the most secure blockchains examined.
One of the core functionalities of any Blockchain system is immutability. This prevents hackers or malicious individuals from acting in an illegitimate manner and tampering with historical records. This functionality is highly disruptive, as up until the birth of Blockchain technology, maintaining immutable records has been a massive headache (if not impossible) for computer scientists, system administrators and auditors, companies, governments and individuals alike.
In mid-June 2014, Factom introduced the concept of Blockchain notarization to the Blockchain scene, inspired by some previous initiatives built on top of Bitcoin. However, development of Factom has not yet reached the production phase. Factom separates the Data Layer (notarizations) from the Value Layer (coin, funds). This allows anyone to notarize documents in a separate system, one which anchors its records to the Bitcoin Blockchain. This ensures the immutability of the data.
To make this possible, Factom requires Federated Servers, blockchain nodes, which run all of Factom’s operations and submit the results to the Bitcoin Blockchain every 10 minutes. But this process is not the most atomic nor transparent of solutions. Federated Servers are re-ranked every 4 hours by an election of the users, who have voting power dependant on the Entry Credits they’ve bought and used in the last six months.
Logically, this system of Federated nodes is not the most secure. They were amazingly innovative in 2014 when even Ethereum wasn’t yet released. However, Factom simply cannot compete with the technological advances of the last two years. Factom’s software is still in its Beta testing phase, so it is currently very risky to use, and companies may need to wait before it is a proven, stable solution.
A Holistic Blockchain Notarization System
The need for cheap and secure notarization and timestamping is crucial for the core operations of lots of the companies and governments on Earth. Until now, however, the solutions weren’t strong enough for production in our day to day transactions.
Following its commitment to build Blockchain business solutions natively on their platform, the NEM team has developed Apostille, a holistic blockchain notarization system. In this system, notarizations are not static one-time timestamps, but instead can now be dynamic, moving, changing, and updatable values on the blockchain. Companies or applications using and building upon this service can determine how their Apostille accounts are made and interact with the authority given by namespaces, the value and status represented by digital assets sent to that account, and the information sent as memos. Furthermore, they can optionally customize the open-source Apostille system to make an application convention framework to best utilize the above features.
The key innovation of the Apostille blockchain notarization service is not to just make a one-off timestamp of a fingerprint of a document, but instead to also take that document and combine it with the user’s account information to make a special and unique private key just for that file. That file’s dedicated private key is used to make an hierarchical deterministic (HD) account. The system then makes a fingerprint of the document by hashing its contents and then signing that hash with the private key of the user. That signed fingerprint is sent in a transaction to the HD account created from the file’s private key. This HD account now contains both file metadata and its fingerprint, so it can be said to be “colored” with that file.
Another thing about NEM Apostille is that these functionalities are native on the blockchain, so no trust is required, just like transactions. NEM Apostille is in the production stage, so you don’t have to worry about risky Beta software breaking and can be used via the NanoWallet available here.
Apostille for Mijn
Another advantage of NEM technology is that it is also used on the Mijin permissioned chains made by Tech Bureau. Mijin chains use the same APIs as the NEM chain and take advantage of the same core features of NEM and therefore can also run the Apostille service, but offer the advantage of high throughput up to 1000’s of transactions per second with no transaction fees to the consumers. Since a mijin chain is run by a private business, the consumers must trust the company providing the chain, but if anchored to the NEM public chain, it can provide full auditability and users can trust that the history hasn’t been altered.
As a summary of this article, Factom has been a good first approach for Blockchain notarization of documents, but its implementation is not prepared for real industry problems. It also relies on different protocols which have to be strongly coordinated, leaving more to go wrong.
NEM, on the other hand, has developed an integral solution in its core, offering extra features used to build Apostille, in a native, efficient and tested way.
The NEM team would like to thank Andreu Rodríguez from Atraura Blockchain for contributing this blog and Nicholas for reviewing it.
Simple proof-of-concept game launched
Gaming - NEM-Blockchain-enabled, using NEMs specific API feature
Players earn points by shooting others and exceeding a certain threshold these points can be withdrawn to their (Testnet!) NEM wallets in the form of XEM crypto currency tokens. DystopianFuture had so far set a “conversion rate” of in-game points to XEM of 10,000 : 1.
Please try out this funny online game athttp://nem.my/game and give your feedback comments via NEM's main Telegram channel https://t.me/nemred
Remember this is a multi-player game! The more participants the funnier it becomes. Try it out with your office-mates or friends! And try out NEM!
Quick manual: Move using the arrow keys Throw apples by pressing space bar Switch on/off Music: Enter key Aim: Use mouse
Get to know NEM through this game - then, learn more about NEM Blockchain Technology at https://www.nem.io.
NEM Blockchain and Xhai Studios announce partnership creating in-game support of XEM cryptocurrency
Blockchain technology is a cost-efficient technology that not only serves the financial industry well, but it can also be a transformative technology when applied to the video gaming industry. Game developers can now distribute their products on a new type of platform that is more direct, effective and cost efficient, thereby giving flexibility to both the developer and the gamer.
Xhai shall be using the revolutionary and best of class NEM blockchain technology platform.
Besides other functionalities, Xhai’s NEM-powered platform enables developers to bypass “middlemen payment processors”. This is accomplished by verifying identity and recording transactions through the use of the NEM blockchain technology. Xhai is set to disrupt the current mobile and video game landscape.
NEM’s crypto-currency, “XEM,” will be integrated into selected Xhai’s mobile video games. Not only will XEM be utilized to purchase in-app tokens but it will also be used to exchange collected game points into the XEM currency which incentivizes playing. Such a feature creates a new type of “crypto-economy” which provides a potential income stream for everyday gamers.
NEM’s API feature allows applications and games to integrate directly with blockchain nodes and does not require any third-party middleware or integration servers. Their technology ensures extensibility, scalability and future proofing. More importantly, NEM follows industry-standard API conventions.
Selected Xhai’s mobile games will include a full-fledged “XEM Wallet,” which features QR functionalities. Xhai chose NEM as its blockchain technology provider because of its outstanding flexibility and ease of integration, which leverages on its above mentioned API-call feature.
The built-in XEM wallet allows gamers to transfer game points amongst peers to/from their other NEM wallet apps, e.g. the NEM NanoWallet or the NEM Android wallet. In addition, the user can elect to transfer XEM to online exchanges, converting their “gaming proceeds” into any crypto-currency.
Xhai’s decision to use the NEM blockchain technology is a demonstration of the real value of the NEM’s platform. Its decision to use the public blockchain of NEM fits in well with the roadmap of NEM.
According to Lon Wong, President of NEM.io Foundation Ltd: “We already have a very strong traction with the use of the private chain (mijin) in many companies. The use of our public blockchain for this purpose comes at a good time where we are starting to showcase the application of our blockchain technology in the financial, logistics, IoTs, notarisation, and now, the game industries.”
As noted by Otto von Nostitz, President Xhai Studios: “We have already completed several games to be put onto a platform that is now being fine-tuned to integrate with the blockchain application and we hope to be able to roll out our first games using this technology in the coming months.”
About Xhai Studios
Xhai Studios (“Xhai”) is an innovative mobile game developer and publisher company co-founded in Cyberjaya, Malaysia by Sami Abuzarifa and Otto von Nostitz. Xhai has developed games for clients as well as published its own games and is now prepared to break new ground by applying blockchain technology to publish state-of-the -art games. For more information please visit our website xhaistudios.com.
About NEM.io Foundation Ltd
NEM.io Foundation is a non-profit organisation, set up to promote the NEM blockchain technology globally. It is currently one of the most well-funded and successful blockchain technology projects in the crypto industry. Its technology is currently being utilized in a variety of financial institutions and industries such as Hitachi with its 150 million customer base.
Coordinator at NEM Association of Malaysia and NEM Foundation.
Developing NEM Docker
The nem-docker is a Docker configuration with accompanying helper scripts published on GitHub. It is one of the easiest solutions to securely deploy and keep a NEM node up to date. This blog post will explain its structure and how it was developed.
Running in a container brings benefits like isolation, but it also has some caveats. Some examples are a lack of permanent storage, a specific network setup, and no init system. This config and accompanying scripts help get you up and running with a minimum of fuss, and even follows strict best practice, like checking the hash of the downloaded NEM software (do you do that when installing manually? ;-)). Let's see how it works.
Two Ways of Running Docker
Before running a docker container, you first need to build an image for it. You can see this step as building the filesystem of the container. There are two ways of doing this. You can build the image locally, or you can download an image from Docker Hub.
Pulling the Image from Docker Hub
Images are available on dockerhub for running either nisncc.
The NIS image is actually used by the Deploy on Azure scripts.
Each live in a specific git branch on GitHub (respectively named NISNCC). Both branches are based on a third branch named hub. Most changes take place in the hub branch, and the NIS and NCC branch only hold changes regarding which software needs to be started by default.
You can also build the image locally. The Docker config is held in the master branch on GitHub.
Building the image and running the container off of it is facilitated by the helper scripts is possible. This is actually the best-tested deployment method, and it is recommended that you do it this way.
Building the image
We will focus our attention on the locally built image because the repo holding the Dockerfile also includes sample config files, but differences with the images published on Dockerhub are minimal. For information on how to download the image, see the section below about "Running with Dockerhub images".
To run a Docker container, you first need to describe the image it will run off. This is done in the file name Dockerfile.
Let's look at the nem-docker Dockerfile, with links pointing to the relevant lines of the file on GitHub. The container image is based on Fedorapackages are installed.
The latest release is downloadedvalidity is checked. If the check succeeds, the archive is decompressed, and the NEM software will be available in the directory
/packagein the container.
It then proceeds by adding a nem user and creating some directories where the NEM software data will be stored.
The servant is also downloaded and installed, making this config suitable to run a supernode.
Docker is made to run one command per container. To work around this, which is needed if you want to run a supernode, the command run in our container is supervisord, which will control what software to run in the container.
When the image is built, a default supervisord configis placed in the image. This config simply defines the available services (NIS, NCC, servant) without starting any automatically.
Following this, the Dockerfile announces which ports the container will listen onwhich command will be run by the container.
Running the container
Now that we have built the image, we can run the container with the command
sudo docker run. However, there are some important things you need to know first.
All changes done on the filesystem of the container are specific to that container. When you want to upgrade to the latest NEM version, you will build a new image, and start a new different container, which will not have the changes specific to the old container. When running NIS, that would mean re-downloading the whole blockchain every upgrade.
The solution to this is to use docker volumes. The best way to use this is to mount a directory from the host to the container. This lets you inspect the content of the directory as the container runs. This is simply done by using the flags
-v /path/to/host/dir:/home/nem/nem, as the NEM software data is saved in the container in
You certainly want to have custom configs passed to the NEM software running in the container. This is easily done because similarly to mounting a directory in the container, we can also mount an individual file in the container. It is just a matter of mounting the right config file at the right location in the container. Here are the config file locations in the container:
- NIS: /package/nis/config-user.properties
- NCC: /package/ncc/config-user.properties
- Servant: /servant/config.properties
- Supervisord: /etc/supervisord.conf
If you have a custom config located at
/home/tom/nis.xml, you can use it by passing the option
Software running in the container will open TCP ports. Mapping these container ports to the host’s ports is done by the
-p container_port:host_portflag passed to
docker run. For example, to map the NIS port, pass the option
-p 7890:7890to docker run.
Let's now build our image and run a Docker container with NIS. First, let's clone the repo:
git clone https://github.com/rb2nem/nem-docker.git
then build the image:
cd nem-docker/ sudo docker build -t nem_image .
After some time you should see the last line starting with
We will run NIS in the container, and we want it to start automatically when we run the container. For that we need to update the supervisord config:
cp custom-configs/supervisord.conf.sample custom-configs/supervisord.conf edit custom-configs/supervisord.conf
This last line opens the file in vim on my system, but you may replace the
editcommand by your preferred editor. For beginners,
nanois very simple to use.
In the section
[program:nis]of that file, change the
autostart=trueand save the file.
For demonstration purpose, I will store the NEM data in
/tmp/nem(do not do this for your production setup, choose a base directory other than
/tmpor you'll lose those files at your next reboot...). Create that directory...
All is now setup for running the container. To run NIS you need to publish port 7890 with
-p 7890:7890, mount the NEM data directory from the host with
-v "/tmp/nem:/home/nem/nem", and mount the custom supervisord config with
-v "$PWD/custom-configs/supervisord.conf:/etc/supervisord.conf". Note that mounting files and directories in a container requires passing absolute directories, hence the use of
$PWD. which is the current working directory. Lastly, name the container
nem. The full command is:
sudo docker run -d -p 7890:7890 \ -v "/tmp/nem:/home/nem/nem" \ -v "$PWD/custom-configs/supervisord.conf:/etc/supervisord.conf" \ --name nem \ nem_image
-druns the container as a daemon, giving you the shell command prompt back.
The container will change the owner of the
nemdirectory to the
nemuser in the container, which has user id 1000, and it will give read, write and execute to the group of said directory. This should let go in the directory even if your user id is not 1000 on the host.
After a couple of seconds you should be able to request the running NIS on port 7890 of your localhost with this command (install curl on your host if needed, or use a web browser):
If you receive an error like this one: curl: (56) Recv failure: Connection reset by peer If is probably because NIS is still starting up. When NIS is up, you get this response:
Code 5 means
The local node is booted (implies NIS is running).. You can check the meaning of other codes.
If you don’t get a successful answer even after a couple of minutes, you can check the NIS logs in the file
When NIS is runnig,
curl http://localhost:7890/node/infogives you info about your node.
You can now safely stop and remove the container:
sudo docker stop nem sudo docker rm nem
Because no data is stored in the container, it can be safely removed. Next time you want to run it you issue the exact same
sudo docker runcommand, and it will start nearly immediately as it uses cached data to create the container and use the blockchain it has already downloaded.
Running with Docker Hub Images
Here are the commands to do the same as above using images published on Dockerhub rather than building your own.
As the rb2nem/nis image is configured to start NIS automatically, you don't have to change the supervisord config:
mkdir /tmp/nem sudo docker run -d -p 7890:7890\ -v "/tmp/nem:/home/nem/nem" \ --name nem \ rb2nem/nis
However, you still might want to override the default config files used in the container. To get the sample config file, just check out the repo and look under the
git clone https://github.com/rb2nem/nem-docker.git
Remember that in those sample configs, no service is autostarted. Don't forget to change the
An Easier Way?
We've seen how we can run NEM in a Docker container, but it requires running cumbersome commands. Couldn't we make it easier to use by using a script passing all these parameters as needed? Of course we can! The good news is that those scripts exist. We'll take a look at them in the next post covering NEM in a docker container.
The NEM Team would like to thank RB2 for contributing this blog.
NanoWallet Beta 1.3.0 released
Nanowallet Beta 1.3.0 has been released, you can download the new version here:
Changes in Version 1.3.0
- New design
- Address book
- Fix Apostille on Chrome and Safari
- No need to provide an account address to create a private key wallet, address will be shown automatically
- Same as above point but for creating multisig accounts
- Importance transaction module show the corresponding remote account address when a custom public key is provided
- Fix handling of decimal amount in normal transfer transaction, comma and dot decimal mark can be used
- Fix message fee
- Fix ‘unknown mosaic divisibility’ error when receiving a new mosaic
- Limit individual apostille file to 100MB
- Fix display of importance score
- Fix “FAILURE_TIMESTAMP_TOO_FAR_IN_FUTURE” using NIS time-sync API
- Lock app and show message if browser not supported
- New market data provider
- Minor fixes & improvements
This archive is certified using Apostille: Owner: NAMOAVHFVPJ6FP32YP2GCM64WSRMKXA5KKYWWHPY Apostille hash: 4e54590367f408c53daecd76cab98d09917fd72485ca9a4428119cce115a2838384dacf2 Transaction hash: 5b8847344028781eb566ffb60803ee1d7c427b3bd5c3dbcb92f1236207b0a293
If you have a Github account please report issues here: https://github.com/NemProject/NanoWallet21 otherwise you can let a message in this thread. Thanks
To receive a bug bounty, issues must be made in Github and have the payout address included. Jabo38 will filter and reward the bug bounties.
/!\ It is highly recommended to use latest Firefox, Chrome or Safari.
/!\ Microsoft Edge and Internet Explorer are not fully supported and could lead to the loss of your XEM if private key not backed up. For now, use of these browsers is locking the application.
Previous Nano Wallet version 1.2.12:
- Simple and mosaic transfers
- Namespaces & mosaics
- Create and edit multisignature contracts
- Delegated harvesting & income chart
- Plain & encrypted messaging
- Apostille module
- Transactions to alias (@namespace)
- BIP32 accounts
- NCC wallet support
- Market information
- Balance to BTC and USD
- Changelly Instant Exchange module
- Address book
Detailed comparison with other apps:
I – How to use Nano Wallet ?
No installation or local server needed. Once you have extracted the NanoWallet folder from the archive you can simply click on start.html to open the app in your default navigator.
II – How to import NCC wallet ?
Open NCC and your wallet, clicking on user icon should reveal a drop-down menu with “Export to ligthwallet”. Once your have your wallet (.json format), open Nano and import it. It’ll ask for an upgrade and trigger the download of your updated wallet.
III – Imported accounts that are already harvesting using NCC
NCC is using a different way to generate the remote associated with an account. Nano Wallet uses BIP32 to generate it deterministically and make everything easier. In order to manage and monitor harvesting, you’ll need to deactivate the old remote account from NCC and activate your new remote account from Nano.
/!\ Later note for main network: If you are part of the Supernodes program you’ll need to re-enroll your node using your new delegated public key.
IV – Update Nano Wallet
Before update make sure that you don’t have any wallets stored into the NanoWallet folder (you can place them anywhere you want). Then, just delete old version and unzip new version.
- Sometimes unconfirmed transactions does not show up for cosignatories
For more information and support please visit the NEM Forum at: