過去のハッカソン受賞プロジェクトがChainlink公式ドキュメントで開発チュートリアルになってて幸せになれる【CFH2021その3】

[前回](https://qiita.com/FWW/items/2ceafbda49b7d451a614)、Chainlinkで実現可能＆これまで実現してきたプロジェクトのユースケースについて見てきました。
ドキュメントを見てみると、過去のハッカソン受賞プロジェクトのソースコードが公開されていたので、
今回は、Chainlink提供のサンプルコードを見ていこうと思います。

2019年からのハッカソンのデータをまとめてあります↓
Chainlinkさん、えらいなぁ〜

https://docs.chain.link/docs/example-projects/

過去のハッカソンの中からChainlinkさんの"推し"プロジェクトを7つチュートリアルにまとめてあったので、
取り急ぎこれらを見てみますー


# 1. Link My Ride - 分散型のテスラレンタルプラットフォーム

## 1-1. プロジェクト概要

__チェーンリンク外部アダプタを介してTesla Vehicle APIをスマートコントラクトに接続する方法__

https://blog.chain.link/create-tesla-smart-contract-rental/

TeslaのAPIを使って、P2Pレンタカーサービスを作ろうというのがプロジェクトの趣旨です。

https://devpost.com/software/link-my-ride

実際にTesla車を使ったデモ動画もあります。
AUDって書いてたので、オーストラリアで作ってるっぽいですねー

<iframe width="100%" height="315" src="https://www.youtube.com/embed/yFnXwSGstus" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

## 1-2. 実装方法

仕組みはこちら↓動画内で解説されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47490/27cfb572-6b3d-98c3-0d87-f6b61ec17d9a.png)

ソースコードはこちら↓

https://github.com/pappas999/Link-My-Ride

チェーンリンク外部アダプタを通じてEthereumチェーンにTeslaのデータを流すところが肝ですね。
GCPにTeslaの使用データを蓄積して、AWSのLambdaを使ってChainlink Nodeを叩きます。

スマートコントラクトのソースコードはこちら↓

https://github.com/pappas999/Tesla-Consumer


## 1-3. 感想

使ってるサービスは多いですが、仕組みはシンプルだなーという印象。
Chainlinkのノードの運用とスマートコントラクトの基本的なつなぎ方が学べそう。

っていうかTeslaのAPIってあるんですねー。全然知らなかったー

https://www.teslaapi.io/vehicles/state-and-settings#vehicle-data

Toyotaでもあるのかなーと思って調べてみたのですが、ちゃんとありました！
使ってる人誰かいるのかなー

https://developer.apic.toyota.com/tmna/prod-internal/ja



# 2. Open Library Project - オンチェーンで本を借りられる図書館プラットフォーム

## 2-1. プロジェクト概要

https://blog.chain.link/rfid-blockchain-integration-with-chainlink-external-adapters/

P2Pの本の貸し出しサービスです。
ブロックチェーンとP2Pはやっぱり相性いいですね♪

プロジェクトサイト。

https://devpost.com/software/the-open-library-project

動画デモはこちら。

<iframe width="100%" height="315" src="https://www.youtube.com/embed/1nnmgthdPqw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

## 2-2. 実装方法

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47490/c5cab867-963b-e9fd-e8fe-5d8ef11d23c9.png)

上記のレンタルTeslaプロジェクトと同様、外部アダプタを通じて本に装着されたRFID情報をスマコンに渡します。

外部アダプターのソースコードはこちら。

https://github.com/amoghaddassi/rfid-external-adapter


## 2-3. 感想

RFIDの実装が大変そうだった。。^^;
ソースコードも最低限だったので、
アイデアだけ参考にさせてもらおう！！

新しいデータを扱うにはChainlinkの外部アダプターを独自に作らないといけないのはわかりましたが、
ノードをたてないといけないのか、他に方法があるのかなど、
まだまだ調べないといけないことはたくさんあるなぁ...！


# 3. Marine Insurance - 海洋産業向けのパラメトリック保険

## 3-1. プロジェクト概要

https://blog.chain.link/build-a-marine-insurance-smart-contract-with-chainlink/

> Chainlink External Adapterを使用して海上輸送の水位APIをChainlinkのオラクルに接続し、
海上輸送用のパラメトリック保険商品を作成しました。
パラメトリック保険のスマートコントラクトは、
開発者がChainlinkを使ってスマートコントラクトとオフチェーンAPIを接続し、
レガシーな保険モデルを自動化するための良い例だと思います。

