Auditとは何ですか?
Auditは、ユーザーに害が出る前にコード、設計、運用の弱点を見つけるための、暗号プロジェクトに対する独立したレビューです。専門家がコードを突き、操作し、破る試みを行う、コードの健全性チェックのようなものです。レース前のピットクルーのように、スマートコントラクト向けのものです。
「“An Audit guarantees safety.”(Auditは安全を保証する)」という考えは誤りです。Auditはリスクを下げ、多くの問題を発見しますが、どんなレビューも完璧を約束できません。強力な精査として扱い、魔法の盾だとは考えないでください。
Auditの仕組み
ここでは、キックオフから公開レポートまでの、スマートコントラクトの典型的なセキュリティレビューの概要を示します。
- 範囲: チームと監査人が、どのコード、設定、前提をチェックするかを合意します。
- レビュー: ツールがリポジトリをスキャンした後、人が行単位で確認し、再入攻撃やロジックのミスなどを探します。
- テスト: 監査人はテストを書き、ファジングを実行し、実際のフローをシミュレートしてエッジケースを引き起こします。
- 報告: 発見事項は重大度でランク付けされ、明確な修正方法と例が示されます。チームは修正を行い、繰り返します。
- 検証: 監査人が修正を再確認し、実際に読めるレポートを公開します。
はい、うまく行えばそれほど単純であり、かつ徹底的です。
なぜAuditが重要か
資金はコードの速度で動くため、関心を持つべき項目です。質の高いAuditは、ローンチが成功するか大きな失敗になるかの違いを生むことがあります。
- 利点: バグが減り、予期せぬ事態が減り、ユーザーやパートナーからの信頼が高まります。
- 視点: 攻撃は微妙なロジックの罠からサービス拒否(DoS)まで多様です。別の目を入れるのは賢明です。
- 関連性: トークン公開、DeFiのリリース、ブリッジ、NFTのミント、DAOのアップグレードなどの際にAuditレポートを目にすることが多いです。
Auditレポートを読むときは、まず「未解決」の一覧を確認してください。深刻な項目が残っている場合は、なぜか、いつ修正されるのかを尋ねましょう。
Auditの主な特徴
優れたAuditが際立つ点:
- 独立性: レビュー担当者はチームから独立しており、レポートに対して自らの評判をかけます。
- 透明性: 発見事項は重大度、概念実証、解決方法とともに記録されます。
- タイミング: リリース後にコードが変わることはあり得ますが、多くのコントラクトは不変(immutable)なので、事前レビューにはより高い重みがあります。
- 再現性: 良いプロセスがあれば、類似のプロジェクトに対して一貫したチェックとテストの深さが提供されます。
バリエーション
Auditにはいくつかの種類があります。自分の技術構成とリスクに合わせて選んでください。
- コード: スマートコントラクトとオンチェーンロジックに焦点を当てます。
- セキュリティ: キー、インフラ、デプロイ、脅威モデルなどを広く見ます。
- 経済: トークンのインセンティブ、オラクルの前提、ゲーム理論をレビューします。
- 継続的: アラートや定期的なミニレビューを伴う継続的なチェックです。
- 内部: 外部監査人を入れる前のチーム主導のレビューです。
Auditはある時点でのスナップショットです。新しいコミットが整数オーバーフローなどの古い問題を再導入する可能性があるため、変更後の再レビューは賢明です。
例
あるレンディングプロトコルが、新機能をAuditが危険な清算パスを指摘するまで一時停止し、チームが修正し、監査人がローンチ前に修正を確認する、という例です。
豆知識
「audit」という言葉はラテン語の audire(聞く)に由来します。初期のチェックは役人に声に出して読まれていたためです。今日ではまだ「聞く」行為はありますが、演説よりもテストログやガスレポートに注目することが多いです。
まとめ
要点: Auditは資金を動かすコードの事前点検です。必須のチェックと考え、それを経て自信を持ってリリースしてください。
