NEO(ネオ・ニオ)でNEP5に準拠した独自トークンを実装する方法

how-to-create-nep5-token-neo

どうも、 エンジニア向けの記事もちょくちょく書いているヤバWEBです。

今日は

NEO(ネオ/ニオ)でNEP5に準拠した独自トークンを実装する手順

について書いていきます

NEO(ネオ/ニオ)とは?

まず、NEO(ネオ/ニオ)について簡単に説明します

ちなみに、日本人はNEOのことを“ネオ”と発音してるけど

海外の人は

“ニオ”

って発音してます

日本では間違った発音で広まっちゃってるから

“ニオ”って呼ぶと玄人感がでます!←

このNEOは

中国版イーサリアム

なんて呼ばれていて

中国を中心に開発が進められてる

スマートコントラクトのプラットフォーム

のことを指します。

NEOを使用して独自トークン・dAppsの実装ができます。

イーサリアムの独自トークン実装については以前
別の記事で書いてます

イーサリアム(Ethereum)で独自トークンを作ってテストネットにデプロイするまで

イーサリアムの開発には専用のプログラミング言語である

Solidity

っていう言語を勉強する必要がありますが

NEO(ネオ)は特定のプログラミングに依存せずに開発できる環境を整えていっていて

いまだと以下の言語のサポートが比較的充実してます

サポート言語
  1. .NET
  2. Java
  3. Kotlin
  4. VB
  5. Javascript
  6. TypeScript
  7. Python
  8. Go

なかでもいまはC#の開発環境が充実してるっていう印象を受けました

JavaやPythonの対応も進んできてるけど
他の言語はまだまだこれからサポートされていく!って感じです

ちなみに、NEOのdAppsは以下のサイトから確認できるよー!

▶︎ NEO dApp List

NEP5に準拠したトークンの実装

NEOで独自トークンを実装するときは

NEP5に準拠したトークンを実装する必要があります

NEP5っていうのはトークンを標準化するための仕様のことで

イーサリアムでいうERCのようなものです

5番目の仕様だからNEP5といいます

現時点ではこれがスタンダードのようです

詳しい内容は以下のリンクからみれます

▶︎ nep-5.mediawiki

ざっくり以下を実装する必要があります

これらは必ず実装しなければいけないメソッドです

NEP5トークン
  1. totalSupply: 合計供給量
  2. name: トークン名
  3. symbol: トークンのシンボル
  4. decimals: トークンの桁数
  5. balanceOf: アカウントの残高を返す
  6. transfer: 送金メソッド

他にも任意で実装するメソッドもいくつか用意されてます

任意で実装できるメソッド
  1. allowance
  2. transferFrom
  3. approve

これらを実装してブロックチェーンにプログラムをアップすることで

NEOバーチャルマシン(VM)でプログラムが動作するようになります

開発環境の設定は以下のリンクを参考にすればうまくいくかとおもいます

C#の開発環境が一番整備されてるから

C#にの環境設定についてのリンクを紹介します

Macの人はこちら

▶︎ macOSにおいてC#を使用してNeoスマートコントラクトを作成する方法

Windowsの人はこちら

▶︎ C#を使用してNeoスマートコントラクトを作成する方法

ざっくりこのチュートリアルで使用するツールを
リストアップするとこんな感じです

開発で使用するツール

チュートリアルをそのまま進めていけば
開発環境自体は比較的簡単に整います

Visual Studioはプログラムの実装・コーディングに使用します

neo-compilerはプロジェクトのダウンロードが完了したら neo-compiler.sln ファイルをVisual Studioで開いてビルド

ビルドが完了すれば neo-compiler/neon/bin/Debug/netcoreapp2.0 ディレクトリに
.ddlファイルができるます

.NET Core Runtime 2.0.5のインストールが完了していれば

dotnetコマンドを使用できるようになっているはずです

Visual Studioで簡単なサンプルを実装して

プロジェクトをビルドすると同じように .ddlファイル ができるので

そのファイルを neo-compiler/neon/bin/Debug/netcoreapp2.0 ディレクトリにコピーして

サンプルで作ったファイルを neo_practice.dll とすると

こんな感じでコンパイルできるようになる

dotnet neon.dll neo_practice.dll

コンパイル結果は以下のようになります

Neo.Compiler.MSIL console app v2.0.3.1
Find entrypoint:System.Boolean Class1::Main()
convert succ
gen abi succ
write:neo_practice.avm
write:neo_practice.abi.json
SUCC

ひとまずチュートリアルでここまでできればOKです

NEP5トークンの実装で参考になるドキュメントやコード

NEP5トークンの実装で参考になるドキュメントや
ソースコードについて書いていきます

まずドキュメントはこちら

▶︎ NEO スマートコントラクト チュートリアル

このチュートリアルを順に進めていけばコントラクトのデプロイまでできるようになります

その際に、neo-guiっていうツールのダウンロードが必要になります

このツールを使用すれば

NEO VMへのデプロイを容易に行うことができるようになります

次に参考になるソースコードですが

NEP5に準拠した実装例があります

このコードを読んで

実際に独自トークンを実装するときの参考にできます

▶︎Woolong.cs

あと、ICO用の実装サンプルも用意してくれてます!

▶︎ ICO_Template/ICO_Template.cs

これに関しては以下の部分を書き換えるだけで

テストネットにデプロイすれば

実際にトークンセール参加のテストなんかもできたりします

ここでNameやSymbol、オーナーのウォレットアドレスを変更

public static string Name() => “name of the token”;
public static string Symbol() => “SymbolOfTheToken”;
public static readonly byte[] Owner = “ATrzHaicmhRj15C3Vv6e6gLfLqhSD2PtTr”.ToScriptHash();

ICOの参加日時をunixtimestampで指定する

private const int ico_start_time = 1506787200;
private const int ico_end_time = 1538323200;

あとはこれをテストネットへデプロイして動作確認

ここまで用意してくれてるのは嬉しいですね(個人的には使わないですがw)

テストネットでテスト用のNEO・GASを受け取る方法

NEOで実際にトークンを実装してテストネットへのデプロイや

動作確認をしたい場合に

テスト用のNEOやGASが必要になります

それらに関しては以下のURLから

申請することで指定してウォレットで受け取ることができます

▶︎ Apply For TestNet NEO&GAS

NEOのウォレットアプリや開発まわりのドキュメント

NEOにはいくつかウォレットアプリがあって
以下のURLからそれぞれ確認することができます

▶︎ Get Client

自分は実際にNeon Walletを使用して

トークンセール参加のテストをしてみましたが

なかなか使いやすかったです

▶︎ Neon Wallet

また、NEOについてや開発周りのドキュメントはこの”awesome-neo“っていうGitHubリポジトリで確認することができます

例えば、SDKの対応状況なんかも確認できます

▶︎ awesome-neo#sdks

ソースコードの例なんかもここから確認できます

▶︎ awesome-neo#code-examples

以上、ざっくりやけどNEP5トークンの実装に役立つ情報を書いてました

公式ドキュメントが豊富で

ちゃんと読み込んでいけば

そんなに実装には困らないかなぁって感じです