blog

DeNAのエンジニアが考えていることや、担当しているサービスについて情報発信しています

2023.10.23 インターンレポート

Web3インターンがカナダで初contract開発に挑む

by Ikura

#Blockchain #Ethereum #L2 #ZKP #Crypto #Game #Identity #web3 #ETHGlobal

こんにちは。デジタルエンターテインメント事業部 Web3 開発グループに所属のikura( @ikura96942060 )です。2024年に入社予定で、現在は内定者インターン生として働いています。

中学生から個人で古物商として楽譜の販売をしたり、高価格帯のイヤホンを自ら作成・販売をする事業を営んできました。最近は生成系のAIにお熱で画像生成AIを活用したInstagramのアカウントは、数日前にフォロワー数が10万人に到達しました(嬉しい!)

少し前にETHやBTCのマイニングを個人でやっていた経緯から、「ブロックチェーンを活用して実際にプロダクトを開発したい」と担当人事の方に伝えたところ、2023年の4月よりインターンとして一足先にJoinすることとなりました。

今回はインターン生として、カナダで初めてのcontract開発に挑んだ話をします🍁

なんでDeNAがカナダに?

カナダのWaterlooで開催されたハッカソン、ETHGlobal Waterlooに出場するためです。

Web3開発グループはWeb3領域のR&Dと事業開発を専門としたエンジニア集団です。

2023年4月にも東京で開かれたETHGlobal Tokyoに出場し、IntmaxからPrizeを獲得していました。参考記事 : DeNAのWeb3開発グループメンバーがETHGlobal TokyoでPrizeを取りました! | BLOG

次なる開発領域として、「ブロックチェーン上で永続する分散型アイデンティティ」を用いたプロダクトの開発を検討していたところ、ちょうど6月にもカナダでETH Globalが開催されることを知りました。

東京での参加を通して、グローバルで普及するプロトコルやプロダクトのコアメンバーとの対話から得られる学習量に手応えを感じていた我々は、カナダのETHGlobalにて、高速に技術的な実現可能性の検証をすることに決めました。

業務として海外ハッカソンに出場する前例はなかなかありませんでしたが、東京での成果が大きかったこともあり、上長や関係各所の全面的な協力のもと、約1ヶ月の準備期間を経て参加に至りました。

カナダでのワークライフ

ETH Globalは大都市トロントと同じオンタリオ州にあるWaterlooで開催されました。

スケジュール

12時間かけて羽田空港からトロント・ピアソン国際空港へ。電車とバスを乗り継ぎ、夕方にAirBnBで借りた一軒家に到着しました。

AirBnBで借りた一軒家

夏のカナダは日照時間がとても長く、以下の写真のように、21時でも日本の感覚だと18時くらいに思える明るさでした。時差ボケに備えて、早めに現地入りしておくのは最善の策だと思います。

Waterlooの街並み

到着時間が遅かったので、初日は市街地にあるレストランで夕飯を取りました。 基本的には近所のWalmartで食材を調達して簡単に調理する日々でした。我々が滞在したWaterlooはインド料理やメキシカンなど多国籍料理の安価で美味しいレストランも多く、飲食には不自由を感じませんでした。

ステーキング

6/22からはネットワーキングイベントへの参加と下見のために、ハッカソン会場である現地大学のキャンパスへ行きました。

キャンパス

会場内は広く清潔で、宿を取らない人でもChill Spaceで仮眠をとることができました。

会場 Chill Space

初contract開発のリアル

6/23、いよいよハッカソンが開催されました🔥

プロダクト概要

ハッカソンで私たちが開発した「 Autonomous World ID 」は、ゼロ知識証明によって生成された分散型IDを生成して、スマートコントラクトによって自律的に計算したゲームレートを安全に管理することができるアプリケーションです。

設計

Autonomous World IDは、大きくZKP(ゼロ知識証明)で秘匿にIDを生成する機能と、ゲーム独自のレート計算を実行し、計算結果をオンチェーンに保存する機能の2つに分割できます。 さらに3つのモジュールに分かれています。

contract

  • Rating contract, Rating register contract, Rating update contract: ゲーム独自のレートを作成し登録するモジュール。私が主に開発を担当しました。
  • Connecter: オンチェーン上のシングルサインオンサービスの Sismo を利用して、ユーザーをゲームレートシステム自体に初期のレートを登録するモジュール
  • Game rating list: データをオンチェーン上に保存するプロトコルの EAS を利用した、コントラクト上のゲームレートの情報を管理するモジュール

生成AIと対話しながらの実装

AWIDでは生成AIを活用して開発しました。 今回のプロジェクトはハッカソンに提出する期限が区切られていたので、限られた時間で不慣れな部分のコードも書かなければいけませんでした。 そこで、自分で調べればかけるようなロジックや実装を、ChatGPTとの対話を通してコーディングすることで、プロジェクトの根幹部分に対してより時間を使うことができるようになりました。 左が私が指示した部分、右がchatGPTに書かせたものになります。

ソースコード

終盤に起こったプロトコルの問題

開発期間の終盤ではEASからGraphQLでデータを取得することができないエラーが発生しました。

