ハッカソンとは、Hacking+Marathonを組み合わせた造語で、企業や団体が推しの技術を広めたり、新しいアイデアを発掘するために開催するイベントのことです。通常は無料の講演や講義が提供されたり、賞金付きのプログラミング大会(一定期間内に競って新しいプロダクトを実装する)が催されたりします。
今回、Chainlinkというブロックチェーン界隈ではそれなりに知名度のあるサービスを提供する団体が開催したハッカソンに筆者が参加いたしましたので、その汗と涙の記録をレポートいたします。
ちっす、インターネット神さま。
著者がハッカソンに参加したらしいっすよ。
なぬっ。シャバ僧のくせに生意気なやつじゃ!
口悪っ(笑)
ChainlinkとChailinkが開催するハッカソンについて
Chainlink
こちらの記事でも紹介しましたが、Chainlinkとは、ブロックチェーン・ネットワークがその外部にあるインターネットに接続して、情報を取得することを可能にするサービスです。ブロックチェーン自体ではなく、周辺技術にあたり、オラクル・ネットワークと呼ばれる接続用のノードからなるネットワーク経由で、ブロックチェーン内部から外部であるインターネットへの接続を可能としています。
例えば、スマートコントラクトの中で通貨レート(1ETHが何ドルか等)を使いたい場合、外部のインターネットからその値を取得することができます。ブロックチェーンは閉じたネットワークなので、こういったサービスを経由しないと外にある情報を抜き出すことができません。
Chainlink fall 2022 hackathon
ハッカソンの内容
2022年10月14日から同12月2日までの間に開催され、同11月18日が成果物の提出期限でした。その間いくつかの講義がオンラインで提供されました。以下がその一例です(各講義の一覧はこのページの最後にあります)。
- Hardhat入門
スマートコントラクトを開発するためのフレームワークの一つであるHardhatを使った開発の仕方 - Remix/Solidity入門
オンラインでプログラミング言語Solidityを使ってスマートコントラクトを開発するIDEであるRemixを用いた開発の仕方 - チームづくりイベント
ハッカソンのチャレンジを一緒に行うためのチームメート探しのイベント - Chainlinkノードの実行環境構築
ローカル環境におけるChainlinkノード(オラクルノード…外部インターネット接続を仲介するサーバー)の実行環境の構築 - web3におけるフロントエンド開発入門
デジタルウォレット(Metamask等)と接続し、その情報をブロックチェーン側に送る、そのためのインターフェースとブロックチェーンの間を取り持つ役割をなすフロントエンド部分の開発の仕方 - UCAN Build Apps with IPFS
web3世代のグローバルなファイルシステムであるIPFSの紹介
比較的入門的な位置づけの講義やweb3の関連技術を紹介するワークショップが中心でした。ほんの触りの部分を概観するには良い内容で、ここから深い内容に入っていくと良いように思います。
提出物
11月18日までの36日間が開発期間で、最終的には、以下のものをDevPostの特設ページに提出することで賞金レースに参加することができます。
- 成果物を紹介するビデオ
- 成果物の内容説明ページ
- どう着想を得たか
- 何をするプロダクトか
- どうやって作ったか
- チャレンジングだったこと
- 達成できたこと
- 学んだこと
- 今後の改善
- 成果物を確認できるページやレポジトリー
賞金
カテゴリーごとの賞金は以下の通りでした。
賞金はUSドルの記載ですが、Chainlinkの通貨であるLINKでの支払いのようです。
- Grand Prize $25,000
- NFT & Gaming Prize $15,000
- DeFi Prize $15,000
- DAO Prize $10,000
- Social Impact $10,000
- Women in Tech $10,000
- Chainlink Services – First $7,000
- Chainlink Services – Second $4,000
- Chainlink Services – Third $2,000
- Top Quality $20,000
- Sponsor Prizes $150,000(総額)
審査基準
- UI/UXが優れているか
- オリジナリティ、ユニークさ
- 技術的に優れているか
- 実用性、ビジネス的な価値があるか
- ”Wow factor”(思わずワオッと言ってしまうような要素があるか)
ハッカソンの開発記録
なぜ参加しようと思ったか
著者はIT業界で働いていますが、ハッカソンへ参加した経験はなく、またweb3自体も2022年から学び始めたばかりの入門者です。ハッカソンを通じて、web3への知見を高めることができるであろう、また、限られた期間でプロダクトを作り上げるということは、短期間のうちにスキルを向上させることにつながるであろうと考えて、参加いたしました。
何よりもこういうイベントを実際に体験してみたかったということも参加の動機になりました。
完成までの道のり
一つの考え方としては、このハッカソンの目的が新しいユースケースの発掘にあると思ったので、スマートコントラクトやオラクルサービスを適用したいユースケース(適用例)をリストアップしました。
ユースケースの中の一つに公開情報として、例えば株価を取得し、それと連動した金融商品を作ることが可能ではないかといったアイデアがありました。そこから更に株価に近いところで何かないかと思考を巡らせ、今回のアイデアに至りました。
論理的にどういう役割分担(処理を担う役割のグループ)が必要で、それぞれがどう関連しながら全体の処理を行うか、具体的には、リクエスト、データの流れがどうなるか、を整理して、図に書き起こしました。
図示することで、担う役割・機能がはっきりして、これから作るべきものが明確になりました。
スマートコントラクト(ブロックチェーン)の処理、外部インターネット接続(オラクルノード経由でのAPIリクエスト)の処理、フロントエンド(UI)の順番で実装していきました。実装対象のそれぞれの作り方については、入門レベルではありますが、ハッカソンの講義の中でもあったので、最初の入りは講義の情報などを参考にして作り始めました(テンプレートとして利用できるレポジトリーの情報なども含まれます)。
作っていく中でどうしてもハマるポイントが出てきますが、これらは(他の開発でもそうですが)、エラー内容を確認し、原因を考えたり、ウェブの情報を調べたり等で解決をはかりました。
テストはそれぞれのロジックごとと通し(End-to-end)の2種類を実施しました。
Step3では、実装したあとに毎回イーサリアムのテストネット(Goerliネットワーク)にデプロイし、機能の確認を行いました(実際にはフレームワークを使えばローカルでも試験できると思います)。Goerliネットワークでのテストはブロックチェーン開発特有のお作法が色々とありますが、それについては割愛します(別記事を記載しようと思っています)。
なるほど〜。こういう順番で作るんすね〜
うむ。複数の技術要素にまたがる開発を行う必要がある点に注意じゃ。
通常は、チームで分担して作るのが良いじゃろうな。
ハッカソンの成果物
株価などを使ったアイデアがないかを考えているときに、「そういえば良く耳にする米国雇用統計の市場予測ってどのくらい正しいのだろうか」という純粋な疑問が頭に浮かびました。一般的に言って、企業の株価や統計等の事前予測というのはどのくらい正確に専門家が行っているか、以前から疑問に思っていました。専門家は、自分が導きたい方向性の予測値しか出さないのではないか、という疑問です。
もし、正確に予測することにインセンティブが働けば、より正確な事前予測値が得られるかもしれません。
そこで思いついたのが、米国雇用統計の失業率の値を事前に予測し、米国労働統計局(BLS)が発表した際に、自動で当局のデータを引っ張ってきて、当選者を抽出、そして、報酬を配るという仕組みです。実現したい目的は崇高(笑)ですが、ある種、賭け事にも近いことから、”Bet Statistics(統計賭けゲーム)”と命名しました。
- ユーザーはページにアクセスし、デジタルウォレット(Metamask等)を接続する
- ページから自分の予測値をサブミットする(1)
- ブロックチェーンにあるアプリ(スマートコントラクト)はユーザーのアドレスと予測値をリストに追加する(2)
- BLSの報告日時(月次の第1金曜日)になると、自動でアプリの処理が呼び出される(3)
- アプリの処理では、BLSのシステムにAPIリクエストを行い、最新の失業率の値を取得する(4)
- リストの中で失業率を言い当てたグループの人用に報酬を計算し(5)、それぞれのアドレスに報酬を送る(6)
※著者が提出した成果物は、こちらから確認できます。
まとめ
この記事を書いている時点ではまだ結果は発表されておらず、12月2日の結果を待っている状態ですが、DevPostで、実際の提出物の一覧(成果物の一覧)を見ることができます。提出されている数の総数は、384にものぼります。
以上がChainlinkのハッカソンにおける著者の体験記です。短期間でモノを作り上げるという明確な目的意識の中で、期間中、有意義に過ごすことができました。仕事をしながらであるため、時間をどう作るかという点では苦労も有りましたが、新しい学びがあることは純粋にワクワクでき、開始当初からとても楽しく(興奮しながら!)参加することができました。
締切が近くなるにつれて、目の前の課題が解決しないという状況も続き、少し焦りましたが、なんとか動くものを作るまでにすることができました(まだまだ改善の余地はありますが)。
非エンジニアの自分もできっるすかね?
エンジニアだけをターゲットにしたイベントではないから、参加資格は有しておるな!あとはアイデア次第じゃ。
今回のハッカソンは日本国外で主催されていることも有り、英語が必要など若干のハードルはありますが、様々な人におすすめしたいイベントだと感じました。エンジニア向けのイベントと思われがちなハッカソンですが、実際にはエンジニア以外の人にもオープンで寛容です。
日々ルーティンワークをこなすだけになってしまって、退屈している人には、刺激や学びという意味で、ぜひ参加してみてほしいです!
参考)開催スケジュール(講義はリンク付き)
10/14: Opening Ceremony
10/14: Gearing up for the Hackathon
10/15: Introduction to Chainlink Trust Minimized Services
10/15: Intro to Hardhat
10/15: Intro to Remix and Solidity
10/16: Intro to Brownie
10/16: Intro to Foundry
10/16: Team Formation – Zoom Session 1 (N.AMERICA + LATIN AMERICA + EMEA)
10/16: Team Formation – Zoom Session 2 (APAC)
10/17: Running a local Chainlink Node
10/17: Intro to Truffle
10/17: Building and using external adapters: Code along
10/18: Intro to front-end development in Web3
10/18: Building the SmartCon Web3 raffle: Code along
10/20: Intro to Solana & Anchor
10/20: QuickNode: How To Create & Deploy A 100% On-Chain SVG NFT
10/20: UCAN Build Apps with IPFS
10/20: Polygon: Signatures & Sign-In With Ethereum
10/20: Building a DeFi App: Code along
10/21: Bringing Muhammad to the Mountain: Computing Over Data Hosted on IPFS & Filecoin
10/21: Filecoin Foundation: Winning ideas & how to share them
10/25: Build with Truflation
10/25: Using Chainlink Services in your Web2 applications: Code along
11/3: Polygon: Building Better UX in Web3
11/4: IPFS/Filecoin Fall Hackathon AMA (Discord voice)
11/9: Polygon Fall Hackathon AMA (Discord voice)
11/9: Filecoin x Chainlink: Web3 services powering the next generation of dApps
11/11: Chainlink Fall 22 Hack: Midway Chat with Sergey Nazarov
11/18: Project submissions due today
12/2: Closing Ceremony
※ これだけ多くの講義がありますが、例えば、Hardhat、Brownie、Foundryはいづれもフレームワークなので、どれかを選択すればよく、また、local Chainlink Nodeやexternal adaptersなどもChainlinkがテストネットで提供しているノードをそのまま使えば要件を満たすのであれば基本的には必要ありません。Quicknode、IPFS、Filecoinなども同様です。自分が作りたいものに応じて、取捨選択すれば良いということになります(取捨選択するには前提知識ぐらいを知っている必要があるとは言えます)。
コメント