見出し画像

たった500円程度で自分オリジナルの仮想通貨トークンを作って皆に配ろう!(Solana版) - 英語ビデオチュートリアルの解説


2021年12月27日追記:オリジナルコインの名称とアイコンがウォレット内でもきちんと表示させるようになりました。


ビットコインなどの仮想通貨は実に3千種類以上もあるといわれ、コインを入手するにもあまりに高額なものが多く、価格の変動も激しいのが実情です。このため、子供のご褒美に仮想通貨をと思っても簡単には手が出せません。ところが、コインではなく、その仮想通貨と連携して作る「トークン」は実は簡単に作成することができます。今回はそのプロセスを詳細に解説した英語チュートリアルビデオを日本語で詳しく説明してみたいと思います。
英語に自信のある方は是非ビデオを見ながらトークン作りにチャレンジしてほしいのですが、ここからはビデオ内容に沿って作業を進める過程を詳しく紹介していきますので、ビデオでよくわからない内容があった場合などもぜひ参考にしてみてください。

今回やったこと

ビデオの内容にそって次のことを実行しました:
✅ Solana上でItaCoin(板コイン)という名前でトークンを発行
✅ 「板」のアイコンも登録
✅ トークンを1000枚発行(数はいくらでも構いません)
✅ できたItaCoinを他人のウォレットに送金

ただし、配ったトークンは取引ができません。つまり皆さんからほかの人にあげることはできても、それを別の人との間で売ったり買ったりすることはできません。この「取引」を可能にするにはさらなる処理が必要なのと、万単位のコストがかかるのでここでは対処していません。
それでも、仮想通貨やブロックチェーンのデモや教育などには十分使えるのと、ご褒美の証としてトークンをあげたりすることは可能です。

必要なものと基礎知識

とはいえ、決してハードルは低くありません。私の個人的な意見として次の要件があります。

❶ Linuxのコマンドを使ったことがある
❷ GitHubを使ったことがある

高度なプログラミングコードを書くわけではないので、インストラクションに沿ってやっていけばだれでもできるのですが、一度もLinuxとGitHubを使用したことがない人には簡単な作業ではないと警告をしておきます。
では、2つのパートに分けて解説します。
パート❶ではSolana上に自分のトークンを作り、それを送金処理するところまでで、ここはLinuxのコマンドを駆使するだけで完了します。パート❷は、作ったトークンに名前やアイコンを決め、実際のSolanaシステムに登録をします。これでItaCoinとして全世界に認知されますが、ここでGitHubでの処理が必要となってきます。

パート❶ Solana上にマイトークンを作成して

まずはLinux環境を用意します。お手元にLinuxマシンがあればそれで十分ですが、ビデオではLinodeというクラウドでLinuxの仮想マシン(VM)を設定しています。日本語のサイトはここです。

一番安いUbuntu VMなら1か月5ドルで使用できるので、ここではビデオと同様にLinodeのVMを使用しました。もちろんUbuntuであればクラウドでもローカルでも構いません。ここは皆さんの状況に応じて用意をしてください。

ステップ1:Linux仮想マシンに接続する

Linode上のVMを作るとSSHで接続するコマンドを使ってVMにアクセスします。

ssh xxxx@[あなたのVMIPアドレス]

注意:noteでは"root@"のようなLinuxプロンプトやコマンドに似たテキストがコードフォーマット(黒い背景のテキスト箇所)にあると公開ができなくなるので、すべてxxxx@ に置き換えてあります。

VMのIPアドレスは4つに区切られた数字ですが、これを入れることで作成した仮想マシンにリモートアクセスします。するとVMを作った時のパスワードを聞かれるので入力するとプロンプトが出てきます。

システムをアップデートするためにこの段階で次のコマンドを入れます(注:ビデオではウォレットを作成した後で「最初にやっておけばよかったね」といって途中でコマンドを送っています)。

sudo apt update

さまざまなコンポーネントのアップデートが実行され、プロンプトが戻ってきたら準備完了です!

ステップ2:Solanaツールをインストール

まずはSolanaのシステムでアカウントやトークンを作るためのツールをインストールします。次のコマンドを実行してください。

sh -c "$(curl -sSfL https://release.solana.com/v1.8.5/install)"

詳細を知りたい方は次のサイトを参照してください。

インストールには多少時間がかかりますが、終了すると次のようなメッセージが表示されます。

Close and reopen your terminal to apply the PATH changes or run the following in your existing shell:

そうしたらexitとコマンドをタイプして、もう一度SSHでVMにログインしてください。

ssh xxx@[あなたのVMIPアドレス]

