EIP-2612は、ERC-20トークンの機能を強化するために設計された重要なイーサリアム改善提案です。トークンの承認を許可することで
EIP-2612は、消費されるのと同じトランザクション内で発生するため、EIP-20およびEIP-712の既存の標準に基づいて構築されています。この記事では、EIP-2612の複雑さ、そのユースケース、開発者が留意すべきセキュリティ上の考慮事項について詳しく説明します。
Contents
背景
EIP-2612は、「permit()」、「nonces()」、および「DOMAIN_SEPARATOR()」という3つの新しい関数を導入することにより、ERC-20トークン標準を拡張します。これらの追加により承認プロセスが合理化され、ERC-20トークンとのより効率的でユーザーフレンドリーな対話が可能になります。
EIPの概要
EIP-2612は、ERC-20標準に重要な機能を追加します。
– 許可(): 署名によるトークンの承認を許可します。
– nonces():トランザクション数を管理および追跡します。
– DOMAIN_SEPARATOR():署名に一意のドメインを確保し、セキュリティを強化します。
実際の実装
「permit()」がどのように機能するかを理解するために、OpenZeppelinのERC20Permit.solでのその実装を見てみましょう。この関数では、支出を承認するには所有者の署名が必要です。署名には、支出者の住所、承認金額、期限、所有者の現在のノンスが含まれている必要があります。
期限の強制
「permit()」関数には、指定された期限が過ぎていないことを確認するチェックが含まれており、期限切れの承認や悪意のある承認を防止してセキュリティを強化します。
署名ハッシュエンコーディング
この関数は、所有者の住所、支出者の住所、承認額、期限など、関連するすべてのパラメーターのハッシュを構築します。このハッシュは署名者のアドレスを復元するために使用され、署名の有効性が保証されます。
署名の回復
この関数はECDSAライブラリを使用して、署名から署名者のアドレスを復元し、それが所有者のアドレスと一致することを確認して、承認の正当性を確認します。
使用例
EIP-2612は、いくつかの実用的なアプリケーションを提供します。
1. ガスレストランザクション:ユーザーは、ガス料金のためにETHを保持せずにトランザクションを承認できます。
2. 承認フットプリントの削減:承認が取り消されずに資金が失われるリスクを最小限に抑えます。
3. バッチ化されたトランザクション:単一のトランザクションで複数の操作を許可することで、構成可能性と効率性が向上します。
セキュリティに関する考慮事項
EIP-2612の実装には、いくつかのセキュリティ上の課題が伴います。
– リプレイ保護:署名が一意であることを保証し、異なるドメイン間での再利用を防ぎます。
– 署名の展性:同じトランザクションに対する固有でない署名の受け入れを回避します。
– ecrecoverサイレント障害:気付かれない障害を防ぐために、回復されたアドレスがゼロアドレスではないことを確認します。
– プロトコルの複雑さ:増大する複雑さと展開コストを管理します。
最後に
EIP-2612は、ガスレストランザクションを可能にし、承認リスクを軽減し、バッチ操作を可能にすることでERC-20トークンを強化します。ただし、開発者は、関連するセキュリティ上の考慮事項に注意する必要があります。既存のライブラリを活用することで、開発者はこれらのリスクを軽減し、dAppsとのより安全でユーザーフレンドリーな対話を提供できます。
- EIP-2612は、署名による承認を可能にすることでERC-20トークンを改善します。
- 主要な関数には、
permit()
、nonces()
、およびDOMAIN_SEPARATOR()
があります。 - ユースケースには、ガスレストランザクションと承認リスクの軽減が含まれます。
- 安全な実装には、セキュリティに関する考慮事項が非常に重要です。