EOSIOの特徴

EOSIOにはこれまでイーサリアムで開発を行ってきた開発者には分かりづらい特徴がいくつかあります。ここでは簡単にEOSIO特有の概念について簡単に説明を行いたいと思います。

EOSIOはスマートコントラクトのためのプラットフォームの名称で、そこで使用されるトークンがEOSトークンという名称を持ちます。

 

1. アカウントシステムについて

ビットコインイーサリアムにおいては、アカウント=公開鍵と秘密鍵からなる鍵ペアでした。

一方でEOSIOにおいてはアカウントはブロックチェーン上に記載された小文字アルファベット+1~5までの数字からなる12文字の文字列で、空いていれば好きなものをとることができます。

そして各アカウントは2つ以上の権限を持ち、各権限がそれぞれ固有の鍵ペアを持っています。作成時点ではアカウントはOwnerとActiveと呼ばれる2つの権限を持っています。各権限は親子関係をもっていて、最上位の権限であるOwner権限は他の権限の作成・復元・削除が可能です。このためOwner権限の秘密鍵はコールドウォレットで保管することが推奨されます

2. 計算資源について

EOSIO上でスマートコントラクトを動かす場合、アカウントの持ち主は

  • Memory(RAM)
  • CPU Bandwidth(CPU)
  • Network Bandwidth(NET)

の3つの計算資源(リソース)を確保する必要があります。

CPUとNETはEOSトークンをステーキングすることで確保可能で、自分自身でステークすることも第三者のアカウントにステークしてもらう(デリゲートと呼ばれる)ことも可能です。ステークはいつでも解除することが可能で、同じ量のEOSトークンがアカウントに払い戻されます。

RAMを確保するためには、アカウント内でRAMトークンを保有する必要があります。EOSIO上でEOSトークン→RAMトークンへと両替可能で、好きなときにRAMトークン→EOSトークンへと両替し直すことができます。

RAM 

一般にRAM(Random Access Memory)という言葉で表されるプログラム実行時に利用する一時的な作業領域ではありません。 ブロックチェーン上にそのアカウントが保存できるデータ容量を表すもので、ハードディスク容量に近いものです。

EOSのアカウントはアカウント名と各権限の公開鍵のマッチングをもっていますが、これをブロックチェーン上に保存するのにRAMが必要です。なので、EOSアカウントは必ずRAMを必要とします。

一方で、コントラクトを公開せずにただ利用するだけであればRAMはアカウント情報を保存する以外に使われることはありません。

CPU

アカウントのトランザクション処理に必要なリソースで、過去3日間の利用量によって計算されます。これが制限を超えてしまうと新たにトランザクションを発行することができなくなります。

NET

EOS上のネットワーク帯域を利用するのに必要なリソースで、トランザクションなどの一般的な処理容量に応じて必要量が増えていきます。これも制限を超えると新たにトランザクションが発行できなくなってしまいます。

3. トークンについて

EOSIO上には2種類のトークンが存在しています。

EOSトーク

EOSIO上のネイティブトークンで以下のような役割を持ちます。

  • ステークしてEOSIO上の計算資源を獲得する
  • ブロックプロデューサー選出のための投票権

binance等のEOSを扱う取引所で購入して自らのアカウントに送金するか、EOSトークンを保有するEOSアカウントに依頼して送ってもらうことで獲得が可能です。

RAMトーク

RAMトークンはEOSIO上でRAMを獲得するためだけに使われるトークンで、EOSIO上のみに存在し、他のアカウントや外部の取引所に送金することはできません。EOS⇔RAMの両替にはBancorプロトコルを用いられ価格が決定されています。

参考 https://medium.com/@bytemaster/eosio-ram-market-bancor-algorithm-b8e8d4e20c73

 

ICO時にERC20規格で発行されたEthereum上のEOSトークンは現在使われていません。メインネット立ち上げ時にEOSIO上のトークンと交換が行われました。