ステップ3:Solanaのウォレットを作る

Solanaツールがインストールされたら、さっそくウォレットを作ります。このウォレットに多少のSolanaを入れておき、様々な取引にかかる手数料がここから引き落とされます。タイトルにあるように総額で数百円程度なのでご安心ください。今回Solanaを使う理由はEtheriumなどに比べてそういった手数料が圧倒的に安いうえ、トランザクションの時間も早いのが理由です。

では、VMで次のコマンドを入力します。

solana-keygen new

ここでパスフレーズを聞いてきますが、そのままEnterキーを押してパスフレーズを自動作成します。

BIP39 Passphrase (empty for none):    ➡ そのままEnterを押す

Public KeyとPass Phrasesが表示されます。Public Keyは作成したウォレットをほかの人に教える際に使われるアドレスなので、これはほかの人とシェアして構いませんが、Passphraseは作成したウォレットのパスワードに相当するのでコピーして保管しておきます。
ウォレットができたら残高を確かめてみます。solana balanceというコマンドを入力してください。

xxx@localhost:~# solana balance
0 SOL

当然ですが残高はゼロ。ということでここにトークン作成に必要となる最小限のお金を入れてみます。

ステップ4:ウォレットにSOLコインを入れる

ここで私はSolanaウォレットに2千円程度のコインを入れることにしました。そのためには仮想通貨交換所(Excehnge)のアカウントに現金か仮想通貨を持っていないといけません。ビデオでは、Coinbaseのアカウント内で持っている通貨をもとにSolana(シンボルはSOL)のコインを取得しています。ここではSOLを扱う交換所であればどこでも構いません。
私の場合はCoinbaseのアカウントからSOLを$20分送金し、かかった手数料はわずか2セント。当時のレートで約0.113 のSolaraコインがウォレットに入りました。

xxx@localhost:~# solana balance
0.113798009 SOL

ステップ5:RUSTなどのインストール

ここからインストールするのはSolana用のプログラムを書いて走らせるためのRustというツールをインストールします。そのためのコマンドがこれです。

xxx@localhost:~# curl https://sh.rustup.rs -sSf | sh

すると質問がでてきますが、ここでは1を選択して継続します。

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation

インストールが完了したらSolana Toolをインストールした時と同様、インストールを反映させるためにexitで出て、もう一度ログインしてください

ここで、独自トークンを作るために必要なライブラリなどをインストールするため、次のいくつかのコマンドをさらに入力してください。途中に追加の質問が出てきてもEnterキーを押して継続すればよさそうです。

xxx@localhost:~# sudo apt install libudev-dev
xxxx@localhost:~# sudo apt install libssl-dev pkg-config -y
xxxx@localhost:~# sudo apt install build-essential -y

これでRustの準備が完了。その次にインストールするのがSolanaのトークンを作るためのプログラムで、そのためのコマンドがこれです。このインストールには少々時間(最低10分ほど)がかかりますので、Enterキーを押したらブレークを取るのがよいでしょう。

xxxx@localhost:~# cargo install spl-token-cli

ステップ6:仮想通貨トークンを作成する

ついにトークの作成に入ります。これまでさんざん時間をかけて色々なものをインストール・設定したおかげで、トークンを作るだけならたったの1行です。

xxxx@localhost:~# spl-token create-token

これで次のような「トークンアドレス」が出てきます。さらにsolana balance コマンドでSOLの残高を見ると若干減っています。だいたい0.0014SOLで、ドルにすると25セント(約30円弱)と少額ですが。

xxxx@localhost:~# spl-token create-token
Creating token 652wypzKa3vewqezFy8rai2GRsqJnGGsMn8VnsGjQPCN

Signature: 2nw9Cb1ynmmBrJfnTN75pmCEz2Ap3i8dZu3rszoVTwppMRWMhGoPECrabJKpQxK8UF4vEgcuR71PgfTA8NrQgyFE

xxxx@localhost:~# solana balance
0.112326409 SOL

ここではCreating token … のところにある長い値、トークンアドレスを
コピーしておきます。なお、これからこのトークンアドレスは何度も使用しますので、簡単にコピーできるところに置いておくことをおすすめします。

次にこのトークンを保管する「アカウント」を作ります。spl-token create-account の後にコピーしたトークンアドレスを張り付けます。そしてEnterキーを押してください。

xxxx@localhost:~# spl-token create-account 652wypzKa3vewqezFy8rai2GRsqJnGGsMn8VnsGjQPCN

ここでも0.0022SOL程度の手数料がかかりますが、これも50円弱程度の少額です。そして今度は「アカウントID」が、Creating account … の後に表示されるので、今度はそれをコピーしておきます。

