イーサリアム上DAppsをマネタイズする6つの方法 Part 2
ーマネタイズモデルの実装ー
本記事は、6 Ways to Monetize Your Ethereum DApps (Part 2)(Georgios Konstantopoulos) の翻訳です。万一誤訳などありましたらPrivate Note機能でお知らせ下さい。
このシリーズのPart1では、イーサリアム上のDAppsをマネタイズする理論的なアプローチを論じた。Part2ではいくつかコードの例を見て、実際にSolidityでこれを実装する方法を紹介しよう。
資金の引き出し
まず資金を所有者のアドレスに引き出せるようにする関数が必要だが、これは次のようにシンプルだ:
この関数は、呼び出し元のコントラクトの残高を所有者のアドレスに転送する(とても一般的なonlyOwner
修飾子を使うパターン)。上記コーディングのキーワードをよく知らない場合、まずはCryptoZombies.ioでのレッスンを完了してからまたこの記事を読み始めてほしい。
免責事項:以下の例はすべて、説明した機能のみを実装する方法を示すために簡略化されたものだ。私たちはビジネスロジックを想定しているので、スマート・コントラクトを作成する際に取る厳しいセキュリティ・オーディットはここでは全く行わない。プロダクトを出す前に、常にコードの完全なセキュリティ・オーディットを実行するように!
1. クラウドセール作成 / トークンのローンチ
これはイーサリアム公式サイトで説明されている。安全なクラウドセール作成のためには、Open Zeppelinのオーディット・コントラクトの使用が推奨される。またこのガイドやビデオに従うのも良い。
2. プレミアム機能 / 要件のスキップ
上の場合、ユーザーは1 ether
を支払うことでレベルアップのwinCount
リクワイアメントをスキップすることが可能だ。所有者は、すでに説明したwithdraw
関数を呼び出すことで資金を手にすることとなる。
Etherの価格は将来的に大幅に上昇(または下降)する可能性があり、そうするとプレミアム機能のコストも変わるということにことに気をつけてほしい。そのため将来コストを変更できるonlyOwner
関数を追加することは、多くの場合理にかなっている。そうしなければ、あなたのアプリが非常に高価格になるかもしれないのだ。以下のすべての例にもこれと同じことが言える。
3. マーケットプレイスの取引手数料のパーセンテージを取る
この(非常に簡素化された)例では、誰かがゾンビを買いたい場合に、その価格の10%をあなたのウォレットに、残りをゾンビの所有者に送金している。
ガスコストを節約するために、owner.transfer(msg.value/10);
をスキップし、代わりにEtherをコントラクトの残高として残しておくことができる。そして前に説明したwithdraw
関数を使うことで、後でコントラクトに含まれるすべてのEtherを引き出せる。
4. サブスクリプション/ メンバーシップ
ここではサブスクリプション/メンバーシップのビジネスモデル実装の例を見ていこう:
- 終身
- 時間ベース
- 使用ベース
適格とマークされた個人によってのみある関数が呼び出されるコントラクトを作成していこう。
終身メンバーシップ
ブーリアンのmapping
、ブーリアンが真であるかをチェックするmodifier
、そしてユーザーにある価格でメンバーになることを許可する関数を作成するシンプルなケースだ。
またメンバー/非メンバーにブール値を使用する代わりに、uint8
を使用して段階の異なるメンバーシップにより多くの機能を持たせることもできる。例えば無料ユーザーの場合は段階0、シルバーメンバーシップの場合は段階1、ゴールドメンバーシップの場合は段階2、といった風にだ。そのあとonlySilver()と
という関数を作り、メンバーシップの段階が>= 1
であるかをチェックするとよい。
簡単で十分だろう、次に進もう。
時間ベースのメンバーシップ/ サブスクリプション
ここで我々のビジネスモデルを、サブスクリプションが1日あたり0.005 Etherと仮定しよう。
このケースではユーザーがrenewSubscription
関数を呼び出すと、必要であればsubscriptionExpiration
がnow
で初期化され、そのあとユーザーの支払額に応じた日数が増やされる。onlyMember
修飾子は現在時間が期限日を過ぎていないかをチェックするものだ。
使用ベースのメンバーシップ/使用ごとの支払い
ここでのビジネスモデルでは、設定された価格のAPIコールを購入する方法と同様に、一括前払いでユーザーが関数コールを購入することとなる。
この例では、ユーザーは1 Etherあたり1000コールを購入できる。ユーザーがonlyIfEnoughCalls
修飾子を持つ関数を呼び出すたびに、彼らが関数呼び出しに適格であることを確認した後、availableCalls
変数を減らす。
上記の全シナリオで、~~に対応するonly{~~}
修飾子をシンプルにどの関数にも加えることができるし、そうするとアクセス権を与えられたユーザーのみ関数を呼び出せるようになる。
このシリーズ2記事では、マネタイズすることを目指す場合に、あなたのDAppに適用できるいくつかのビジネスモデルを説明及び実装してきた。
この記事内の全てのコードは、各モデルの非常に基本的な実装である。そのため、必要に合わせて適応させなくてはならないことを強調しておきたい。
次のステップは:
Loom Network は、イーサリアムのハイスケーラブルなDPoSサイドチェーン構築のためのプラットフォームで、大規模ゲームやソーシャルアプリにフォーカスしています。
さらなる情報は こちらから.
LOOMトークンをステークして、PlasmaChainのセキュリティ維持に参加しませんか? やり方はこちら
あなたがブロックチェーンゲームのファンであれば、 Zombie Battlegroundをチェック!世界初・独自のブロックチェーン上でフルに稼働するPC & モバイルカードゲームです。
そしてもしこの記事をお楽しみいただけ、最新情報の受け取りをご希望であれば、私たちの プライベートメーリングリストへの登録や、Telegram、Twitter、GithubやQiitaのフォローをお願いします!