

はい、というわけで今回はイーサリアムトークンであるNANJCOINのコードについてです!いつものまとめに詰め込もうとしたら、ぎっちぎちのすし詰め状態にw NANJCOINはERC223という規格を使用しているんですね。これについては、ちょうど記事にしようと情報をまとめていたところでした。そんな時、ディスコード内でエンジニアの方が詳しく詳細をまとめてくれていました!
記事内で取り上げることを、お二人に許可をいただきましたよ!お二人とも本当にありがとうございます!


まっっっったくコードについての知識のない僕目線で、その書き込みをできるだけ噛み砕いて紹介していきたいと思います!(思った以上に知らないことが多く結構調べました)まずは、『そもそもERCってなんやねん!』ってところから始めていきますね。
そもそもERCって何?
というわけでERCという規格について、なんの略かというと『Ethereum Request for Comments』という略で、イーサリアムに関する技術仕様が書かれた文書のようなモノです。イーサトークンのベースですね。
提案書という表現が正しいですかね、この文書がERCとして公開され問題提起されます。そこから検討され承認されることでEIP(Ethereum Improvement Proposals)として取り上げ、正式にイーサリアムの仕様として採用されます。
- 問題提起→検討→承認→正式にイーサリアムの仕様として採用
この過程については、こちらできっちりまとめられていますのでご覧ください。

ERC20について
ERC223について解説していく前に、ERC20の説明を欠かすわけにはいかないと思うのでまずはこちらから解説します!
そもそもERC20とは『Ethereum Request for Comments Token Standard 20』の略称で、仮想通貨の名前ではないんですね。ERC20は、20番目にトークン仕様について議論されたモノで、『20』という数字はその順番のことです。
NANJCOINがそうですよね、ERC223なんて呼びませんよねwあくまでERC223は規格の名前です。
ERC20のメリット
この規格に準拠してトークンを発行することで
- 1からトークンを発行しなくていい
- トークンの技術のベースが同じなので、取引所やウォレットがトークンをまとめて扱うことができる
- トークンに合わせてウォレットや安全性を考えなくていいので、ICOに参加しやすい
というメリットがあります 。トークンを『作りやすい、扱いやすい、そしてICOに参加しやすくなる』というメリットがあるんですね。
MyEtherWallet(マイイーサウォレット )が、様々なイーサリアムトークンに対応しているのがそうですよね。トークンの技術ベースが同じなので、まとめて1つのウォレットで取り扱えているというわけですね。
ERC20のデメリットを解説するまえに
イーサリアムは、スマートコントラクト(プログラムに基いて自動的に実行される契約)を用いていて、コントラクト(契約情報)をブロックチェーン上で管理しているプラットフォームです。
スマートコントラクトを初めて導入した例として、自動販売機があります。この2~4の流れを自動で行うのがスマートコントラクトの特徴です!
- お金を必要額入れてボタンを押すと商品が出るという契約をプログラミング(契約定義)
- お金を入れてボタンを押す(イベント発生)
- 商品が出てくる(契約執行)
- お金と商品の交換完了(決済)
ERC20のデメリット
メリットがあればもちろんデメリットがあるわけですね。かなりざっくり簡単にデメリット説明すると、ERC20の規格を使用したトークンの送金時にアドレスを間違えると、引き出せなくなり2度と戻ってきません。電子の海に消えますw
ブロックチェーン上に記録されているコントラクトにはアドレスが割り振られていて、通常のウォレットアドレスではなく、その割り振られたアドレス宛にトークンを送金してしまうことで、結果電子の海に消えてしまうんですね。
ERC223について
はい、というわけでERC223について。簡単に言うとERC223は、ERC20の問題を解決した上位互換の規格です。問題を解決したということで、『トークンの誤送金を防止する機能が実装』されて電子の海に消えるということはなくなりました。
導入された機能『token Fallback』によって、コントラクトアドレスに送金してしまった場合、送り主に送り返される仕様が実装されました。上位互換ということで、ERC20の機能はそのまま受け継いでいます。
ERC223はERC20との互換性が完全ではない
次の本題でも話すことになるんですけども、ERC223はERC20との差異がありそのデメリットはこちら。これは、つっちーさんがディスコード内でも解説してくれています。
- 非中央集権(管理者を必要としない)の取引所に対応できない
- イーサリアムの送金完了イベントをイーサスキャンなどのサービスで把握できないため送金履歴が記録されない (※一部省略)