xxxx@localhost:~# spl-token create-account 652wypzKa3vewqezFy8rai2GRsqJnGGsMn8VnsGjQPCN
Creating account Exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx⠁

Signature: 38Gc8JES1xq9RhSeMcnKaqZDMAF3uprmGAuVPWoWb6gBtH2n6EjbHLzQjjPhkxqKrsqThTjNNu1QewmvLgQXQJj2

xxxx@localhost:~# solana balance
0.110282129 SOL

さて、これでトークンを保管するアドレスができ、それを管理するアカウントができました。最後にやるのが遂にトークンそのものをアカウントに作ることです。これがMintという作業です。コマンドの後に「トークンアドレス」を指定し、最後に「何枚トークンを作るか」という数字を入れます。ここでは1000枚としておきました。そしてこのコマンドの最後に「アカウントID」を入れてもよいのですが(ビデオではそうしています)省略しても自動的に、先ほど作ったアカウントに入るようです。

xxxx@localhost:~# spl-token mint 652wypzKa3vewqezFy8rai2GRsqJnGGsMn8VnsGjQPCN 1000

これで千枚のトークンがアカウントに登録されました。ちなみにこの場合も数十円の手数料が取られます。

xxxx@localhost:~# spl-token mint 652wypzKa3vewqezFy8rai2GRsqJnGGsMn8VnsGjQPCN 1000
Minting 1000 tokens
  Token: 652wypzKa3vewqezFy8rai2GRsqJnGGsMn8VnsGjQPCN
  Recipient: Exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Signature: TjFcy4noy4t3s3yB2eUqiMMLwrEsJNH2xzcj625VoGHuCdSVy4PYktdCmSoyaZARksrkhmkDYB5B7HvvgwuBG1T

xxxx@localhost:~# solana balance
0.110277129 SOL

ではここで作った”マイトークン”が本当にできているのか、次のコマンドで確認してみます。

xxxx@localhost:~# spl-token accounts

次のようにトークンアドレスに1000枚のトークンが入っていることがわかります。これでマイトークンの出来上がりです!

xxxx@localhost:~# spl-token accounts
Token                                         Balance
---------------------------------------------------------------
652wypzKa3vewqezFy8rai2GRsqJnGGsMn8VnsGjQPCN  1000

ステップ7:誰かのウォレットにマイトークンを送金する

ここからさらに面白くなってきます。せっかくマイトークンを作ったのだから誰かに見てもらいたいですよね。そこで、だれのものでも構わないのでウォレットを指定して送金します。
ここではSolanaを扱えるウォレットを作ってそこにマイトークンを1枚だけ送ってみます。まずはビデオにならってPhantom Walletを利用します。ここからChrome(私はBrave)の拡張機能をインストールします。

いつもの通りウォレットを作成します。Solanaウォレットを作った時と同様、Pass Phraseは保管しておきます。
ウォレットができたらまずは「トークンリストの管理」をクリックして、リストの中からSolanaを指定します。するとウォレットのメイン画面にSolanaが現れます。そこをクリックしてください。

SOLの画面に行ったら「入金」ボタンをクリックします。


SOLの入金画面に行ったら、ウォレットのアドレス(ここではWallet 1 という名前になっています)が表示され、そこにアドレスのコピーボタンがあるのでクリックしてコピーします。

送金先のウォレットのアドレスがコピーできたらTerminalに戻り、次のコマンドを入力します。これで自分のウオレットアドレスから、Phantomウォレットのアドレスにマイトークン1枚が送金されます。

xxxx@localhost:~# spl-token transfer --fund-recipient --allow-unfunded-recipient 652wypzKa3vewqezFy8rai2GRsqJnGGsMn8VnsGjQPCN 1 3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4

これで送金が完了します!そして送金先のPhantomウォレットを見てみましょう。そこに送ったトークンが1枚表示されているのですが、なんと名前が「不明なトークン」となっています。

でもそれをクリックすると確かに「1」個トークンが入っているのです。652wy…というのは確かにマイトークンのアドレスです。

仮想通貨はシステム内で発生した取引をすべてチェックすることができます。Solanaのトランザクションを確認するにはSOLSCANというサイトにいけばすべてわかります。

ここの検索ボックスにトークンアドレスを入れると、アカウントに1000枚のトークンがあり、下の方の取引履歴をみると確かに1枚のトークンがPhantomウォレットに移動したことがわかります。

さて、ここまででマイトークンを作成し、それを他人のウォレットに送金することができるようになりました。しかし、”マイトークン”とはどんな名前なのでしょう。不明なトークンではつまらないので、自分のお気に入りの名前と、さらにトークンのアイコンまで作ってみましょう。

