見出し画像

ユートニックのWeb3開発事情をお話します!

こんにちは!ユートニックの衛藤です!
今回はWeb3開発の話です!もともとはネイティブアプリの開発やバックエンドシステム開発をやっていた自分ですが、ユートニックでもWeb3に参入する機会があったため、勉強しながらブロックチェーンアプリケーションの開発をしています。

本記事では、ユートニックで利用している技術やサービスなど、網羅的にお伝え出来ればと思います。また、今後何回かに分けて細かい技術的な部分にも触れていこうかと思っていますので、興味ありましたら引き続き見に来ていただけると嬉しいです!

ユートニックにおけるWeb3

事例紹介

ユートニックでは、クリエイターのデジタルアイテムをNFTとして販売する機能があり、すでにいくつかのプロジェクトで稼働実績があります。現状はPolygon Chainに対応しています。(今後対応拡大予定)

なお、ユートニックではR&Dや実証実験取り組みに関するサポート・協業等のご相談も承っておりますので、事業に関するお問合せがありましたら本記事最後のセクションのリンクよりお問合せください。

Web3開発の技術について

Web3開発にあたって、現在様々なサービスやツールが出ています。その中で現在ユートニックが使用しているものを紹介します。

Polygonチェーン

ユートニックでは、最初にPolygonチェーンから開発を始めています。
PolygonとはEthereum互換のLayer2ソリューションです。
Layer2 (よくL2と略されます)とは、EthereumやBitcoinのようなベースとなるブロックチェーンをLayer1とし、そのチェーンの互換性を持ちつつパフォーマンスや機能拡張がされたチェーンのことです。
L1が抱える処理速度等の課題を解決し、近年特に利用者を悩ませているEthereumのガス代もPolygonだとかなり安くなり、大企業でも続々と導入されています。

以下は、サンプルで実装したコントラクトでガス代をEthereumとPolygonで比較した結果です。
上がPolygon、下がEthereumです。測定したのが2022年のため少し前の結果ではありますが、最大でEthereumだと$391かかるガス代がPolygonでは$0.09に収まっていることが分かります。

ガス代の比較(上:Polygon 下:Ethereum)

Solidity

Ethereumでブロックチェーンアプリケーションを構築するには、スマートコントラクトを実装する必要があります。そのスマートコントラクトを実行するのに必要なものがEVM(Ethereum Virtual Machine)と呼ばれる仮想マシンです。(Javaのコード実行するのにJVMが必要なのとにています)

このEVMで動かすスマートコントラクトを実装するためにサポートされている言語であるSolidityを使っています。他にもサポートされている言語はあるようですが、開発者のコミュニティやWebでの文献もSolidityは多いため、入門するには比較的容易に開発が進められるSolidityが無難かと思います。

Hardhat

https://hardhat.org/

ローカルでEVMを動かしたり、ブロックチェーンへのデプロイ、その他便利ツールを兼ね備えた開発環境です。
スマートコントラクトの開発時のデバッグや動作確認はもちろん、テストネット・メインネットへのデプロイをスクリプト化することで、DevOpsを進めたりすることも可能です。

Typescript対応や、npmでライブラリが入手できるため、これまでやってきた開発と似たような感覚で使うことができるのも良いかと思います。

同じようなものでTruffleというものがあり、こちらを使っているケースもよく見かけますので、どちらを使っても良いかと思います。初期のドキュメントや記事ではTruffleが多かったですが、最近だとHardhatもよく見かけるようになり、若干のメリットもあるようです。

OpenZeppelin

https://www.openzeppelin.com/contracts

Solidityで利用可能なスマートコントラクトのオープンソースフレームワークで、便利なユーティリティ関数や、ERC20・ERC721を実装したベースクラスや、独自開発では難しい機能なども提供されています。
Upgradeableという機能は、独自実装だとかなり難しいですが、OpenZeppelinのクラスを継承することで簡単にアップグレード可能なスマートコントラクトを実装することができます。

Upgradeableを実装しないスマートコントラクトは一度ブロックチェーンにデプロイしてしまうと更新出来ないので、バグがあると終わります💀
Upgradeableについてはサンプルがたくさんあるので詳細は割愛しますが、Proxy的に実装コントラクトの参照先を変えることで、実質アプリケーションを更新するのと同等な挙動を実現することができます。

導入も簡単で、npmでインストール後、Solidityのコード内でimportするだけで使えるようになります。

OpenZeppelin Defender

上述の、言語フレームワークの他にもDefenderと呼ばれるサービスも使っています。
Defenderは、セキュリティリスクを回避し、ブロックチェーン運用をより便利にするための機能を兼ね備えています。
Autotaskにより処理の自動化を行ったり、Multi-sig対応でセキュリティ事故を防いだする場合に有効です。

他にも、ユートニックではユーザーのガスレストランザクションを実現するため、DefenderのRelayサーバーを利用しています。これにより、利用者はガス代を負担することなく(ユートニックが負担する)NFTアイテムを作成出来たりと、クリエイターのWeb3参入障壁を下げる試みも行っています。
この仕組については少し難しいため、別の記事として改めて公開したいと思っています。

Alchemy

Web3の総合開発用プラットフォームです。機能としては、

  • ブロックチェーンのスーパーノードとして

  • NFTやその他ブロックチェーンのAPI、SDKの提供

  • Notifyによるブロックチェーン監視Webhook通知

  • モニタリング

など、運用や開発に欠かせない機能を提供しているサービスです。特にNotifyは、Web2とWeb3をシームレスに繋げる際に有効です。これにより、NFTのtransferや、指定したスマートコントラクトアドレスの動きをWebhook(RestAPI)やPUSH通知として受信し、それらをトリガーとする機能を開発することが出来ます。

ユートニックでも、もともとはWeb2アプリケーションとしてデータベースに情報を保有していたり、データベースにあるデジタルアイテムをNFTとして販売するケースがあるため、Alchemyを使うことによりブロックチェーンとデータベースを同期することを実現しています。
この仕組みがなければ、自前でブロックチェーン監視用サーバーを立てるなど、かなりの開発コストと運用コストが発生するかと思われます。

ただし、よくあるWeb2界隈のWebhookとは異なり、かなりコードは煩雑になります。もし今後新規にブロックチェーンアプリケーションを作るので貼れば、Web2との連携は可能な限り避けたほうが良いかと思っています。

最後に

以上、ざっくりですが、ユートニックで使っている技術の全体感を紹介しました。まだまだ書きたいことはたくさんありますが、長くなってしまうので今後の記事にしたいと思っています。

  • 初めてWeb3開発した時にハマったこと

  • 既述のガスレストランザクション

  • などなど

それではまた次回をお楽しみに!


Utoniq NextLab(事業に関するお問合せはこちら)

ユートニックでは、Web3領域においてR&D・実証実験の取り組みなど、企画から開発・運用までトータル的なサポート・協業も可能です。

  • 構想・企画案はあるがブロックチェーン開発のノウハウがない

  • 実証実験を行いたいが、リソースが限られているためスタートできない

  • ユートニックのプラットフォームを利用して独自NFT発行システムを素早く立ち上げたい

など、事業に関してのご相談も承っております。以下専用サイトよりお気軽にお問合せください。
https://nextlab.super.site/

いいなと思ったら応援しよう!