Curvegridのエンジニアとインターンが、2020年4月24日から5月24日まで開催されるETHGlobal HackMoneyハッカソンに参加しています。最大5人のチームに所属する300人のハッカーが、次世代の分散型金融(DeFi)アプリケーションのプロトタイプを作成しています。過去のETHGlobalハッカソンDeFiの受賞者には、Set Protocol、ZK Social Recovery、Blazarが含まれています。
参加者には50DAIを賭けていただき、ハッカソン終了時に積極的に参加された方全員に還元されます。主催者、スポンサー、メンターはハッカソンの組織と運営に多大な労力を費やしており、50DAIを賭けるという小さなハードルは、真剣に参加したいと考えている人だけに参加を促すものです。
HackMoneyにDAIを賭けるには2つの方法があります:HackMoneyのサインアップページを介して一度に1つの方法と、スマートコントラクトと直接やり取りして一括で賭ける方法です。ここでは、2つ目の方法をデモし、異なるDeFiの"マネーレゴ"を一緒にスナップするためにどのように使用できるかを説明します。
杭打ち入門
分散型金融(DeFi)のステークとは、見返りに価値のある何かを受け取るために、一定期間、トークンやクリプトカレンシーを誓約するプロセスのことです。例えば、DAIがロックアップされている期間の利息を効果的に受け取るために、DAI貯蓄率スマートコントラクトにDAIを入金することができます。
アンロックでHackMoneyのDAIをステイクする
HackMoneyのステイク設定では、以下のようなコンポーネントを用意しています。
- メーカーダオ:DAIは、その対ドル価格が分散担保債務ポジション(CDP)で管理されている安定したコインです。1 DAI≒1米ドル。DAIはERC20とDSTokenに対応したスマートコントラクトです。
- アンロックプロトコルこれがDAI-for-HackMoney参加設定の核心です。ETHGlobal主催者は、参加者からDAIを受け取り、HackMoneyのKEYトークンを発行するために、UnlockPublicLockスマートコントラクトを導入しました。ハッカソンの終了時には、ベストを尽くした参加者は、50個のDAIに加えて、サインアップした人、賭けた人、参加しなかった人からのDAIの一部も含めて、KEYトークンを返却することができるようになっています。スマートコントラクトに加えて、HackMoneyのサインアップポータルに統合されたウェブベースのDAppを使用して、DAIを賭けてKEYトークンを受け取ることができ、HackMoneyハッカソンの参加者としての地位を確保することができます。
HackMoneyにDAIを賭ける基本的な流れは、以下の通りです。
- イーサリアムのガス料金を支払うためにETHをいくつか取得する
- 杭打ち用のDAIを50個以上購入
- Web3ブラウザ(MetaMaskなど)でハッカソンに登録し、2つのトランザクションを送信します。
- approve()HackMoneyPublicLockスマートコントラクトを使ってウォレットから50DAIを引き出す。
- buy() PublicLockスマートコントラクトに張られた50DAIと引き換えにKEYトークンを購入します。
または、ステップ1と2をスキップして、ステップ3の最初の部分としてクレジットカードを使用することもできます。
スマートコントラクトに直接HackMoney用のDAIを張り付ける
HackMoneyPublicLockスマートコントラクトは公開されているEthereumブロックチェーン上で動作しているので、直接話しかけることができる。我々はMultiBaasを使用しますが、コマンドラインに慣れていればスクリプトを書いたり、直接ethコマンドを使用したりすることができます。我々の場合は、参加しているエンジニアやインターンを代表して50DAIを出したいと考えていました。HackMoneyのサインアップページでは、アクティブなWeb3ブラウザウォレットの利用のみをサポートしています。参加者それぞれが秘密鍵を共有するか、参加者それぞれに50DAIを送って、順番に自分で賭けてもらうかのどちらかを選択しました。
しかし、Ethereum上での取引には1回の取引に約$0.05~$1.50の取引手数料がかかり、DAIの発送に加えて、参加者ごとにapprove()とpurchase() を呼び出すと、コストが膨らみ始めます。中央のウォレットからDAIを単純にステークすることができたらどうだろうか。
まず、8x50 = 400のDAIのために、DAIスマートコントラクトのapprove()を一度だけコールして、中央でステークする必要があります。これにより、DAIはウォレットから引き出され、HackMoneyPublicLockスマートコントラクトに張り込まれます。すでにMultiBaasインスタンスにDAIコントラクトが設定されているので、そこに移動し、適切な値を入力して「送信方法」をクリックします。
MetaMaskを使ってトランザクションに署名し、DAIをステークする準備ができました。我々はHackMoneyのサインアップUIを介してこれを行っていた場合、1つだけではなく、8つの別々のトランザクションになっていただろうことに注意してください。
次に、PublicLockスマートコントラクトをMultiBaasにアップロードし、既存のHackMoneyスマートコントラクトインスタンスにリンクします。
この上部には、KEY価格(50.000...DAI)を含む公開状態の変数が表示されています。また、これまでに発行されたKEYトークンの数も見ることができます(Total Supply = 279)。
buy()メソッドまでスクロールダウンして、適切な値を入力します。受取人には、取引を代行している参加者の公開Ethereumアドレスを指定します。再び「メソッドを送信」をクリックし、トランザクションに署名すると、参加者の代わりにKEYトークンと引き換えに50DAIをステークしたことになります。
要約するとこんな感じです。
- Ethereumのガス料金を支払うためにETHをいくつか取得しました。
- 杭打ち用に8x50=400DAIを購入しました。
- approve()HackMoneyPublicLockスマートコントラクトをウォレットから400 DAIを引き出すために
- Purchase()50 DAIと引き換えにKEYトークンを購入します。
- 各参加者は、Web3ブラウザ(MetaMaskなど)を使ってハッカソンにサインアップし、自分のウォレットがすでに50DAIが賭けられていることを認識します。
もう一度、動画で
取り組みを記録し、マルチバースでDAIを杭打ちしている様子を簡単にデモ動画にまとめました。