ディスコード内でエンジニアの方がNANJCOINのコードについて解説!
やっと本題に入ります!(分かりにくい解説で混乱させて申し訳ない…)
NANJCOINディスコードコミュニティ内の部活動、#開発・デザイン部で、エンジニアの方がNANJのコードについて解説してくれました。まずは冒頭部分から、今まで説明してきたERCの機能に加えてNANJCOINは以下の機能が独自に実装しています。

NANJCOINのコードは、バグが発生しないように必要最低限の機能を組み込みシンプルなコードに仕上げているんですね。

許容量以上のデータを送りつけ誤作動させる、脆弱性を悪用して誤作動したコンピューターの乗っ取りなどといった行為をバッファオーバーフロー攻撃といい、オーバーフロー攻撃はそれと同じことで、クズノハさんがどういうことなのか答えてくれましたよ!誤作動を狙った攻撃のことですね!
SafeMathは、四則演算におけるエラーを予防するコードのことでオーバーフローを防止します。

uint256という箱のようなものを計算処理に使った時に、大きな数字を入れてしまうと箱から溢れてしまうイメージです。 で、ほんとはありえない数字が入ってるのでエラーとして扱うべきなんですが、溢れてしまっている分正確な判断ができなくて、ありえない数字をそのまま送金処理にまわしちゃうってことです。 クズノハさんより
オーバーフロー攻撃者は、特定のアカウントが所有するトークン量を簡単に増やすことができてしまい、トークン全体の供給量がおかしくなり、トークンの価値がなくなってしまいます。それを防ぐためのSafeMathなんですね。
そして残りの部分、ERC20とERC223の互換性は完全ではなくてデメリットがあるって話は一度抜粋してご紹介しましたよね、NANJCOINはERC20との互換性を完全なものに修正するためにコードが加えられているようです!
NANJCOINは、ERC20とERC223の互換性を完全なものにし、差異によるデメリットを解消した!とだけでも今回は覚えて帰ってくださいね!

そして、AAでユーモアを添えられています。


おわりに
とりあえずまったく噛み砕けませんでした…、申し訳ないです。最後に、つっちーさんの思いをご紹介して終わりにしたいと思います。切実な思いですね、前に運営の方も言ってました。

ソースコピってA A剥がしてハイできました。リスペクトはあります。それで通る世の中じゃぁないんだよなぁ。
— ダンナデース (@lily_evo) May 10, 2018
多くの国産通貨が増え続けてきています。少しでも良いからコードに手を加えて改良して欲しいという思いが届くと良いですね。
力尽きそうなので今回はこの辺で、とりあえずNANJCOINはERC20との互換性を完全なものにしたということだけを覚えておいてください!
それではまたー
(なおブロックチェーンエンジニアの方からもNANJCOINのコードは完璧と言われていました)
はい、かなりの差異があります。エラーもバグもなくセキュリティーが強固で、多彩な機能が備わる完成された設計だと思います。他のトークンもNANJCOINを参考にするぐらい完璧なんです。
— Airdrop井上 (@ryou43277419) May 18, 2018
2018年5月4日よりNANJCOINが上場する、24時間取引高世界9位の海外取引所!国内上場に備えてうまく買い増ししていきましょう。
◯bitFlyer(ビットフライヤー)登録方法はこちら
テレビCMでおなじみ、セキュリティと取引高が世界最大級の国内取引所
◯BitMEX(ビットメックス)登録方法はこちら
日本語に対応していて、仮想通貨のFX取引で一番有名な海外取引所、取引量が非常に多くて取り扱い通貨が12種類と非常に豊富。
はいどうもこんばんは、マナトビです。今日のポイントはこちら!