≪ TOP

スマートコントラクトに触れてみよう!

注意!
カードを購入すると、1枚につき300KNDCが消費されます。
例えば、150枚購入すると45000KNDCが消費されます。
また、スマートコントラクトの実行にはgas代も掛かります。
スマートコントラクトにより購入処理が実行されるため、購入すると後でキャンセルすることは出来ません。
十分にリスクをご理解いただき、それでも挑戦していただける方のみ、自己責任で以降の手順を実施してください。

※以下の手順は、MyEtherWallet内で行うことを前提としています。
※最終的に、購入したカードをKanadeCollectionで表示するためにはMetaMaskの導入が必要です。
※KanadeCollectionはChromeで動作確認を行っております。ブラウザによっては正常に動作しない可能性があります。


KanadeCoinでスマートコントラクトを体験してみましょう!

MyEtherWalletからKanadeCoinのスマートコントラクトを実行して、Dappsの「KanadeCollection」でコレクション出来るカードを購入してみましょう!

1. MyEtherWalletにアクセス

まずは、MyEtherWalletにアクセスします。
https://www.myetherwallet.com/

2. メニューの「Contracts」をクリック

この「Contracts」のページで、Ethereum上のスマートコントラクトを実行することが出来ます。

3. 「Contract Address」にKanadeCoinのコントラクトアドレスを入力

KanadeCoinのコントラクトアドレス 0x8E5610ab5E39d26828167640EA29823fe1dD5843 を入力します。
「どのトークンのスマートコントラクトを実行するか?」をここで指定します。
今回はKanadeCoinのコントラクトアドレスを入力しましたので、「KanadeCoinのスマートコントラクトを実行する」という指定になります。

コントラクトアドレスを入力すると、その横に、アドレス毎に一意となる模様が表示されます。
MyEtherWallet上で、KanadeCoinの模様はこのようになるはずです。

もし違う模様が表示された場合、コントラクトアドレスが何か間違っていますので、よく確認し直してください。

4. 「ABI / JSON Interface」に以下の文字列を入力

このリンク先にあるコードをコピーして入力してください。
https://raw.githubusercontent.com/KanadeCoin/kanadecoin-docs/master/interface/abi.json
(755行ありますが、頑張ってコピペしてください…)
ここでは、そもそもトークンがどんなスマートコントラクトの処理を持っているか、その定義を指定しています。

ABIは、Application Binary Interfaceの略です。
Application Binaryは、つまりEthereumネットワーク上に存在するトークンのことです。
Interfaceはその名の通り、そのトークンで可能な操作(実行可能なスマートコントラクト)のインターフェースです。

なぜこの指定が必要というと、それぞれのトークンが持つスマートコントラクトは全く違うためです。
例えば、「KanadeCollectionでコレクション可能なカードを購入する」ために実行するスマートコントラクトは、KanadeCoinでしか実装されていない機能です。
つまり他のトークンでは、同じ処理は実行出来ません。

トークンはこの世に数多く存在しているため、MyEtherWalletが全てのトークンの全てのスマートコントラクトインターフェースを把握しているわけではありません。
なので、自分でスマートコントラクトのインターフェースの定義を入力する必要があるのです。

5. Accessボタンをクリック

ボタンを押すと、ページの下の方にドロップダウンが表示されます。

6. 「getRandomBox」を選択

さて、ここから実際にカード購入の手続きをしてみます。
まずは、ドロップダウンから「getRandomBox」を選択してください。
ここでは、これから購入しようとしているカードの情報を確認します。

KanadeCollectionでは、カード1枚購入につき300KNDCを消費します。
でも、それは私が勝手に「1枚300KNDCです」と言っているに過ぎず、もしかしたら本当は1枚100万KNDCかもしれませんね?
しかも、購入した後に気づいても、購入の取り消しが出来ません。
なので、購入する前に本当に1枚につき300KNDCなのか確認してみましょう!

7. 「_id_max32」にIDを入力

