# イーサリアムPectraアップグレード:EIP-7702がEOAに革命的な変革をもたらす## イントロダクションイーサリアムはPectraアップグレードを迎えようとしており、これは重要な更新であり、いくつかの重要な改善提案が導入されます。その中で、EIP-7702はイーサリアム外部アカウント(EOA)に対して革新的な改造を行いました。この提案はEOAと契約アカウントCAの境界を曖昧にし、EIP-4337に続く原生アカウント抽象化に向けた重要なステップであり、イーサリアムエコシステムに新しいインタラクションモデルをもたらします。Pectraはテストネットでの展開を完了し、近日中にメインネットにローンチされる予定です。本記事ではEIP-7702の実装メカニズムを深く分析し、それがもたらす可能性のある機会と課題について探求し、さまざまな参加者に実用的な操作ガイドを提供します。## プロトコル分析###概要EIP-7702は新しい取引タイプを導入し、EOAがスマートコントラクトのアドレスを指定してコードを設定できるようにします。これにより、EOAはスマートコントラクトのようにコードを実行できる一方で、取引を開始する能力を保持します。この機能はEOAにプログラム可能性とコンポーザビリティを与え、ユーザーはEOA内でソーシャルリカバリー、権限管理、マルチシグ管理、zk検証、サブスクリプション型支払い、取引スポンサーシップ、取引バッチ処理などの機能を実現できます。注目すべきは、EIP-7702がEIP-4337で実現されたスマートコントラクトウォレットと完全に互換性があり、両者のシームレスな統合が新しい機能の開発と適用プロセスを大幅に簡素化することです。EIP-7702は、取引タイプSET_CODE_TX_TYPE (0x04)の取引を導入しました。そのデータ構造の定義は以下の通りです:rlp([chain_id、nonce、max_priority_fee_per_gas、max_fee_per_gas、gas_limit、目的地、値、データ、access_list、authorization_list、signature_y_parity、 signature_r、signature_s])authorization_listフィールドは次のように定義されます:authorization_list = [[chain_id, 住所, nonce, y_parity, r, s], ...]新しい取引構造では、authorization_listフィールドを除いて、残りはEIP-4844と同じ意味を持ちます。このフィールドはリスト型であり、複数の承認エントリを含むことができ、それぞれの承認エントリには:- chain_idはこの委任が有効なチェーンを示します- addressは委託の対象アドレスを示します- nonceは現在の承認されたアカウントのnonceと一致する必要があります- y_parity、r、sは許可されたアカウントが授権に署名した署名データです一つの取引内のauthorization_listフィールドには、複数の異なる承認アカウント(EOA)によって署名された承認項目を含めることができ、つまり取引発起者は承認者と異なることができ、承認者に対する承認操作のガス代の支払いを実現することができます。###実装承認者が承認データに署名する際は、まずchain_id、address、nonceをRLPエンコードする必要があります。その後、エンコードされたデータとMAGIC数を一緒にkeccak256ハッシュ演算を行い、署名待ちのデータを得ます。最後に、承認者の秘密鍵を使用してハッシュされたデータに署名し、y_parity、r、sデータを取得します。MAGIC (0x05)はドメインセパレーターとして使用され、異なるタイプの署名結果が衝突しないようにすることが目的です。注意が必要です。承認者が承認したchain_idが0の場合、承認者はすべてのEIP-7702をサポートするEVM互換チェーン上で(の承認を再生することを許可します。ただし、nonceも)と一致する必要があります。権限者が権限データに署名した後、取引の発起者はそれをauthorization_listフィールドに集約して署名し、RPCを通じて取引をブロードキャストします。取引がブロックに含まれ実行される前に、Proposerは取引を事前チェックします。この中でtoアドレスに対して強制チェックを行い、この取引がコントラクト作成取引でないことを確認します。つまり、EIP-7702タイプの取引を送信する際には、取引のtoアドレスは空であってはなりません。同時に、このような取引は、authorization_listフィールドに少なくとも1つの承認項目が含まれていることを強制し、複数の承認項目が同じ承認者によって署名されている場合、最終的には最後の承認項目のみが有効となります。トランザクション実行プロセス中、ノードは最初にトランザクション・イニシエータのnonce値を増やし、次にauthorization_listの各認証エントリに対してapplyAuthorization操作を実行します。 applyAuthorization 操作では、ノードは最初にオーソライザーの nonce をチェックし、次にオーソライザーの nonce を追加します。 つまり、トランザクションの開始者と承認者が同じユーザーである場合(EOA)承認トランザクションに署名するときに nonce の値を 1 ずつ増やす必要があります。ノードが特定の権限エントリを適用する際、エラーが発生した場合、その権限エントリはスキップされ、取引は失敗せず、他の権限エントリは引き続き適用され、バッチ権限のシーンでDoSリスクが発生しないようにします。アプリケーションの承認が完了すると、承認者のアドレスのcodeフィールドは0xef0100 || addressに設定されます。ここで0xef0100は固定識別子であり、addressは委任先のアドレスです。EIP-3541の制約により、ユーザーは通常の方法で0xefバイトで始まるコントラクトコードを展開することができず、このような識別子はSET_CODE_TX_TYPE (0x04)タイプの取引によってのみ展開されることが保証されています。権限付与が完了した後、権限付与者が権限を解除したい場合は、委託先のアドレスを0アドレスに設定するだけです。EIP-7702によって導入された新しいトランザクションタイプにより、エンティティ(EOA)は、スマートコントラクトのコードを実行できると同時に、トランザクションを開始する能力を保持しています。EIP-4337と比較して、これはユーザーに対してネイティブアカウント抽象(Native AA)により近い体験をもたらし、ユーザーの利用ハードルを大幅に下げました。## ベストプラクティスEIP-7702がイーサリアムエコシステムに新しい活力を注入したにもかかわらず、新しいアプリケーションシナリオは新たなリスクをもたらすことになります。以下は、エコシステムの参加者が実践の過程で警戒すべき点です:### 秘密鍵の保管たとえEOAが委託後にスマートコントラクトに組み込まれたソーシャルリカバリーなどの手段を使って、秘密鍵の喪失による資金損失の問題を解決できるとしても、EOAの秘密鍵が漏洩するリスクを避けることはできません。委託を実行した後も、EOAの秘密鍵はアカウントに対して最高の制御権を持っていることを明確にする必要があります。秘密鍵を持っていることで、アカウント内の資産を自由に処分できます。ユーザーまたはウォレットサービスプロバイダーがEOAの委託を完了した後、ローカルに保存されている秘密鍵を完全に削除しても、秘密鍵の漏洩リスクを完全に排除することはできません。特にサプライチェーン攻撃のリスクが存在するシナリオではなおさらです。ユーザーにとって、委託後のアカウントを使用する際には、プライベートキーの保護を最優先にし、常に注意する必要があります: Not your keys, not your coins。### マルチチェーンリプレイユーザーが委任の権限を署名する際、chainIdを選択して委任が有効となるチェーンを選ぶことができるほか、chainIdを0に設定して委任することも可能で、これにより委任が複数のチェーン上で再生されて有効となり、ユーザーは一度の署名で複数のチェーン上で委任を行うことができます。ただし、複数のチェーン上での同一コントラクトアドレスには異なる実装コードが存在する可能性があることに注意が必要です。ウォレットサービスプロバイダーは、ユーザーが委託を行う際に、委託の有効チェーンが現在接続されているネットワークと一致しているかを確認し、chainIdが0の委託に署名することによるリスクをユーザーに警告する必要があります。ユーザーはまた、異なるチェーン上の同じコントラクトアドレスでは、コントラクトコードが常に同じとは限らないことに注意し、委託の対象を事前に理解しておくべきです。### 初期化できません現在主流のスマートコントラクトウォレットの多くはプロキシモデルを採用しており、ウォレットプロキシはデプロイ時にDELEGateCALLを通じてコントラクトの初期化関数を呼び出し、ウォレットの初期化とプロキシウォレットのデプロイを原子操作として実現し、先に初期化される問題を回避します。しかし、ユーザーがEIP-7702を使用して委任する際には、そのアドレスのcodeフィールドのみが更新され、委任アドレスを呼び出して初期化することはできません。これにより、EIP-7702は一般的なERC-1967プロキシコントラクトのように、コントラクトデプロイのトランザクション内で初期化関数を呼び出してウォレットを初期化することができなくなります。開発者にとって、EIP-7702を既存のEIP-4337ウォレットと組み合わせる際には、ウォレットの初期化操作において権限チェックを行うことに注意する必要があります(。例えば、ecrecoverを通じて署名アドレスを復元し、権限チェックを行うことで)、ウォレットの初期化操作が先に行われるリスクを回避することができます。### ストレージ管理ユーザーがEIP-7702委託機能を使用する際、機能要件の変更やウォレットのアップグレードなどの理由から、異なる契約アドレスに再委託する必要が生じることがあります。しかし、異なる契約のストレージ構造には違いがある可能性があります( 例えば、異なる契約のslot0スロットは異なる種類のデータを表す場合があります) 再委託の状況では、新しい契約が古い契約のデータを意図せず再利用する可能性があり、その結果、アカウントのロックや資金の損失などの悪影響を引き起こす可能性があります。ユーザーにとって、再委託の状況は慎重に扱うべきです。開発者にとって、開発プロセスではERC-7201が提案するNamespace Formulaに従い、変数を指定された独立したストレージ位置に割り当てて、ストレージの競合リスクを軽減する必要があります。さらに、ERC-7779 (draft)はEIP-7702のために再委託の標準プロセスを提供しています:ERC-7201を使用してストレージの競合を防ぎ、再委託の前にストレージの互換性を検証し、古い委託のインターフェースを呼び出してストレージの古いデータをクリーンアップします。### 偽チャージユーザーが委託を行った後、EOAはスマートコントラクトとしても使用できるようになります。したがって、中央集権型取引所(CEX)は、スマートコントラクトによる充填の一般化に直面する可能性があります。CEXはtraceを通じて各入金取引の状態を確認し、スマートコントラクトの偽入金リスクを防ぐ必要があります。### アカウント変換EIP-7702の委託を実施した後、ユーザーのアカウントタイプはEOAとSCの間で自由に変換できるようになります。これにより、アカウントは取引を開始することも、呼び出されることも可能になります。つまり、アカウントが自分自身を呼び出し、外部から呼び出されるとき、そのmsg.senderもtx.originとなります。これにより、EOAのみが参加するプロジェクトに関するいくつかのセキュリティ仮定が破られることになります。コントラクト開発者にとって、tx.originが常にEOAであると仮定することはもはや実行可能ではありません。同様に、msg.sender == tx.originのチェックによって再入攻撃を防ぐことも無効になります。開発者は開発過程で将来の参加者が全てスマートコントラクトであると仮定すべきである。### コントラクトの互換性既存のERC-721、ERC-777トークンは、コントラクトに対して転送を行う際にHook機能を持っており、受信者はトークンを正常に受け取るために対応するコールバック関数を実装する必要があります。開発者にとって、ユーザーが委託したターゲットコントラクトは、主流のトークンと互換性を持つことを確保するために、相応のコールバック関数を実装する必要があります。### フィッシングチェックEIP-7702の委託を実施した後、ユーザーアカウント内の資産はすべてスマートコントラクトによって制御される可能性があり、一旦ユーザーがアカウントを悪意のあるコントラクトに委託すると、攻撃者が資金を盗むことが容易になります。ウォレットサービスプロバイダーにとって、EIP-7702タイプの取引をできるだけ早くサポートすることが特に重要であり、ユーザーが委任署名を行う際には、ユーザーに委任先のコントラクトを強調して表示し、ユーザーがフィッシング攻撃のリスクにさらされる可能性を軽減する必要があります。さらに、アカウント委託の対象契約に対して、より深い自動分析(オープンソースチェック、権限チェックなどを行うことで)、ユーザーがこのようなリスクを回避するのに役立ちます。## まとめこの記事では、イーサリアムの間もなく行われるPectraアップグレードにおけるEIP-7702提案について探討します。EIP-7702は新しいトランザクションタイプを導入することによって、EOAにプログラマビリティとコンポーザビリティを持たせ、EOAとコントラクトアカウントの境界を曖昧にします。現在、実戦で検証されたEIP-7702タイプのスマートコントラクト標準は存在しないため、実際のアプリケーションにおいて、ユーザー、ウォレットサービスプロバイダー、開発者、CEXなど、さまざまなエコシステムの参加者は多くの課題と機会に直面しています。本記事で述べるベストプラクティスの内容はすべての潜在的リスクをカバーするものではありませんが、実際の操作において参考にする価値があります。
イーサリアムPectraアップグレード:EIP-7702がEOAとCAの境界を曖昧にし、ネイティブアカウントの抽象化の新時代を切り開く
イーサリアムPectraアップグレード:EIP-7702がEOAに革命的な変革をもたらす
イントロダクション
イーサリアムはPectraアップグレードを迎えようとしており、これは重要な更新であり、いくつかの重要な改善提案が導入されます。その中で、EIP-7702はイーサリアム外部アカウント(EOA)に対して革新的な改造を行いました。この提案はEOAと契約アカウントCAの境界を曖昧にし、EIP-4337に続く原生アカウント抽象化に向けた重要なステップであり、イーサリアムエコシステムに新しいインタラクションモデルをもたらします。
Pectraはテストネットでの展開を完了し、近日中にメインネットにローンチされる予定です。本記事ではEIP-7702の実装メカニズムを深く分析し、それがもたらす可能性のある機会と課題について探求し、さまざまな参加者に実用的な操作ガイドを提供します。
プロトコル分析
###概要
EIP-7702は新しい取引タイプを導入し、EOAがスマートコントラクトのアドレスを指定してコードを設定できるようにします。これにより、EOAはスマートコントラクトのようにコードを実行できる一方で、取引を開始する能力を保持します。この機能はEOAにプログラム可能性とコンポーザビリティを与え、ユーザーはEOA内でソーシャルリカバリー、権限管理、マルチシグ管理、zk検証、サブスクリプション型支払い、取引スポンサーシップ、取引バッチ処理などの機能を実現できます。注目すべきは、EIP-7702がEIP-4337で実現されたスマートコントラクトウォレットと完全に互換性があり、両者のシームレスな統合が新しい機能の開発と適用プロセスを大幅に簡素化することです。
EIP-7702は、取引タイプSET_CODE_TX_TYPE (0x04)の取引を導入しました。そのデータ構造の定義は以下の通りです:
rlp([chain_id、nonce、max_priority_fee_per_gas、max_fee_per_gas、gas_limit、目的地、値、データ、access_list、authorization_list、signature_y_parity、 signature_r、signature_s])
authorization_listフィールドは次のように定義されます:
authorization_list = [[chain_id, 住所, nonce, y_parity, r, s], ...]
新しい取引構造では、authorization_listフィールドを除いて、残りはEIP-4844と同じ意味を持ちます。このフィールドはリスト型であり、複数の承認エントリを含むことができ、それぞれの承認エントリには:
一つの取引内のauthorization_listフィールドには、複数の異なる承認アカウント(EOA)によって署名された承認項目を含めることができ、つまり取引発起者は承認者と異なることができ、承認者に対する承認操作のガス代の支払いを実現することができます。
###実装
承認者が承認データに署名する際は、まずchain_id、address、nonceをRLPエンコードする必要があります。その後、エンコードされたデータとMAGIC数を一緒にkeccak256ハッシュ演算を行い、署名待ちのデータを得ます。最後に、承認者の秘密鍵を使用してハッシュされたデータに署名し、y_parity、r、sデータを取得します。MAGIC (0x05)はドメインセパレーターとして使用され、異なるタイプの署名結果が衝突しないようにすることが目的です。
注意が必要です。承認者が承認したchain_idが0の場合、承認者はすべてのEIP-7702をサポートするEVM互換チェーン上で(の承認を再生することを許可します。ただし、nonceも)と一致する必要があります。
権限者が権限データに署名した後、取引の発起者はそれをauthorization_listフィールドに集約して署名し、RPCを通じて取引をブロードキャストします。取引がブロックに含まれ実行される前に、Proposerは取引を事前チェックします。この中でtoアドレスに対して強制チェックを行い、この取引がコントラクト作成取引でないことを確認します。つまり、EIP-7702タイプの取引を送信する際には、取引のtoアドレスは空であってはなりません。
同時に、このような取引は、authorization_listフィールドに少なくとも1つの承認項目が含まれていることを強制し、複数の承認項目が同じ承認者によって署名されている場合、最終的には最後の承認項目のみが有効となります。
トランザクション実行プロセス中、ノードは最初にトランザクション・イニシエータのnonce値を増やし、次にauthorization_listの各認証エントリに対してapplyAuthorization操作を実行します。 applyAuthorization 操作では、ノードは最初にオーソライザーの nonce をチェックし、次にオーソライザーの nonce を追加します。 つまり、トランザクションの開始者と承認者が同じユーザーである場合(EOA)承認トランザクションに署名するときに nonce の値を 1 ずつ増やす必要があります。
ノードが特定の権限エントリを適用する際、エラーが発生した場合、その権限エントリはスキップされ、取引は失敗せず、他の権限エントリは引き続き適用され、バッチ権限のシーンでDoSリスクが発生しないようにします。
アプリケーションの承認が完了すると、承認者のアドレスのcodeフィールドは0xef0100 || addressに設定されます。ここで0xef0100は固定識別子であり、addressは委任先のアドレスです。EIP-3541の制約により、ユーザーは通常の方法で0xefバイトで始まるコントラクトコードを展開することができず、このような識別子はSET_CODE_TX_TYPE (0x04)タイプの取引によってのみ展開されることが保証されています。
権限付与が完了した後、権限付与者が権限を解除したい場合は、委託先のアドレスを0アドレスに設定するだけです。
EIP-7702によって導入された新しいトランザクションタイプにより、エンティティ(EOA)は、スマートコントラクトのコードを実行できると同時に、トランザクションを開始する能力を保持しています。EIP-4337と比較して、これはユーザーに対してネイティブアカウント抽象(Native AA)により近い体験をもたらし、ユーザーの利用ハードルを大幅に下げました。
ベストプラクティス
EIP-7702がイーサリアムエコシステムに新しい活力を注入したにもかかわらず、新しいアプリケーションシナリオは新たなリスクをもたらすことになります。以下は、エコシステムの参加者が実践の過程で警戒すべき点です:
秘密鍵の保管
たとえEOAが委託後にスマートコントラクトに組み込まれたソーシャルリカバリーなどの手段を使って、秘密鍵の喪失による資金損失の問題を解決できるとしても、EOAの秘密鍵が漏洩するリスクを避けることはできません。委託を実行した後も、EOAの秘密鍵はアカウントに対して最高の制御権を持っていることを明確にする必要があります。秘密鍵を持っていることで、アカウント内の資産を自由に処分できます。ユーザーまたはウォレットサービスプロバイダーがEOAの委託を完了した後、ローカルに保存されている秘密鍵を完全に削除しても、秘密鍵の漏洩リスクを完全に排除することはできません。特にサプライチェーン攻撃のリスクが存在するシナリオではなおさらです。
ユーザーにとって、委託後のアカウントを使用する際には、プライベートキーの保護を最優先にし、常に注意する必要があります: Not your keys, not your coins。
マルチチェーンリプレイ
ユーザーが委任の権限を署名する際、chainIdを選択して委任が有効となるチェーンを選ぶことができるほか、chainIdを0に設定して委任することも可能で、これにより委任が複数のチェーン上で再生されて有効となり、ユーザーは一度の署名で複数のチェーン上で委任を行うことができます。ただし、複数のチェーン上での同一コントラクトアドレスには異なる実装コードが存在する可能性があることに注意が必要です。
ウォレットサービスプロバイダーは、ユーザーが委託を行う際に、委託の有効チェーンが現在接続されているネットワークと一致しているかを確認し、chainIdが0の委託に署名することによるリスクをユーザーに警告する必要があります。
ユーザーはまた、異なるチェーン上の同じコントラクトアドレスでは、コントラクトコードが常に同じとは限らないことに注意し、委託の対象を事前に理解しておくべきです。
初期化できません
現在主流のスマートコントラクトウォレットの多くはプロキシモデルを採用しており、ウォレットプロキシはデプロイ時にDELEGateCALLを通じてコントラクトの初期化関数を呼び出し、ウォレットの初期化とプロキシウォレットのデプロイを原子操作として実現し、先に初期化される問題を回避します。しかし、ユーザーがEIP-7702を使用して委任する際には、そのアドレスのcodeフィールドのみが更新され、委任アドレスを呼び出して初期化することはできません。これにより、EIP-7702は一般的なERC-1967プロキシコントラクトのように、コントラクトデプロイのトランザクション内で初期化関数を呼び出してウォレットを初期化することができなくなります。
開発者にとって、EIP-7702を既存のEIP-4337ウォレットと組み合わせる際には、ウォレットの初期化操作において権限チェックを行うことに注意する必要があります(。例えば、ecrecoverを通じて署名アドレスを復元し、権限チェックを行うことで)、ウォレットの初期化操作が先に行われるリスクを回避することができます。
ストレージ管理
ユーザーがEIP-7702委託機能を使用する際、機能要件の変更やウォレットのアップグレードなどの理由から、異なる契約アドレスに再委託する必要が生じることがあります。しかし、異なる契約のストレージ構造には違いがある可能性があります( 例えば、異なる契約のslot0スロットは異なる種類のデータを表す場合があります) 再委託の状況では、新しい契約が古い契約のデータを意図せず再利用する可能性があり、その結果、アカウントのロックや資金の損失などの悪影響を引き起こす可能性があります。
ユーザーにとって、再委託の状況は慎重に扱うべきです。
開発者にとって、開発プロセスではERC-7201が提案するNamespace Formulaに従い、変数を指定された独立したストレージ位置に割り当てて、ストレージの競合リスクを軽減する必要があります。さらに、ERC-7779 (draft)はEIP-7702のために再委託の標準プロセスを提供しています:ERC-7201を使用してストレージの競合を防ぎ、再委託の前にストレージの互換性を検証し、古い委託のインターフェースを呼び出してストレージの古いデータをクリーンアップします。
偽チャージ
ユーザーが委託を行った後、EOAはスマートコントラクトとしても使用できるようになります。したがって、中央集権型取引所(CEX)は、スマートコントラクトによる充填の一般化に直面する可能性があります。
CEXはtraceを通じて各入金取引の状態を確認し、スマートコントラクトの偽入金リスクを防ぐ必要があります。
アカウント変換
EIP-7702の委託を実施した後、ユーザーのアカウントタイプはEOAとSCの間で自由に変換できるようになります。これにより、アカウントは取引を開始することも、呼び出されることも可能になります。つまり、アカウントが自分自身を呼び出し、外部から呼び出されるとき、そのmsg.senderもtx.originとなります。これにより、EOAのみが参加するプロジェクトに関するいくつかのセキュリティ仮定が破られることになります。
コントラクト開発者にとって、tx.originが常にEOAであると仮定することはもはや実行可能ではありません。同様に、msg.sender == tx.originのチェックによって再入攻撃を防ぐことも無効になります。
開発者は開発過程で将来の参加者が全てスマートコントラクトであると仮定すべきである。
コントラクトの互換性
既存のERC-721、ERC-777トークンは、コントラクトに対して転送を行う際にHook機能を持っており、受信者はトークンを正常に受け取るために対応するコールバック関数を実装する必要があります。
開発者にとって、ユーザーが委託したターゲットコントラクトは、主流のトークンと互換性を持つことを確保するために、相応のコールバック関数を実装する必要があります。
フィッシングチェック
EIP-7702の委託を実施した後、ユーザーアカウント内の資産はすべてスマートコントラクトによって制御される可能性があり、一旦ユーザーがアカウントを悪意のあるコントラクトに委託すると、攻撃者が資金を盗むことが容易になります。
ウォレットサービスプロバイダーにとって、EIP-7702タイプの取引をできるだけ早くサポートすることが特に重要であり、ユーザーが委任署名を行う際には、ユーザーに委任先のコントラクトを強調して表示し、ユーザーがフィッシング攻撃のリスクにさらされる可能性を軽減する必要があります。
さらに、アカウント委託の対象契約に対して、より深い自動分析(オープンソースチェック、権限チェックなどを行うことで)、ユーザーがこのようなリスクを回避するのに役立ちます。
まとめ
この記事では、イーサリアムの間もなく行われるPectraアップグレードにおけるEIP-7702提案について探討します。EIP-7702は新しいトランザクションタイプを導入することによって、EOAにプログラマビリティとコンポーザビリティを持たせ、EOAとコントラクトアカウントの境界を曖昧にします。現在、実戦で検証されたEIP-7702タイプのスマートコントラクト標準は存在しないため、実際のアプリケーションにおいて、ユーザー、ウォレットサービスプロバイダー、開発者、CEXなど、さまざまなエコシステムの参加者は多くの課題と機会に直面しています。本記事で述べるベストプラクティスの内容はすべての潜在的リスクをカバーするものではありませんが、実際の操作において参考にする価値があります。