コンテンツへスキップ
0%

OpenZeppelinとは?開発者向けガイド

Alchemy team headshot

執筆者 Alchemy

2022年4月25日 公開読了時間 1 分

OpenZeppelinとは?

OpenZeppelinのロゴ

OpenZeppelinは、暗号資産のサイバーセキュリティ技術・サービスを提供する企業です。安全なスマートコントラクトを構築するためのオープンソースフレームワークを提供するとともに、大手DeFi・NFTプロジェクト向けに包括的なセキュリティ監査を行っています。クライアントにはEthereum Foundation、Coinbase、Braveといった著名なプロジェクトが名を連ねています。

監査業務に加え、OpenZeppelinはスマートコントラクト開発者にセキュリティツールのライブラリを提供することで、DeFiエコシステム全体のセキュリティ向上を目指しています。これらのプロダクトにより、スマートコントラクト開発者はセキュリティよりもデプロイに集中できるようになり、より速いローンチとより高い信頼性が可能になります。

現在、OpenZeppelinのプロダクトは3,000以上の公開プロジェクトを支えています。

スマートコントラクトとは?

スマートコントラクトとは、ブロックチェーン上に保存され実行されるプログラムです。現実世界の契約と同様に、合意事項やルールを記述します。しかし、それらを自動的に実行させることもできます。

このような「スマート」な挙動が可能なのは、合意条件がブロックチェーン上でコードとして記述・実行されるためです。最も普及しているスマートコントラクトプラットフォームであるEthereumでは、スマートコントラクトは他のアカウントと同様に独自の残高を持ち、トランザクションを発生させることができます。

他のユーザーもこれらのスマートコントラクトとの間で資金の送受信が可能です。通常の契約とは異なり、これらのスマートコントラクトは一般的に不可逆であり、一度デプロイされると削除できません。

スマートコントラクトは、開発者が分散型アプリケーションやトークンを作成することを可能にするものです。分散型金融に必要なインフラの多くはスマートコントラクトに基づいており、保険や貸付といった複雑な金融プロセスを実現しています。

なぜOpenZeppelinが必要なのか?

セキュリティがあらゆる分散型アプリケーションにとって重要であることは言うまでもありません。

これまで、プロジェクトチームは自前でセキュリティインフラを書くことが多く、開発者がしばしば「車輪の再発明」をする結果になっていました。

スマートコントラクトをゼロから書くことは良い学習になり得ますが、本番環境では危険な行為になりかねません。スマートコントラクトが安全であるためには堅牢である必要があり、それは真空状態では実現できません。信頼性を確保するには時間と利用実績が必要であり、特に小規模なプロジェクトでは最初から達成できるものではありません。

スマートコントラクトのセキュリティリスクを表すサイバーセキュリティのコンセプトアート

DeFiセキュリティに明確な標準が存在しないため、安全なプロジェクトを見分けることは難しくなります。各プロトコルが独自のコントラクト実装を持つため、あるプロトコルが安全かどうかを検証・判断することも困難になります。

さらに、DeFiプロジェクトがどれほど大きな利益を生み得るかを考えると、開発者が迅速なローンチを優先してセキュリティを後回しにすることも珍しくありません。

典型的な例がYAM Financeです。現在では悪名高いイールドファーム現象となったこのプロジェクトは、高額なセキュリティ監査を見送るという判断をしました。YAM Financeプロトコルはわずか10日間で作成され、ローンチからわずか48時間で6億ドルもの資産が集まりました。

しかし、そのスマートコントラクトプロトコルにセキュリティ上の欠陥が見つかったため、シャットダウンを余儀なくされました。ユーザーの資金がかかっていることを考えると、セキュリティへの配慮の欠如は壊滅的な結果を招きかねません。

セキュリティ監査は潜在的な脆弱性を最小化する上で重要ですが、それだけでは不十分です。特にYAM Financeのようなケースではそうです。YAMのように急いで作られたプロジェクトは、コストの観点からセキュリティ監査を受けることがほとんどなく、開発者が最初から適切なセキュリティツールを持つことが重要になります。

OpenZeppelinはどのような機能を提供しているのか?

OpenZeppelinは、開発者にすぐ使えるセキュリティツールとインフラを提供することで、こうした事態を軽減します。これらのプロダクトにより、スマートコントラクト開発者は自前でセキュリティインフラを再発明するのではなく、引き続きデプロイに集中できます。

OpenZeppelinのチームは、健全なセキュリティ基盤を築くのに「数か月ではなく数分」で済むようになったとよく言います。

OpenZeppelinには、ContractsとDefenderという2つの主要なプロダクトがあります。

OpenZeppelinの_Contracts_は、Ethereumや他のブロックチェーン向けの安全なスマートコントラクトのライブラリであり、開発者は自由に利用できます。

これらのオープンソーステンプレートはコミュニティによるレビューを受けており、最新のセキュリティ手法を採用しています。OpenZeppelinがこれを実現する方法の一つが、コミュニティがOpenZeppelinのコントラクトの脆弱性を発見することで報酬を得られるバグバウンティプログラムです。

監査済みのOpenZeppelinコントラクトを再利用することで、プロジェクトは攻撃対象領域(アタックサーフェス)を大幅に削減できます。攻撃対象領域とは、悪意ある第三者が理論上攻撃し得る箇所の数を指します。さらに、これらのコントラクトはモジュール性と標準化が図られているため、共同開発や監査も格段に容易になります。

スマートコントラクトのコードを生成するOpenZeppelin Contracts Wizardのインターフェース

OpenZeppelinはまた、Contracts Wizardというインタラクティブなコントラクトジェネレーターも提供しています。開発者はWizardを使い、OpenZeppelinのコンポーネントを利用してコントラクトを作成できます。さらに、Wizardではコントラクトの種類(例:ERC20)、パラメーター、機能を指定することができます。

