キャッシュバック機能付き仮想通貨コントラクトをデプロイしてみる
どうも、ぺろりんです。
新年あけましておめでとうございます。
昨年読んで下さった方もそうでない方も、本年もどうぞよろしくお願いします。
さて、だいぶ時間が空いてしまいましたが、引き続きEthereumのお勉強を「はじめてのブロックチェーン・アプリケーション Ethereumによるスマートコントラクト開発入門 (DEV Engineer's Books)」でやっていきます。
前回はブラックリスト機能付きの仮想通貨コントラクトで遊んでみました。
今回は上の教科書でこの次に書いてある、キャッシュバック機能付きの仮想通貨コントラクトをデプロイして遊んでみようかと思います。
コードはJavaScript VMを使って、ブラウザ上で動かします。
キャッシュバックの仕組み
キャッシュバックの仕組みとしては簡単です。
「setCashbackRate」というメソッドを通して、キャッシュバック率を変数「CashbackRate」に設定します。
送金時にこのキャッシュバック率分を、送金額から引いてやることで「キャッシュバック」を実現します。
コードのデプロイ
コンパイル
まずはコードをコンパイルします。
「Auto compile」にはチェックしてないんですが、どうも勝手にコンパイルされる……?

ちなみに、コンパイラをちゃんと選ばないと怒られます。
サンプルコードで
となっているので、0.4.8のバージョンを選ぶとうまくいきました。

デプロイ
無事コンパイルできたので、デプロイしてやります。
まずは「Environment」を「JavaScript VM」にしてやって、VM環境に設定しておきます。

デプロイ時のパラメータを入力しつつ、「Deploy」を実行します。
文字は「"(ダブルクォーテーション)」で囲む必要があるので注意が必要です。

無事にデプロイできました。

今回の状態変数はこんな感じです。


キャッシュバックの動作確認
前回までのコードに“キャッシュバック機能”が付いたものなのでブラックリスト用の変数があったりしますが、気にせずキャッシュバック関連だけイジって遊んでみます。
今回使うアドレス
先に、以下で使いたいアドレスをまとめておきます。
Aさん、Bさん、Cさんとして、以下のアドレスを使うことにします。
Aさんはデプロイ時に使ったアドレスなので、オーナーアドレスとなります。
Aさん: 0xca35b7d915458ef540ade6068dfe2f44e8fa733c
Bさん: B 0x14723a09acff6d2a60dcdf7aa4aff308fddc160c
Cさん: 0x4b0897b0513fdc7c541b6d9d7e929c4e5364d2db
各アドレスの初期残高確認
まずは初期状態を確認しておきましょう。
Aさんはオーナーアドレスなので、初期状態ではすべてのOreOreCoin( 10000 [oc])を所有しています。

Bさんの初期状態は 0 [oc]です。

同じく、Cさんの初期状態も 0 [oc]です。

OreOreCoinを流通させる
このままだと面白くないので、OreOreCoinをすこし流通させてみましょう。
まずはAさんからBさんへ 2000 [oc]プレゼントしてみます。



同様に、AさんからCさんへ 1500 [oc]プレゼントしておきます。


CさんからBさんに送金してみる(キャッシュバックなしの場合)
はじめに、キャッシュバック率が0の場合の挙動を見ておきましょう。
まずはBさんのキャッシュバック率が0であることを確認しておきます。
具体的には、「Account」をBさんのアドレスにして、「CashbackRate」の値を確認します。


たしかにBさんの「CashbackRate」が0であることがわかりました。
つぎに「Account」をCさんのアドレスにして、Bさんへ 500 [oc]送ってみます。




キャッシュバックなしなので、普通に送金されました。
CさんからBさんに送金してみる(Bさんがキャッシュバック率を設定した場合)
今度はBさんがキャッシュバック率 20% を設定した場合を見てみましょう。
「Account」をBさんのアドレスにして、「setCashbackRate」に「20」を入れて実行してやります。


これで、Bさんの「CashbackRate」というキャッシュバック率を表す状態変数の値が「20」(%)になりました。

この状態で「Account」をCさんのアドレスにして、再びBさんへ 500 [oc]送ってみます。


BさんとCさんの残高を確認すると、たしかにBさんへは2割引きの 400 [oc]が送金されたことがわかります。


まとめ
今回は、キャッシュバック機能付きの仮想通貨コントラクトをデプロイして遊んでみました。
詳しいコードは「はじめてのブロックチェーン・アプリケーション Ethereumによるスマートコントラクト開発入門 (DEV Engineer's Books)」を見ていただきたいのですが、やっていることは簡単で、送金時に
(送金額)=(送金しようと設定した額) - (送金しようと設定した額)×(キャッシュバック率)
と計算した“送金額”を送金しています。
テキストではデプロイ時のアドレス(オーナーアドレス)と普通のユーザーだけで動作確認していたので、オーナーアドレス以外の普通のユーザー2人の場合で動作を見てみました。
次回はコントラクトの継承と連携についてです。
それでは今回はこのへんで。
新年あけましておめでとうございます。
昨年読んで下さった方もそうでない方も、本年もどうぞよろしくお願いします。
さて、だいぶ時間が空いてしまいましたが、引き続きEthereumのお勉強を「はじめてのブロックチェーン・アプリケーション Ethereumによるスマートコントラクト開発入門 (DEV Engineer's Books)」でやっていきます。
前回はブラックリスト機能付きの仮想通貨コントラクトで遊んでみました。
今回は上の教科書でこの次に書いてある、キャッシュバック機能付きの仮想通貨コントラクトをデプロイして遊んでみようかと思います。
コードはJavaScript VMを使って、ブラウザ上で動かします。
キャッシュバックの仕組み
キャッシュバックの仕組みとしては簡単です。
「setCashbackRate」というメソッドを通して、キャッシュバック率を変数「CashbackRate」に設定します。
送金時にこのキャッシュバック率分を、送金額から引いてやることで「キャッシュバック」を実現します。
コードのデプロイ
コンパイル
まずはコードをコンパイルします。
「Auto compile」にはチェックしてないんですが、どうも勝手にコンパイルされる……?

ちなみに、コンパイラをちゃんと選ばないと怒られます。
サンプルコードで
pragma solidity ^0.4.8;
となっているので、0.4.8のバージョンを選ぶとうまくいきました。

デプロイ
無事コンパイルできたので、デプロイしてやります。
まずは「Environment」を「JavaScript VM」にしてやって、VM環境に設定しておきます。

デプロイ時のパラメータを入力しつつ、「Deploy」を実行します。
文字は「"(ダブルクォーテーション)」で囲む必要があるので注意が必要です。

無事にデプロイできました。

今回の状態変数はこんな感じです。


キャッシュバックの動作確認
前回までのコードに“キャッシュバック機能”が付いたものなのでブラックリスト用の変数があったりしますが、気にせずキャッシュバック関連だけイジって遊んでみます。
今回使うアドレス
先に、以下で使いたいアドレスをまとめておきます。
Aさん、Bさん、Cさんとして、以下のアドレスを使うことにします。
Aさんはデプロイ時に使ったアドレスなので、オーナーアドレスとなります。
Aさん: 0xca35b7d915458ef540ade6068dfe2f44e8fa733c
Bさん: B 0x14723a09acff6d2a60dcdf7aa4aff308fddc160c
Cさん: 0x4b0897b0513fdc7c541b6d9d7e929c4e5364d2db
各アドレスの初期残高確認
まずは初期状態を確認しておきましょう。
Aさんはオーナーアドレスなので、初期状態ではすべてのOreOreCoin( 10000 [oc])を所有しています。

Bさんの初期状態は 0 [oc]です。

同じく、Cさんの初期状態も 0 [oc]です。

OreOreCoinを流通させる
このままだと面白くないので、OreOreCoinをすこし流通させてみましょう。
まずはAさんからBさんへ 2000 [oc]プレゼントしてみます。



同様に、AさんからCさんへ 1500 [oc]プレゼントしておきます。


CさんからBさんに送金してみる(キャッシュバックなしの場合)
はじめに、キャッシュバック率が0の場合の挙動を見ておきましょう。
まずはBさんのキャッシュバック率が0であることを確認しておきます。
具体的には、「Account」をBさんのアドレスにして、「CashbackRate」の値を確認します。


たしかにBさんの「CashbackRate」が0であることがわかりました。
つぎに「Account」をCさんのアドレスにして、Bさんへ 500 [oc]送ってみます。




キャッシュバックなしなので、普通に送金されました。
CさんからBさんに送金してみる(Bさんがキャッシュバック率を設定した場合)
今度はBさんがキャッシュバック率 20% を設定した場合を見てみましょう。
「Account」をBさんのアドレスにして、「setCashbackRate」に「20」を入れて実行してやります。


これで、Bさんの「CashbackRate」というキャッシュバック率を表す状態変数の値が「20」(%)になりました。

この状態で「Account」をCさんのアドレスにして、再びBさんへ 500 [oc]送ってみます。


BさんとCさんの残高を確認すると、たしかにBさんへは2割引きの 400 [oc]が送金されたことがわかります。


まとめ
今回は、キャッシュバック機能付きの仮想通貨コントラクトをデプロイして遊んでみました。
詳しいコードは「はじめてのブロックチェーン・アプリケーション Ethereumによるスマートコントラクト開発入門 (DEV Engineer's Books)」を見ていただきたいのですが、やっていることは簡単で、送金時に
(送金額)=(送金しようと設定した額) - (送金しようと設定した額)×(キャッシュバック率)
と計算した“送金額”を送金しています。
テキストではデプロイ時のアドレス(オーナーアドレス)と普通のユーザーだけで動作確認していたので、オーナーアドレス以外の普通のユーザー2人の場合で動作を見てみました。
次回はコントラクトの継承と連携についてです。
それでは今回はこのへんで。
Keyword : ブロックチェーン仮想通貨暗号資産イーサリアムEthereumBrowser-SoliditySolidity