パート❷ 独自トークンをItaCoinとして登録

ここまでで実際に仮想通貨トークンを自作し、リアルなウォレットに送金までしましたが、やりとりしているのが「不明なトークン」というのでは面白くありません。そこでこのトークンに独自の名前、ここでは「ItaCoin」(イタコイン)という名前を付け、しかもアイコンまで指定してみます。
ただ、ここからが結構大変なプロセスで、GitHubを使ってコードのプルリクエストなどを出すので、開発をやったことがない方にはちょっと難しいかもしれません。ただ、やり方に注意して進めていけば、別にコードをスクラッチで書くようなことはありません。ぜひ挑戦してみてください。
なお、英語が苦手な方でもここからはビデオを見ながら、そのスクリーンなどを参考にしてみると迷わないで済むと思います。ビデオは下のリンクのところからご覧ください。


ステップ1:GitHubに自分のトークンのアイコンを作成

ここからがGitHubを利用するプロセスとなりますので、GitHubに慣れていない方にはちょっとチャレンジかもしれません。
まず、GitHubを使ったことがない方はアカウントを作成します。すでにアカウントを持っている方はサインインして、新しいリポジトリ(この中にプロジェクトごとのソースコードやファイルを入れておきます)を作成します(必ずPublicを指定してください)。初めての方は英語ビデオを見てもやり方はわかると思いますが、日本語でアカウントの作成とリポジトリの作成の両方を解説した次の記事などを参考にしてください。

私は自分のアカウントに、crypto-itacoinというリポジトリを作成しました。
次にアイコンを作成します。どんな絵や写真を使ってもよいのですが、重要なのはファイルサイズが200KB以下であること。私は超単純に「板」という漢字のアイコンにしました(手抜きです)。

このファイルをGitリポにアップロードします。最初にリポを作った画面で次のようにUpload an existing fileというリンクがあるのでそれをクリックしてファイルを指定します。

ファイルを指定したら画面を下にスクロールし、Commit changes(変更をコミット)という緑のボタンをクリックして完了です。アップロードが完了するとリポのファイルリストに表示されますので、それをクリックし、表示画面の右側にDownloadというボタンが出てくるのでそれをクリック。

そうすると画像が表示されて、ブラウザにURLが出てきますので、それをコピーしておいてください。

そして次のステップではこのアイコンをitacoinという名前と一緒にSolanaのソースコードに登録します。

ステップ2:Solana-labのリポをフォークする

ではSolanaのソースコードで、トークンリストを管理するリポを開きます。次のリンクをクリックしてください。

これはホンモノのSolanaのソースコードで、ここに自ら変更を加えます。確かに恐ろしいことに思えますが、簡単なコピペで済むので恐れずにトライしてみてください。
まず、今開いているのは、Solana-labのアカウント下にあるtoken-listというリポです。これをそっくりそのまま自分のアカウント下にコピーして、自分だけのバージョンを作ります。これを「フォーク」と言います。画面右にForkというボタンがあるのでそれをクリックしてください。するとどのアカウントにフォークするか聞いてきますので、私の場合はmasaki-itagakiというアカウントを選択します。

そうすると今度は全く同じファイルリスト(下にいっぱいファイルやフォルダが表示されていますよね)がmasaki-itagakiの下のtoken-listというリポとして現れます。これでマイリポができたので、ここで何を変更してもだれにも迷惑はかけないので安心してください。

ステップ3:ソースコードを変更する準備をする


フォークしたリポができたら次はその中のコードを変更してアイコンとトークン名を入れます。コードを変更するのにとても簡単なVisual Studio Codeのエディタを立ち上げます。ここはビデオを見てもらいたいのですが、リポの画面が開いている状態で「ピリオド」キーを押します。すると自動的にVisual Studioがブラウザ内で立ち上がります。最初はreadmeファイルが開いてますが、すべて自分のリポである点に注目してください。

ステップ4:アイコンをアップロードする


画面左のエクスプローラーのところにassets-mainnetというフォルダがあるので、それをクリックします。

ここに自分のトークンのフォルダを作成します。そのすぐ右上にプラスサインが付いたフォルダのアイコンがあるのでそれをクリックします。そこにフォルダ名としてトークンアドレスを入れます(これまで何度かコピーしたはずです)。これで自分のトークンアドレスが入ったフォルダができました。

次に出来たフォルダの上で右クリックするとUploadがメニュー項目にあるので、それを選択。トークンアイコンのファイルを選択すると物理的にアイコンファイルがアップロードされます。