作業が完了すると、Wizardはデプロイ可能な状態の対応コードを生成します。

以下は、OpenZeppelinが提供する数多くの組み込み機能のうちの一部の例です。

  • アクセス制御:OpenZeppelinのアクセス制御機能を使うと、開発者はシステム内で誰が何を行えるかを本質的に簡単に設定できます。このインフラはあらゆるプロジェクトのセキュリティにとって重要であり、失敗すればシステムが事実上乗っ取られる結果にもなりかねません。

OpenZeppelin Contractsは、シンプルな単一管理者による所有権と、柔軟なRole-Based Access Control機能の両方を提供します。これらの機能を使うことで、開発者はトークンの発行、提案への投票、送金の凍結、その他の保護対象機能を誰が実行できるかを安全に割り当てることができます。

  • ガバナンス:OpenZeppelinのGovernorコントラクトは、すぐに使えるガバナンスプロトコルを提供します。オンチェーンガバナンスは真に分散化されたプロトコルにとって必要不可欠であり、多くのプロトコルにとって中心的な構成要素となっています。コミュニティガバナンスは、パラメーター調整、スマートコントラクトのアップグレード、他プロトコルとの統合、トレジャリー管理、助成金など、重要な意思決定を行うことができます。OpenZeppelinのContractsは高度にモジュール化されているため、Solidityの継承を用いた新しいモジュールの作成によって変更を導入できることが多く、ハードフォークの必要性がなくなります。
EthereumにおけるERC-20トークン標準を表すイラスト
  • トークン: OpenZeppelinは、ERC20やERC721など、Ethereumで最も一般的な標準の多くに対応したトークンコントラクトを提供しています。このインフラを利用することで、開発者は独自のトークンをデプロイできるほか、価格モニタリング、指定されたトークン転送方法、購入認証など、その他多くの機能も利用できます。

Defenderは、OpenZeppelinが提供するWebベースのセキュリティオペレーション(SecOps)プラットフォームです。Defenderは、Ethereumの分散型アプリケーション運用に伴う作業の多くを自動化することで、スマートコントラクトのデプロイと管理を簡素化します。

このプラットフォームには、Webベースのバックエンド連携、タスクの自動化、手動でのコントラクト操作など、数多くの機能が備わっています。開発者はDefenderプラットフォーム上で直接構築を行うことができ、最初から健全なセキュリティ基盤を得ることができます。

OpenZeppelin Defenderのセキュリティオペレーションプラットフォームのダッシュボード

「YAM、UniswapdForce、Hegicなど、今年DeFiで見られた複数のエクスプロイトは、慎重なセキュリティプロセスに従っていれば回避または軽減できた可能性があります。しかし、多くのチームには、セキュリティのベストプラクティスやリスク評価の方法について十分な情報を与えてくれる包括的なシステムが欠けています。」―OpenZeppelin最高技術責任者(CTO)Jonathan Alexander氏

OpenZeppelinによると、bZxやOpynのハッキングのような大規模なエクスプロイトによって失われたユーザー資金は、Defenderのような迅速な対応を可能にするツールがあれば軽減できた可能性があるとのことです。

OpenZeppelinはDeFiに何をもたらすのか?

DeFiアプリケーションのサイバーセキュリティ対策を表すイラスト

OpenZeppelinは、開発者が自前でセキュリティを扱う必要をなくすことで、より安全な分散型アプリケーションの基盤を築いています。セキュリティ機能が組み込まれていることで、開発者はセキュリティを犠牲にすることなく引き続き高速に開発を進めることができます。攻撃やDeFiシステムがより複雑になっている中で、これは非常に重要なことです。

OpenZeppelinがスマートコントラクトのセキュリティ標準として台頭するにつれ、DeFi全体で必要とされる信頼を最小化する助けとなります。人々はしばしば「信頼0%」について語りますが、当事者間で一切の信頼が不要な状態は、DeFiプロトコルにおいては現実的ではありません。

チームであれ、DAOであれ、監査人であれ、あなたは常に何らかの相手を信頼していることになります。これは問題があるように聞こえるかもしれませんが、従来の銀行業務と比較すると、DeFiでは常にコードを読むことができるため、はるかに透明性の高いプロセスだと言えます。

OpenZeppelinのCEOであるDamian Bermer氏は、目指すべきは「信頼0%」ではなく「信頼の最小化」であるべきだと主張しています。

信頼の最小化とは、私たちが信頼していて、かつ見ることができない部分を絞り込んでいくことです。オンチェーンで実行されるコードは私たちにも見ることができます。しかし、最も信頼が最小化されたDeFiプラットフォームであっても、まだ信頼しなければならないものは何でしょうか。DeFiをスケールさせる最善の方法は、大規模な信頼最小化を実現することです。―Damian Bermer氏

オープンソースのセキュリティリソースを提供することで、OpenZeppelinは各プロトコルごとに新しいコードが作られる量を減らし、エコシステム全体の信頼を最小化することができます。セキュリティインフラへの信頼が高まるにつれ、DeFiプロジェクトのセキュリティに関する不確実性は大幅に減少し、より広範な普及とスケールが可能になります。

Alchemyで独自のスマートコントラクトをデプロイする

OpenZeppelinのスマートコントラクトは安全で、コミュニティによる検証と実戦での実績があります。Alchemyにサインアップして、今すぐ初めてのスマートコントラクトのデプロイを始めましょう

Background gradient

ブロックチェーンで魔法を生み出す

Alchemyは、最も強力なweb3開発者向けプロダクトとツールを、豊富なリソース、コミュニティ、そして卓越したサポートと組み合わせて提供します。