メインコンテンツへスキップ

トークンを統合する際のチェックリスト

Solidityスマートコントラクトセキュリティトークン
中級
Trailofbits
セキュアなコントラクトの構築(opens in a new tab)
2020年8月13日
10 分の読書 minute read

任意のトークンとやり取りするときは、このチェックリストに従ってください。 各アイテムに関連したリスクを確実に理解し、ルールを遵守しない場合はその根拠を明確にしてください。

幸いなことに、Slitherのすべてのユーティリティ(opens in a new tab)は、トークンアドレス上で直接実行可能です:

Slitherのチュートリアルを利用する

slither-check-erc 0xdac17f958d2ee523a2206206994597c13d831ec7 TetherToken

このチェックリストを利用する際には、Slitherを使って、当該トークンから以下を出力しておくとよいでしょう:

- slither-check-erc [target] [contractName] [optional: --erc ERC_NUMBER]
- slither [target] --print human-summary
- slither [target] --print contract-summary
- slither-prop . --contract ContractName # requires configuration, and use of Echidna and Manticore

全般的な考慮事項

ERC適合性

Slitherに含まれるslither-check-erc(opens in a new tab)ユーティリティで、関連する多くのERC標準に対するトークンの遵守度をレビューできます。 slither-check-ercを次の内容の評価に使用してください。

Slitherにはslither-prop(opens in a new tab)というユーティリティが含まれており、ERCで頻繁に発生する欠陥の多くを発見するための単体テストとセキュリティ関連のプロパティを生成することができます。 slither-propを次の内容の評価に使用してください。

最後に、自動による特定が困難な一部の特徴について検討します。 以下の条件が発生していないか、マニュアルで確認してください:

  • TransferおよびtransferFromがフィーを取らないこと。デフレトークンは、予期せぬ動作を引き起こす可能性があります。
  • トークンから得られる潜在的な利子収入が考慮されていること。一部のトークンは、トークン保有者に利子を分配します。 この点を考慮しない場合、利子がコントラクト内でトラップされる可能性があります。

コントラクトの構成

所有者の特権

トークンの枯渇

トークンの枯渇に関わる問題については、マニュアルでレビューする必要があります。 以下の条件を確認してください:

  • 特定のユーザーが、トークン供給量の大部分を所有していないか。少数のユーザーが大部分のトークンを所有する場合、トークンの再分配に基づき価格操作の可能性が発生します。
  • 総供給量は十分であるか。総供給量が少ないトークンは、価格操作が容易になります。
  • トークンが、複数の取引所に所在しているか。 すべてのトークンが1カ所の取引所のみに存在する場合、この取引所のセキュリティが侵害されると、このトークンに依存するコントラクトが侵害される可能性があります。
  • ユーザーは、多額の資金やフラッシュローンに関するリスクについて理解しているか。トークン残高に依存するコントラクトは、多額の資金を持つ攻撃者やフラッシュローンを通じた攻撃について慎重に考慮する必要があります。
  • トークンは、フラッシュミントが不可能であるか。 フラッシュミンティングは、残高や総供給量を大幅に変更しうるため、トークンの運用において厳格かつ包括的なオーバーフローチェックが必要になります。

最終編集者: @nhsz(opens in a new tab), 2023年8月15日

このチュートリアルは役に立ちましたか?