Posted at

NEMのモザイクを使って独自通貨を作ってみる

More than 1 year has passed since last update.


はじめに

これまでCounterpartyやEthereumなどで独自通貨を作っていましたが、

今回はNEMを使って独自通貨を作成します。

NEMにはnamespaceとmosaicという

独自通貨を作る上で、便利な機能を持っている為、独自通貨という用途として考えたとき、

利便性に優れているといえます。


NEMとは

NEMはNew Economy Movementの略称。

BitcoinやEthereumと同じように仮想通貨。(仮想通貨の単位はXEM)

ブロック生成間隔が約1分程度とビットコインなど他の仮想通貨と比較すると、

トランザクション承認のスピードが早いことが特徴。


NEMのnamespaceとは

インターネットのドメインのようなもので、サブドイメインのように階層を持つことができます。

このnamespaceは永続的なものではなく、1年間の有効期限付きで、継続するためには

1年毎に使用料を支払う必要があります。(最大文字数は16文字、サブは64文字まで可能です)


NEMのmosaicとは

トークンなどと呼ばれるもので、実際に取引される通貨のようなものになります。

planets:jupiter

planets:xxxx

のような感じでnamespaceの下に紐付けされていきます。


設定可能な項目

説明

フリーテキスト。自由に記述でき、後で変更可能。

初期供給量

発行数。ロックすることもできます。



実際に作ってみる


1.nano walletをインストール

https://nem.io/downloads/


2.サービスから、ネームスペース と ドメインの設定をする

注意点としては、上位のネームスペースのレンタル料として100XEM(記事作成時点のレートで2800円前後)がかかります。またサブドメインのレンタル料として10XEM (現在レートで280円)がかかります。レンタル期間は1年となり、継続して使用する場合には手続きが必要となります。

nem-howto1.png


3.モザイクを作成する

nem-howto3.png


4.モザイクを送信する

nem-howto4.png


5.作ってみた

supernovaというドメインを取得して、その下に、

planetsというサブドメイン、その下にjupiterというような名称のモザイク(仮想通貨)を

作成してみました。

Supernova

|-Planets
|-Earth
|-Mercury

http://chain.nem.ninja/#/browse/supernova.planets


nem-libraryを使ってJavaScriptから作成したモザイクを操作する

https://github.com/aleixmorgadas/nem-library-examples


インストール

npm install -g nem-library,rxjs


サンプル


get_balance.js

//アドレスのXEM + モザイクの残高を確認するサンプル

Object.defineProperty(exports, "__esModule", { value: true });
var nemlib = require("nem-library");
//MAIN_NET、TEST_NETなどから選択する
nemlib.NEMLibrary.bootstrap(nemlib.NetworkTypes.MAIN_NET);
//残高を確認するウォレットのアドレス
var address = new nemlib.Address("");
var accountOwnedMosaics = new nemlib.AccountOwnedMosaicsService(new nemlib.AccountHttp(), new nemlib.MosaicHttp());
accountOwnedMosaics.fromAddress(address).subscribe(function (mosaics) {
console.log(mosaics);
});


get_namespace_info.js

//作成したネームスペースやモザイクの情報を取得するサンプル

var nemlib = require("nem-library");
//MAIN_NET、TEST_NETなどから選択する
nemlib.NEMLibrary.bootstrap(nemlib.NetworkTypes.MAIN_NET);
var mosaicHttp = new nemlib.MosaicHttp();
var namespace = "supernova.planets";
mosaicHttp.getAllMosaicsGivenNamespace(namespace).subscribe(function (mosaicDefinitions) {
console.log(mosaicDefinitions);
});


おしまい