パラメトリック保険は何度か紹介していますが、
天気とか気温などのしきい値をトリガーにして、
保険をかける金融派生商品。

この機械的に掛け金を分配する挙動はブロックチェーンの得意とするところであり、
透明性も高いので、私的にはとても注目している分野です...！！
分散型パラメトリック保険、流行るかなー

## 3-2. 実装方法

全体図はこちら。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47490/b78ad040-c559-e64e-51b6-ee54adcdfb13.png)

スマートコントラクト, フロントエンドのソースコードはこちら。

https://github.com/chainlink-hackathon2020-insurance/insurance-product

外部アダプターのコードはこちら。

https://github.com/chainlink-hackathon2020-insurance/stormglass-sealevel-adapter

ここからデータをとってきているみたいです。

https://stormglass.io/

保険で扱われているようなデータは大体公開されてるんすねぇ


## 3-3. 感想

実装自体はたどっていけばなんとかなりそうですが
結構ニッチな業界ということもあり、実用に足る調整(保険をトリガーするしきい値など)ができるかと言われると無理だな。。
思いの外、経験（というか過去のデータ）がものを言いそうな業界だなー保険って。

保険業界とブロックチェーンについての詳しくはこちらに書かれているので、
また読む！！

https://blog.chain.link/how-smart-contracts-can-decrease-information-asymmetry-build-trust-and-revolutionize-the-insurance-industry/

あと、直近のハッカソンの受賞プロジェクトのVulcan-Exchangeのソースコードもあわせて見ておきたい！

https://github.com/Vulcan-Exchange/Chainlink-OpenWeatherMap-History



# 4. Fruity Market - 自動販売機での暗号通貨決済

## 4-1. プロジェクト概要

https://blog.chain.link/cryptocurrency-vending-machine/

現実世界の通貨やモノとかをブロックチェーン上の暗号通貨と交換する取引を実現！

## 4-2. 実装方法

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47490/bcda4ec9-99e5-c6fe-e81c-423e0c4703ac.png)

ARUDINOを使って、簡易な自動販売機を作成。
仕組みだけを見ると、なんかちょっとセキュリティ的に甘そうな気がするけど...
（Hostのところで支払い完了したと偽データを送ったらアウトだと思いますが...）
ハッカソンだからいいよね！！

## 4-3. 感想

確かにChainlinkのOracleを使えば、
仮想通貨のトークンの価格をUSDに変換もできるし、
Keeperを使ってcallbackも実装できますね♪



# 5. Whiskey MarketMaker - クラフトウイスキーの暗号化された支払い

## 5-1. プロジェクト概要

https://blog.chain.link/craft-whiskey-crypto-payments-with-chainlink-oracles/

現実世界の希少な価値のあるものを担保に仮想通貨を貸し出すレンディングサービス。
少量生産のウイスキー蒸留所が投資家のために熟成中のボトルを
トークン化してリスト化することを可能にするとともに、
蒸留所がAaveの有利子プールを介して販売から得たETHの利息を得ることができます。

## 5-2. 実装方法

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47490/4748a021-c0d8-b34e-7870-d9dcf167570c.png)

ウィスキー樽を担保にERC1155トークンを発行。
トークン保持者に対して報酬を支払う。

なぜERC1155トークンにしたのかは不明...！
流行りなのか！！？！
預け入れ報酬とトークンが同時に受け取れるから？？


## 5-3. 感想

「熟成中の」というところがミソですね。
直接、現実世界のモノをやりとりするのではないので、
担保トークンを発行することで複数オーナーが可能になります。

あと、購入者がUSDCでなく、
ガス代と同じETHを基準にするというところは
細かいところやけど
ユーザビリティをきちんと考えられてるなーと思いました。


# 6. Digital Bridge - スマートコントラクトの二要素認証

## 6-1. プロジェクト概要

https://blog.chain.link/2fa-authentication-smart-contracts/

<iframe width="560" height="315" src="https://www.youtube.com/embed/DbdtFDvAthA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

Chainlinkを使ってスマートコントラクトに二要素認証（2FA）APIに接続する
2FAアダプタをEthereum dAppに統合し、DeFi資金の確保からKYC検証まで、様々なユースケースでの使用を目指します。