ステップ5:登録コードを変更する


次にassetsフォルダをたたみ、その下にあるsrc(ソース)フォルダ、さらに下にあるtokensフォルダを開きます。

そしてここからが本番。solana.tokenlist.jsonファイルをクリックして開いてみてください。ざっと見るとわかりますが、ここにトークンの情報が入っているので、単純に自分のを追加するだけです。ビデオと同様、"keithkoin"を検索してそのブロックを見てみます。Cntl+Fで検索簿kkするが出てくるのでそこにkeithkoinと入力すると下のようなブロックのところに飛んでくれるはずです。

最初の中括弧から終わりの括弧、そしてカンマも一緒に選択してもかまいません。とにかく括弧から括弧まできちんと選択してコピーします。そしてファイルの一番下までスクロールしてください。
最後のversion, major, minorとあるブロックの上が最後のトークンの情報です。なので、この下に同じような感じで貼り付けてください。この時に、カンマもいっしょに選択した場合は、これが最後のアイテムなのでカンマを消すことをお忘れなく。赤い丸で示したところがその注意点です。

そこで変更する値は4つ:

  1. "address"には自分のトークンアドレス

  2. "symbol"は短縮したトークンコード。ここではITACにしています。

  3. "name"はトークンの名前。ItaCoinとしています。

  4. logoURL"はトークンアイコンのURLを入れます。

Cntl + Sでファイルを保存したら、あとは変更を自分のリポに反映させます。ここからはビデオの画面を使って解説しますが、まずはVSの画面左にあるコミットのアイコンをクリックします。❷という表示があるのは2つのファイルで変更があったことを示しています。

コミット画面に行ったら、上段のテキストボックスに今回の変更の「タイトル」を入れます。ここでは "Add ItaCoin token"としました。そしてさらに上にあるアイコン群の中から✅のアイコンをクリックするとコミットが完了。これで、自分用にフォークしたブランチの中に今回の2つの変更が反映されました。

自分のリポに変更が反映されたら、次はその変更を本物のSolana-labのリポに反映させます。これが「マージ」という作業です。まずはsolana-lab/token-listのホンモノリポを開きます。

solana-labs/token-list: The community maintained Solana token registry (github.com)

そこでPull requestsというタブをクリックします。このプルリクエスト(PR)というのがブランチ内での変更をリクエストするものです。もちろん管理者が変更をチェックして許可されたものだけが変更されるので、ここで問題が発生すると変更は拒否されます。

そこで画面右下にある"New Pull Request"というボタンをクリックしてください。

そしてCompare across forrksをクリックします。

するとすぐ下に、真ん中に ← が入った行が現れ、左にsolana-labが(ここはそのままにします)、右にあるリポのリストの中から自分のフォークしたリポ(ここではmasaki-itagaki/token-list)を選択します。これで右のリポを左にマージするということになります。
ビデオでは自分のリポを選択した段階でAble to mergeというグリーンサインが出てくるとありましたが、自分の場合はCan't automergeという警告が出てきました。ただ、これは問題ではなく、自動マージしないだけで、マージのリクエストは出せますので安心してください。

あとは画面右のCreate pull requestという緑のボタンをクリックします。そしてさらに下にスクロールし、そこにあるCreate pull requestボタンをもう一度クリックします。これで変更依頼の完了です!

PRがApproveされるまで結構時間がかかりますので、ここでまたブレークを取ってください。PRのステータスが上のようにautomergeとなればすべて完了です。
そこでSOLSCANに行ってトークンアドレスを入れてみてください。みごとにItaCoinの誕生と、そしてアイコンがしっかり登録されています!

追記・変更:「板コイン」がウオレットに~!

この記事を最初に投稿した時、ItaCoinを登録したばかりだったので、ウォレットにコインを送っても「不明なトークン」のままでした。

ところが、しばらくしてウォレットを見てみるとなんと、登録した名前とアイコンがきちんと表示されています。

これはおそらくトークンの情報はレプリケートするまでに時間がかかるせいなのでしょう。これは朗報です!ですので、ウォレット内で名前を変更したりする必要はなくなりました。反映にどの程度時間が必要かは不明ですが、私の場合は一週間ほどできちんと表示させるようになりました。

これで皆さん独自のトークンの誕生です。ウォレット間での移動は自由にできますので、例えば子供のご褒美に「ファミリートークン」をあげたり、友達の間で交換したりということが可能になります。最新のブロックチェーン技術の教育としてトライしてみるのもよいアイディアだと思いますので、ぜひチェレンジしてみてください!





この記事が気に入ったらサポートをしてみませんか?