暗号資産(仮想通貨)を作成することはものの数分でできる。
例えばイーサリアム(Ethereum)でFT(ファンジブルトークン)を発行するとなると、ERC20規格で発行することになり、これが基本形であるので今回はERC20での発行を前提として解説する。
しかし、せっかく発行してもイーサリアムの代表的なブラウザウォレットであるメタマスク(Metamask)では「トークンを追加」>「検索」を行っても表示されないし、手動で追加しても幾何学模様が表示されるだけだし、コインマーケットキャップ(CoinMarketCap)やコインゲッコー(CoinGecko)の時価総額ランキングに並ぶこともないし、イーサスキャン(Etherscan)もトランザクション情報以外が掲載されていないスカスカの状態である。
発行された後にどうしたら良いかについての解説がほとんど存在しないため、何をしたら良いかを解説する。
トークンを発行する
オリジナルのトークンはプログラミングにより作成することができるが、イーサリアムのERC20ジェネレーターを使えば何らプログラミングを必要とすることなく、簡単に作成することができる。
なお、上記のようなサービスを利用しなくてもOpenZeppelinとRemixを使うことで自ら発行することもできるので、その場合は以下の記事を参考にしてほしい。
しかし、前述のように作成したオリジナルのトークンは、自動的にウォレットに表示されたり、価格情報が掲載されたりすることはない。
上場していなければ価格はないので価格情報は一旦は必要ないかもしれないが、せっかくトークンを作ったのに、ウォレットにコントラクトアドレスを張り付けなければ表示されず、おまけに表示される画像が謎の幾何学模様では悲しい。
これらが表示されるようになるために必要な作業について、以下で解説する。
ウォレットに表示する方法
メタマスクウォレットにERC20トークンのロゴや価格情報が一般的に表示されるようにするためには、Githubを使って申請し、承認を得るという作業が必要になる。
ただし、その条件として一定以上のトークンの流通量が求められるため、その前提を満たさない場合には手動で特定のウォレットだけに反映されるように設定する必要がある。
手動で特定のウォレットだけに追加する方法
自分のメタマスクにトークンの画像データを表示したいだけであれば、簡単に表示させることができる。
その方法は、EIP-747で定義されているwallet_watchAssetAPIを利用する必要がある。
ちなみにEIPとはEthereum Improvement Proposalsの略で、イーサリアムの改善提案のことである。EIP747のサマリーは以下のとおりである。
eip | title | author | discussions-to | status | type | category | created | requires |
---|---|---|---|---|---|---|---|---|
747 | Add wallet_watchAsset to Provider | Dan Finlay (@danfinlay), Esteban Mino (@estebanmino) | https://ethereum-magicians.org/t/eip-747-eth-watchtoken/1048 | Draft | Standards Track | Interface | 2018-08-13 | 1193 |
登録内容については以下のような要件を満たしている必要がある。
type文字列の要件
・ERC20のような、アセットのコントラクトで実装されるインターフェースで一般的に受け入れられている名称であること
options.imageの要件
・一般的な画像形式(png,jpg,svgなど)またはBase64であること
・サイズは512x512pixels以下であること
・256kb以下であること
小難しくなってきたが、WatchTokenというサービスを利用すれば、何も考えずに簡単に実行することができる。
例えば、当サイトの発行するトークンは以下のアドレスからウォレットに追加することができる。
このURLを共有すれば、都度手動にはなってしまうが、各人のウォレットにトークンのアイコンを反映することができる。
一般的に検索すれば出るようになる方法
トークンのアイコンが謎の幾何学模様からオリジナルのアイコンに変更されたことで、見栄えは相当良くなったが、できるのであれば自分のメタマスクだけに表示されるのではなくて、どのメタマスクで検索しても自分のトークンのロゴが出てほしいと思うところだろう。
以下の方法により実現することができるが、ハードルは高い。
手順は以下のとおりである。
- メタマスクのリポジトリをフォークする
- ロゴ画像をウェブセーフ形式でimagesフォルダに追加する
- 指定したアドレスをキーとして、画像ファイルの名前を値としてcontract-map.jsonファイルにエントリを追加する
掲載基準については以下のとおりである。
- アイコンは小さく、正方形である必要があるが、高解像度が好ましく、ベクター画像が理想的である
- JSONマップの最後にエントリを追加しないこと。末尾のコンマを加工すること。 プルリクエスト(Pull requests)は行の追加のみである必要があり、行の削除はそれらのロゴの意図的な非推奨である必要がある。
- PRには、提案されたアドレスを参照する公式プロジェクトWebサイトへのリンクを含める必要がある。
- プロジェクトのウェブサイトには、プロジェクトの説明を含める必要がある。
- プロジェクトには、ネットワーク上のトラフィック、GitHubでのアクティビティ、またはコミュニティの話題など、アクティビティの明確な兆候が見られる必要がある。
- Etherscanのようなブロックエクスプローラーに検証済みのソースコードがあると便利である。
- Etherscanで「ニュートラル」レピュテーションまたは「OK」レピュテーションが必要である。
他社事例を参考にする
やり方を直感的に理解するために、プルリクエストがクローズドしている(受理された)案件を参考にしてみよう。
例えばPerpetual(PERP)トークンを見てみよう。
Files changedから、どういう内容を追加したのかが分かる。
contract-map.json
{
"0xbC396689893D065F41bc2C6EcbeE5e0085233447":{
"name": "Perpetual",
"logo": "PERP.svg",
"erc20": true,
"symbol": "PERP",
"decimals": 18
},
images/PERP.svg
<svg width="308" height="292" viewBox="0 0 308 292" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M93.2926 129.73C88.6976 125.135 81.2475 125.135 76.6524 129.73C72.0574 134.325 72.0574 141.775 76.6524 146.37L145.467 215.185L162.107 198.545L93.2926 129.73Z" fill="#3CEAAA"/>
・・・(省略)・・・
<rect x="135.85" y="100.64" width="23.5054" height="37.9173" transform="rotate(-45 135.85 100.64)" fill="#3CEAAA"/>
<circle cx="154.032" cy="207.224" r="11.7664" fill="#1A5D73"/>
</svg>
画像ファイルはフォルダに追加するだけ、jsonファイルには数行追加するだけなので、作業自体は大変シンプルである。
トークン情報を入力してみよう
他社事例からわかる通り、jsonファイルの入力情報は以下のとおりである。
{
"(コントラクトアドレス)":{
"name": "(トークン名称)",
"logo": "(画像ファイル名).svg",
"erc20": true(ERC20ならtrue),
"symbol": "(トークンシンボル)",
"decimals": (少数以下の桁数) },
画像はウェブセーフ形式に変換し、imagesフォルダに格納しよう。
以上が完了したら、プルリクエストをしてブランチをマージしよう。
多くのプロジェクトはWebsiteのアドレス、Etherscanのコントラクトアドレス以外に、CoinGeckoのトークン価格情報、Twitter、Discord、Telegram、Github、Mediumなどのコミュニティの情報なども書き込んでいるようだ。
一通り必要な情報の入力を終えたら、Create Pull Requestボタンを押して完了だ。
これにより、openのPull requestsの一覧に並ぶ。
あとは承認を待つだけだ。
却下のコメントを見ていると、以下のような指摘が多い。
・ロゴは.svg形式で提出(新しくできた要件?)
・Etherscanの評判が中立的でない
・ホルダー数が少ない(210アドレスのPJが却下されていた)
・トランザクション数が少ない(555取引のPJが却下されていた)
ホルダー数やトランザクション数のカットオフ値について明言はないが、個人が趣味で作ったレベルのトークンについては採用される見込みはないだろう。
イーサスキャンに詳細情報を表示する方法
イーサスキャンは当該トークンのトランザクションを確認する目的等で主に使われるが、トークンを発行しただけでは以下のように情報がスカスカの状態である。
以下のUSDTと見比べれば一目瞭然だ。
こちらは当該トークンを作成したウォレットアドレスでコントラクトの保有者の確認を行い、その後にToken Update Application Formからプロジェクトやトークンの概要等、一般的な情報を記載して申請することになる。
ランキングサイトに価格情報を表示する方法
趣味でトークンを作っている人のほとんどは関係がない話ではあるが、トークンが上場して価格情報がある場合は、コインマーケットキャップやコインゲッコーに価格情報を登録することで知名度が上昇し、取引量にプラスの影響を与える。
取引所に上場している場合は、各サイトのリクエストフォームへから申請を行い、審査された上でリストされる。
コインゲッコーのリクエストフォーム
コインマーケットキャップのリクエストフォーム
求められる情報は申請者とプロジェクトの関係性や、プロジェクトやトークンに関する概要等の一般的な事項であり、Webサイトを持っているプロジェクトであれば既に発信していると考えられるレベルの情報である。
強いて書きにくい情報というならば、コインマーケットキャップのAnnex A – Rich List & Reserve Addresses (Mandatory for Circulating Supply/Ranking)、コインゲッコーのToken Distributionであろう。両者はほぼ同じ内容である。
これはトークンの保有者(ウォレットアドレス)上位順に、持ち主、ロックされているかどうか、市場流通分なのかどうか、将来の使われ方などを詳細に問われる。
トークンのエコシステム・エコノミクスを深く考えていないと書けない内容になっているので、やはりしっかりしたプロジェクトであることが前提とされている。
最後に
上述のとおり、個人の趣味レベルで発行したトークンで対応可能な項目はメタマスクでwallet_watchAssetAPIを利用して手動で都度ウォレットにトークンのロゴを追加することくらいしかできない。
もし有用性の高いトークンを発行して広めたいと考えるのであれば、当該トークンの意義を技術面も含めて検討し、トークンエコシステム・トークンエコノミクスをデザインしてホワイトペーパー(Whitepaper)に起こし、流動性を高めながら上記の作業を行うことで知れ渡ることとなるだろう。
コメント
コメント一覧 (2件)
一般的に検索すれば出るようになる方法
興味深く拝見しました。自社トークンのトークン画像をどうやったら乗せることが出来るのかわからずたどり着きました。他社事例を参考にするをみてましたが、
contract-map.json 入力などは自社サーバにこのファイルを置いて中身を変更という感じなのでしょうか?
全くの見当違いの質問だとすいません、お手すきであればご回答頂ければ幸いです。
自社トークンはCMCにもすでに掲載済みなんんですがメタマスクウォレットにトークンアイコンの画像を乗せる方法がわからずにいます。何か具体的に作業説明等あるようなサイトとかあればいいのですが・・・
コメントいただきましてありがとうございます。
メタマスクに反映させるためにはトークン画像ファイルとjsonファイルの2点をアップロードする必要があります。
具体的なやり方としてはメタマスクのgithub(Metamask/contract-metadata)でリポジトリをフォークし、上記2点のファイルを加えた後にプルリクエストをして、先方にマージされることにより取り込みが行われます。
誤解を恐れずにイメージを申し上げると、現状の構成のメタマスクのフォルダをコピーして、そこに自分の望む変更を加えてアップロードして承認してもらうという感じです。
なお、上述のとおりホルダー数やトランザクション数が少ないとマージされずに却下されます。
また、条件を満たしていてもマージされるまでかなりの日数を要し、マージされてもアプリケーションに反映されるまでもかなりの日数を要します。
具体的な手順については上述の通りなのですが、メタマスクのgithub内により詳細に記載されております(英語です)。
私も具体的な作業内容が解説されているサイトを探しておりましたが、見かけなかったので当ブログにまとめました。