より具体的には、EASはゲームのレートの保存に使用している部分になっていて、DApps側でcontractから登録したレート情報を取得することができない、というエラーです。

EAS自体の使用を使用することを諦め、自身でコントラクトを実装することも検討しましたが、ハッカソン開催期間中はコアデベロッパーとDiscordにて直接連絡がでるようになっています。そこでEAS側にサポートをいただき、最終的に実装することができました。

このようにまだリリースして間もないプロトコルを用いた開発の際に、こうして即時FBを得ながら開発ができる環境は、学習が進むと実感しました。

ハッカソンの結果は…?

最終日の午前9時、苦難の末になんとかプロダクトを提出しました。 提出が終わると、休む間もなく会場へと向かい、Finalist選考のピッチ、プロダクトが使用したプロトコルを運営するスポンサー企業へのピッチが対面で続きました。ピッチと質疑応答は合計7分と非常にタイトです。

会場でのピッチ

複数回に渡る英語でのプレゼンテーションは、ETHGlobal Tokyoで経験していたこともあり、基本に忠実に準備をすることで、より良い反応を得ることができました。

  • 事前に全員に話すための共通スクリプトを準備
  • さらに聞き手の関心ごとにスクリプトやPitchスライドを追加
  • 想定外の質疑応答で時間を無駄にしないよう、質問と応答も可能な限り事前に用意

結果として、Finalist選考員からは「ゲーム内での体験に閉じずに、コミュニケーションを想定している点が素晴らしく、将来的にはオンチェーン以外のゲームに拡張しうる可能性も感じる」など、ポジティブなFBを受けることができたとともに、The Graphからは以下のプライズを受賞できました!Prizeを目的にした出場ではなかったとはいえ、いただいたときは嬉しさが込み上げました。

Best use of Existing Subgraph(s) 2nd Runner-up

海外ハッカソンに参加して得た学び

海外コミュニティからのリアルタイムフィードバックの価値

現在、ブロックチェーン上の主要なプロトコルの開発者はほとんどが海外におり、普段の開発環境では非言語情報も含めたFBを得ることは難しいですが、ハッカソンでは我々が提案したプロダクトに関する対話を通して、彼らの考えを直に吸収することができました。

Sismo: デジタル空間上だけでなく、現実世界でのユースケースを増やすことに焦点を当てていたため、我々が提案したようなアプリケーションは支援の優先度が下がるとの率直なFBを得ることができました。

EAS: プロダクトの必要性に共感していました。現在の仕様では、ユーザーの意図に沿わない結果を登録しない、ゲームをプレイしないで結果だけを改竄して登録することでレートを不当に操作するリスクがあるなど、運営視点でのFBを得ることができました。

共同生活を通した相互理解と開発速度の向上

今回のハッカソンを通して、休憩を除き毎日一緒に寝食を共にすることができたことで、制作するプロダクトについてはもちろん、今後Web3チームで作りたいプロダクトや自分たちの過去について、存分に話し合うことができました。

また、安全とはいえ普段の生活圏とは違うカナダで共に戦ったような感覚になれたため、チームとしての連帯感も一層増したように感じます。

(開発期間は集中しすぎて、作業風景を撮る余裕がありませんでした笑)

ハッカソンで高速開発をすることで果たせる目的を見極める

今回のハッカソンでは、使用を予定していたプロトコルを活用した実装と開発者とのコミュニケーションを通して、当初想定していた技術的な実現可能性を検証する目的は達成できました。 欲を言えば、オンチェーンゲームをプレイするような顧客の価値仮説の検証を同時に行いたかったのですが、今回のハッカソンでは困難でした。

第一に、ハッカソン会場にいる開発者は必ずしも想定顧客と一致するわけではありません。オンチェーンゲームをプレイするような顧客が、ETHGlobalに参加するHacker達に多いのは事実ですが、彼らの多くも我々と同じく自身のプロダクトの開発に集中しており、対話の時間を確保するのは困難でした。

第二に、実際にデモレベルでのプロダクトを見せたからといって、率直なFBをその場で貰えるわけではありません。あくまで全員がチャレンジに楽観的であることも重なり、「ぜひ使ってみたい!」と言ってくれたとしても、実際にプロダクトを使うこととは別です。 「Autonomous World ID」は事業化には進めないと判断しましたが、価値仮説の検証に行くのであれば、ハッカソン期間内に開発したDemoを通してでは不向きだと考えました。

今後ハッカソンに出場する際には、技術的な実現可能性の検証、またはネットワーキングに主な目的を置くべきだと学びました。

終わりに

Web3チームは海外ハッカソン以降も事業開発に挑戦しています🔥

さらに気になった方は、フルスイング記事をご覧ください!

新たなビジネスの種を高速で検証する。“おもしろい”を究めるWeb3開発グループの挑戦 | フルスイング by DeNA

最後まで読んでいただき、ありがとうございます!
この記事をシェアしていただける方はこちらからお願いします。

recruit

DeNAでは、失敗を恐れず常に挑戦し続けるエンジニアを募集しています。