※以下の手順は、MyEtherWallet内で行うことを前提としています。
※最終的に、購入したカードをKanadeCollectionで表示するためにはMetaMaskの導入が必要です。
※KanadeCollectionはChromeで動作確認を行っております。ブラウザによっては正常に動作しない可能性があります。
MyEtherWalletからKanadeCoinのスマートコントラクトを実行して、Dappsの「KanadeCollection」でコレクション出来るカードを購入してみましょう!
まずは、MyEtherWalletにアクセスします。
https://www.myetherwallet.com/
この「Contracts」のページで、Ethereum上のスマートコントラクトを実行することが出来ます。
KanadeCoinのコントラクトアドレス 0x8E5610ab5E39d26828167640EA29823fe1dD5843 を入力します。
「どのトークンのスマートコントラクトを実行するか?」をここで指定します。
今回はKanadeCoinのコントラクトアドレスを入力しましたので、「KanadeCoinのスマートコントラクトを実行する」という指定になります。
コントラクトアドレスを入力すると、その横に、アドレス毎に一意となる模様が表示されます。
MyEtherWallet上で、KanadeCoinの模様はこのようになるはずです。
もし違う模様が表示された場合、コントラクトアドレスが何か間違っていますので、よく確認し直してください。
このリンク先にあるコードをコピーして入力してください。
https://raw.githubusercontent.com/KanadeCoin/kanadecoin-docs/master/interface/abi.json
(755行ありますが、頑張ってコピペしてください…)
ここでは、そもそもトークンがどんなスマートコントラクトの処理を持っているか、その定義を指定しています。
ABIは、Application Binary Interfaceの略です。
Application Binaryは、つまりEthereumネットワーク上に存在するトークンのことです。
Interfaceはその名の通り、そのトークンで可能な操作(実行可能なスマートコントラクト)のインターフェースです。
なぜこの指定が必要というと、それぞれのトークンが持つスマートコントラクトは全く違うためです。
例えば、「KanadeCollectionでコレクション可能なカードを購入する」ために実行するスマートコントラクトは、KanadeCoinでしか実装されていない機能です。
つまり他のトークンでは、同じ処理は実行出来ません。
トークンはこの世に数多く存在しているため、MyEtherWalletが全てのトークンの全てのスマートコントラクトインターフェースを把握しているわけではありません。
なので、自分でスマートコントラクトのインターフェースの定義を入力する必要があるのです。
ボタンを押すと、ページの下の方にドロップダウンが表示されます。
さて、ここから実際にカード購入の手続きをしてみます。
まずは、ドロップダウンから「getRandomBox」を選択してください。
ここでは、これから購入しようとしているカードの情報を確認します。
KanadeCollectionでは、カード1枚購入につき300KNDCを消費します。
でも、それは私が勝手に「1枚300KNDCです」と言っているに過ぎず、もしかしたら本当は1枚100万KNDCかもしれませんね?
しかも、購入した後に気づいても、購入の取り消しが出来ません。
なので、購入する前に本当に1枚につき300KNDCなのか確認してみましょう!
ドロップダウンの下に「_id_max32」の入力欄があります。
ここにKanadeCollectionというIDを入力して、「READ」ボタンをクリックしましょう。
(まだKNDCは消費されません。gas代も掛かりませんので、安心してください。)
このIDは、Dappsの「KanadeCollection」で使用しているIDです。
何かカンマ区切りの数値が表示されましたね?
おめでとうございます!今あなたは、KanadeCoinのスマートコントラクト実行に成功しました!
意識的にスマートコントラクトを実行したのは、これが初めての体験かもしれませんね。
今あなたは何をしたかと言うと、これからカードを購入しようとしているKanadeCollectionの情報を、Ethereumのブロックチェーン上から読み込んだのです。
実行結果を見ると、5つの数値が表示されています。
これの4つ目が、1枚あたりに必要なKNDCの量です。
30000000000となっていますね?
KanadeCoinは桁数が「8」のトークンです。
なので、30000000000から8桁を取り除きます。
30000000000 → 300
この数字が、カード1枚あたりに必要なKNDC量です!
今実行した「getRandomBox」は、IDを渡すと情報が返ってくる、情報は5つ返ってくる、その4番目は1枚あたりに必要なKNDC量、等がスマートコントラクトで保証されている処理です。
これで、確実に「300KNDC/枚」であることが確認できました!
1枚あたりのKNDCが確認できたら、いよいよカードを購入してみます。
ドロップダウンから、「drawRandomItem」を選択します。
ドロップダウンの下の「_id_max32」に、先程と同様にKanadeCollectionと入力します。
そして「_count」に、購入したいカード数量を入力します。
(例えば、3枚カードを購入する場合は 3 と入力します。)
2つの入力欄の下を見ると、Walletをアンロックするための欄が存在しています。
先ほどはアンロックせずにスマートコントラクトを実行できたのに、今回はなぜアンロックが必要なのでしょうか?
実は、Ethereumのスマートコントラクトを実行する場合、「データの読み込み」はgas代が掛からず実行可能ですが、「データに変化が発生する処理」はgas代が必要になるためです。
カードを購入するということは、入手したカードの情報をEthereumのブロックチェーン上に記録するということになるため、ブロックチェーン上のデータに変化が発生する処理である、ということです。
アンロックするまでは「drawRandomItem」を実行できないので、ご自身のお好きな方法で、いつも通りのアンロックを行ってください。
(KNDCが消費されます!gas代も掛かります!十分にご理解の上、自己責任で実行してください!)
アンロックし、WRITEボタンをクリックすると、ダイアログが出てきます。
今回のスマートコントラクト実行時のgasLimitを指定しましょう。
基本的には、ここに表示される数値の通りのgas代が掛かりますので、そのままの数値でOKです。
適切なgas価格は、「ETH Gas Station」というサイトで確認しましょう。
https://ethgasstation.info/
gas価格を変更したい場合は、MyEtherWalletの右上の方にあるドロップダウンから指定できます。
問題がなければ、「Generate Transaction」ボタンをクリックします。
今回実行されるスマートコントラクトのトランザクションの詳細が表示されます。
(見てもよく分からないかと思います…)
(KNDCが消費されます!gas代も掛かります!十分にご理解の上、自己責任で実行してください!)
「Yes, I am sure! Make transaction.」ボタンをクリックします。
画面下部に緑の帯が表示されますので、すぐに帯の中にある「View your transaction」をクリックしてください。(帯は数秒で消えてしまいます)
Etherscanで、今回実行したトランザクション情報が表示されます。
(表示されない場合は、少し待ってからリロードしてください。)
トランザクションがSuccessになるまで待ちましょう。
トランザクションが成功したら、手に入れたカードをKanadeCollectionで見てみましょう!
https://kanadecoin.com/kanadecollection/
(MetaMaskの導入が必要です。もし未導入の場合は、MetaMaskをインストールするか、MetaMask導入済みの方に確認をお願いしてみましょう!)
ご自身のEthereumアドレスを入力して、「コレクションを確認する!」ボタンをクリックしてください。
コレクション一覧に、手に入れたカードが表示されます!!
(表示されない場合は、少し待ってから再度確認ボタンをクリックしてください。)
実際に購入されなかった方は、テスト用に76枚購入済みの以下アカウントを入力してみてください。
0x3d697Ff5E9cDCc82659297Ea9199d39a959A35BB
76枚のカードコレクションが表示されます!
いかがでしょうか?
実際にスマートコントラクト実行を体験することが出来ましたね!
今回はカードの購入を体験してみましたが、カードの提供者側(今回でいうと、KanadeCollection側)となることも可能です。
提供者側となるためのスマートコントラクトの実行については、また後日ご案内いたします。