ドロップダウンの下に「_id_max32」の入力欄があります。
ここにKanadeCollectionというIDを入力して、「READ」ボタンをクリックしましょう。
(まだKNDCは消費されません。gas代も掛かりませんので、安心してください。)

このIDは、Dappsの「KanadeCollection」で使用しているIDです。

8. 実行結果を確認

何かカンマ区切りの数値が表示されましたね?
おめでとうございます!今あなたは、KanadeCoinのスマートコントラクト実行に成功しました!
意識的にスマートコントラクトを実行したのは、これが初めての体験かもしれませんね。

今あなたは何をしたかと言うと、これからカードを購入しようとしているKanadeCollectionの情報を、Ethereumのブロックチェーン上から読み込んだのです。

実行結果を見ると、5つの数値が表示されています。
これの4つ目が、1枚あたりに必要なKNDCの量です。
30000000000となっていますね?

KanadeCoinは桁数が「8」のトークンです。
なので、30000000000から8桁を取り除きます。
30000000000 → 300
この数字が、カード1枚あたりに必要なKNDC量です!

今実行した「getRandomBox」は、IDを渡すと情報が返ってくる、情報は5つ返ってくる、その4番目は1枚あたりに必要なKNDC量、等がスマートコントラクトで保証されている処理です。

これで、確実に「300KNDC/枚」であることが確認できました!

9. 「drawRandomItem」を選択

1枚あたりのKNDCが確認できたら、いよいよカードを購入してみます。
ドロップダウンから、「drawRandomItem」を選択します。

10. IDと購入枚数を入力

ドロップダウンの下の「_id_max32」に、先程と同様にKanadeCollectionと入力します。
そして「_count」に、購入したいカード数量を入力します。
(例えば、3枚カードを購入する場合は 3 と入力します。)

11. アンロックする

2つの入力欄の下を見ると、Walletをアンロックするための欄が存在しています。
先ほどはアンロックせずにスマートコントラクトを実行できたのに、今回はなぜアンロックが必要なのでしょうか?

実は、Ethereumのスマートコントラクトを実行する場合、「データの読み込み」はgas代が掛からず実行可能ですが、「データに変化が発生する処理」はgas代が必要になるためです。
カードを購入するということは、入手したカードの情報をEthereumのブロックチェーン上に記録するということになるため、ブロックチェーン上のデータに変化が発生する処理である、ということです。

アンロックするまでは「drawRandomItem」を実行できないので、ご自身のお好きな方法で、いつも通りのアンロックを行ってください。

12. カード購入を実行

(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」をクリックしてください。(帯は数秒で消えてしまいます)

13. 実行されたトランザクションの確認

Etherscanで、今回実行したトランザクション情報が表示されます。
(表示されない場合は、少し待ってからリロードしてください。)
トランザクションがSuccessになるまで待ちましょう。

14. KanadeCollectionでカードを確認

トランザクションが成功したら、手に入れたカードをKanadeCollectionで見てみましょう!
https://kanadecoin.com/kanadecollection/
(MetaMaskの導入が必要です。もし未導入の場合は、MetaMaskをインストールするか、MetaMask導入済みの方に確認をお願いしてみましょう!)

ご自身のEthereumアドレスを入力して、「コレクションを確認する!」ボタンをクリックしてください。
コレクション一覧に、手に入れたカードが表示されます!!
(表示されない場合は、少し待ってから再度確認ボタンをクリックしてください。)

実際に購入されなかった方は、テスト用に76枚購入済みの以下アカウントを入力してみてください。
0x3d697Ff5E9cDCc82659297Ea9199d39a959A35BB
76枚のカードコレクションが表示されます!


いかがでしょうか?
実際にスマートコントラクト実行を体験することが出来ましたね!

今回はカードの購入を体験してみましたが、カードの提供者側(今回でいうと、KanadeCollection側)となることも可能です。
提供者側となるためのスマートコントラクトの実行については、また後日ご案内いたします。