1ヶ月前にブロックチェーンを学び始めたばかりの私が、技術を学び、ブロックチェーンプロジェクトを開発した経験をシェアします。
先日、ETHGlobalのハックマネーハッカソンにチームWANTa Nintendo Switchとして参加してきました。ブロックチェーンハッカソンに参加するのは初めてだったので、とてもワクワクしています。同時に、私よりも経験豊富な他のチームメイトに追いつくためには、まだまだ学ばなければならないことがたくさんあることを知っています。
ブロックチェーンへの飛び込み
ハックマネーのテーマは、分散型金融(DeFi)エコシステムのためのプロジェクト構築です。最初は、分散型ネットワークを使って金融サービスや商品を開発するというアイデアに戸惑いました。スマートコントラクトや暗号通貨、人々の間でお金がどのように分配されるのか、ブロックチェーンにおけるコインの価値は何で決まるのか、などなど、多くの疑問を自問自答しました。何時間もオンラインのドキュメントを読んだり、チームメイトに聞いたりした結果、分散型金融の概念がより明確になり、私はチームと一緒にハッカソンに取り組み始めました。Curvegridのドキュメントはブロックチェーンの詳細な概要を教えてくれて、私の学習プロセスを本当に助けてくれました。
プロジェクトのアイデアをブレインストーミング
各チームがプロジェクトを構築するのに4週間しかないので、時間は短い。それに加えて、私たちは自分たちの作業時間の10%をハッカソンに割り当てないことを決めていました。最初の2週間は、プロジェクトのアイデアのブレインストーミングにほとんどの時間を費やしました。当初は、『どうぶつの森』に接続するブロックチェーン・ゲートウェイ・プラットフォームを構築したいと考えていました。しかし、プロジェクトをテストするためのNintendo Switchを誰も持っていなかったことと、Switchの在庫がほとんどどこにでもあったため、プロジェクトのアイデアを変更することにしました。私たちはユニークで楽しいものが欲しかったので、何度も議論したり、オンラインミーティングをしたりして、取り組むべきアイデアを選びました。
結局、ユーザーがERC20トークンをプールに預けるたびにWANTトークンを渡し、ユーザーがWANTトークンを換金するとプールからランダムにトークンを渡すトークンプール交換所を構築することにしました。最初は、これがDeFiと関係があるようには見えませんでした。しかし、DeFiのテーマに合わせてWANTトークンの契約書を作成したときに、面白いことが起こりました。
SolidityでWANTトークンコントラクトを作成する
チーム内では、もう一人と私がスマートコントラクトの構築を担当しました。そのためには、Solidityを学ぶ必要があったので、CryptoZombiesのチュートリアルに数日かけて参加しました。このウェブサイトでは、詳細でインタラクティブなコーディングレッスンが提供されており、Solidityでコーディングを学ぶ際に非常に役立ちました。言語に慣れてきてから、WANTトークンのスマートコントラクトを作り始めました。
しかし、実際にスマートコントラクトを開発し始めてみると、Solidityでのプログラミングは思ったほど簡単ではないことに気づきました。Solidity には、プライベート変数はアンダースコアで始まるという命名規則があります。C++やPythonでプログラミングをしてきた私にとって、アンダースコアで始まる変数の命名は普通のことではありません。変数がアンダースコアで始まることを忘れてしまい、多くのコンパイルエラーが発生してしまいます。
また、ブロックチェーンのDAppを構築する際に注意すべき点として、効率を優先しないということがあります。ブロックチェーンでは、変数を書くことは、10個の変数を読むよりもコストがかかることがあります。そのため、スマートコントラクトを開発するプロセスが反復的になり、逆に直観的になってしまうことがあります。例えば、状況によっては、書き込み/更新を避けるために、配列を複数回作り直した方が、配列を格納して直接使用するよりも良い場合もあります。
WANTのペイアウトアルゴリズム
デポジットとクレーム機能を備えたコアコントラクトの構築が完了した後、ユーザーがERC20トークンをデポジットするたびに特定の金額のWANTトークンを与えるペイアウトアルゴリズムを設計する必要がありました。ユーザーには、換金時に受け取るトークンが完全にランダムであることを知っていても、トークンを預け続けるインセンティブを持たせたいと考えています。また、早い段階でトークンをプールに追加するインセンティブを与えたいと考えています。これらの目標を達成するために、トークンの真の価値とプール内での希少性を考慮したペイアウトアルゴリズムを考案しました。トークンXを入金した際にユーザーが受け取るWANTトークンの金額は以下のようになります。
価格交換にUniswapを使用してX_real_price_in_ethを計算しました。スマートコントラクトの導入/テストとアプリケーションへの統合には、CurvegridのSaaSプラットフォームであるMultiBaasを使用しました。
プロジェクトの詳細はGithubのレポを参照してください。このペイアウトアルゴリズムでは、ユーザーはプールにトークンを預けて、受け取ったWANTトークンを換金して利益を得る傾向があると考えています。
ラップアップ
全体的に、ハッカソンに参加したことで、ブロックチェーンやDeFiについて詳しく知ることができ、貴重な経験をすることができました。また、Solidityでプログラミングをしたり、バーチャルハッカソンに参加したり、リモート環境で仕事をしたりと、新しい人と出会い、新しいことを体験することができました。
私たちの製品を使って楽しんでいただけたら、星をつけて、 githubページの他のプロジェクトをチェックすることを忘れないでください。Curvegridがハックマネーハッカソンに参加した方法の詳細はこちらをご覧ください。
免責事項:我々は金融の専門家ではないので、ペイアウトアルゴリズムは完璧ではありません。ハッカソンのために、Rinkebyのテストネットにテスト版をデポしただけです。また、deposting tokensを使っても利益が出ないのに損をしてしまう場合は、アルゴリズムではなく運命のせいだということを覚えておくといいですね😃。