## 6-2. 実装方法

2FAコードをハッシュ化したものを
外部アダプター機能を使い、
オフチェーン上で認証結果を確認する方式。

ソースコードはこちら。

https://github.com/digitalbridgekit/2fa-cl-ea

## 6-3. 感想

2段階認証を通ったよということをブロックチェーン上で証明する。
セキュリティを何層も重ねるのは良いことだと思う一方、
ハッシュ値とはいえ、チェーン上の見えるとこに
データを一生置いて置かれるの
セキュリティ的にやだなー。。

仕組みはおもしろいんやけどなー
Web3.0やのにWeb2.0感があってモヤッとします...^^;ｗ


# 7. Iroiro - スマートコントラクトでIPFSデータを取得

## 7-1. プロジェクト概要

https://blog.chain.link/fetch-ipfs-api-data-token-distribution/

https://app.iroiro.social/#/

最後は日本人の方のプロジェクト。
ChainlinkのオラクルインフラとIPFSを利用して、
Audiusのブロックチェーンベースの音楽ストリーミングプラットフォームに参加しているアーティストが、
何百、何千もの個別取引に伴うコストのかかるガス料金なしに、
ファンにトークンの報酬を配布できるようにしました。

## 7-2. 実装方法

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47490/9373b25d-256d-c121-c60c-6b8923d64301.png)

フォロワーのアドレスなどのデータをすべてオンチェーンでコントラクト内に記録しようとすると、
ガス代として多くのETHが必要となります。
そこで、IPFSを用いてオフチェーンにファイルとして保存することで、
コントラクトと大量のデータを結びつけることができます。

ソースコードはこちら。

https://github.com/iroiro/iroiro

## 7-3. 感想

2段階認証のときもそうだけど、
なんかちょっとIPFSに一生データが残るのがもやっとする...^^;

ハッカソンの部分以外にも、iroiro内に機能が追加されてて、
WebApp上でNFT作れたり、トークン作れたりする方がすごいやん...！！
こっちの解説はよう


# これからの課題と感想まとめ

受賞プロジェクトをいろいろ見てきましたが、
そんなにめちゃくちゃ難しい内容のものはありませんでした。
（実装できるかと言えば、うーんとなりますが...＾＾；）
ハッカソンということもあり、
プログラムの完成度より、工夫やアイデア、発想の方が重視されているみたいでしたね♪

それにしても、ブロックチェーン外のデータとやりとりするには、
Chainlinkノードを介するということはわかったのですが、
や、別にChainlink通さなくても、独自サーバからスマコン直叩きでいいんじゃね？
と思っちゃうんですが、どうなんでしょう？？
DAO的な視点だと、Web2.0な考え方なのかもしれませんが、
ハッカソンでモックを作る分には手早く作れそうだと思うんだけどなー
（まぁ、今回Chainlinkのハッカソンなので、Chainlink使います...！！ｗ）

さて、どうしようかなー。
なんかChainlinkについて調べ始めてから
ずっとパラメトリック保険が気になってるので、
3のチュートリアルでもやってみようかなー

ブロックチェーンと保険についてはこちら。
日本の法律との兼ね合いもどうなっていくのかなー

https://blog.chain.link/how-smart-contracts-can-decrease-information-asymmetry-build-trust-and-revolutionize-the-insurance-industry/


# (おまけ) Build, Deploy, and Sell Your Own Dynamic NFT

ハッカソンではないですが、
Dynamic NFTの発行方法について
公式チュートリアル記事がありましたので貼っておきますー

## 1. プロジェクト概要

https://blog.chain.link/build-deploy-and-sell-your-own-dynamic-nft/

ランダム性を利用してダイナミックに生成されるNFT群の作り方。

## 2. 実装方法

実世界のデータを外部アダプタから読み取り
変化するダイナミックなNFTの作成を実現します。
初期値やレア度はChainlink VRFを使います。
そして、作成したランダム化NFTをOpenSea Marketplaceに追加します。


ソースコードはこちら。

https://github.com/PatrickAlphaC/dungeons-and-dragons-nft


## 3. 感想

今回のサンプルではキャラクター画像のコレクターズアイテムでしたが、
トークンやチケット、ゲームアプリケーションなど、データであればなんでもいいです！
何をトリガーにしてダイナミックにするかは考えどころですね...！
時間帯や天候、残金みたいなのもおもしろそうですね♪