原文
ERC-1833: Bounded Agent Actions - a metering layer for agent authority — blockbird (2026-06-23)
Ethereum Request for Comments (ERC): 制限付きエージェントアクション - エージェント権限のためのメータリング層
現在、多くのエージェント関連のERCが提案されているため、まず、このERCが何でないかを明確にしておきたい。これは何も強制せず、ワークフローを実行せず、決済もしない。その役割は限定的だ。エージェントがそのアクション全体で、制限された委任(mandate)のうちどれだけをすでに消費したかを継続的にカウントし、ダウンストリームのコントラクトが残りの許容量をルックアップできるようにする。 それが全体像だ。1つの小さなオンチェーンオブジェクト、つまりカーソルがあり、それを読み取り、進めるための単一のインターフェースを持つ。 より大きなフレームワークの一部としてではなく、単独で提案している。なぜなら、このカウンティングこそが現在実際に欠けている部分だと考えているからだ。
ERC-8301での制限付き実行に関する議論も、同じギャップを実行側から探っている。私はそこでメータリングの視点を持ち出したが、そのスレッドを乗っ取るよりも、独自の議論に値すると感じたため、ここに投稿する。
注意すべき点が1つある。このインターフェース自体は、プリンシパル自身の鍵がバウンドをバイパスすることを不可能にするものではない。カウンティングと強制は2つの異なる役割だ。 その下にある何かが実際に境界を維持する必要がある。アセットを管理するボールトか、アカウントの唯一の実行パス上にあるモジュールだ。このインターフェースが暗黙的に仮定するものではなく、その層を実装する者に対する明示的な要件として仕様に書き込んだ。この提案が強制標準を侵害しないようにするために、これを最初に述べている。このインターフェースは会計処理を行い、強制は別の場所で行われる。
他のすべてが依存する設計上の決定が1つある。バウンドは2つの方法で表現できる。1) 各アクションでパブリックステートから再計算される述語として、または2) 各アクションが書き込むカウンターとしてだ。 すべてが単一のサーフェスで解決される場合、述語で十分だ。なぜなら、そこでの実行はシリアライズされているため、同じトランザクション内で読み書きするチェックは、それ以前のすべてをすでに認識しているからだ。サーフェスをまたいだ瞬間、それは真実ではなくなる。単一のコントラクトが実行中の合計を保持せず、アクション時にそれを再構築するチェックを実行することはできない。これが、アクションが書き込む常駐オブジェクトである必要がある理由であり、呼び出しごとのフックとして追加するものではない理由だ。
これは既存の標準の上に立つのではなく、その隣に位置するようにしたい。具体的には、ERC-8301では、ステップゲートがgetCursor(id)を読み取り、同じステップでadvanceCursorを呼び出す。8301はタスクがそのステージを順序通りに進むことを保証し、カーソルはそれらのステージがどれだけの権限を消費したかを記録し、サブストレートはその合計をコミットされたバウンド内に保つ。同じ形が他の場所でも機能する。7710のケイブイートエンフォーサー、8001のアグリーメント(アグリーメントは承認された内容を記録し、カーソルは残りを記録する)、そして8274の検証(アドバンスの証人として機能する)と組み合わせることができる。
ベースインターフェースは、その下にある特定の強制メカニズムを意図的に想定していない。しかし、「何も想定しない」は「何も固定しない」に静かに変わりかねないため、実装すべき具体的なプロファイルも1つ書いた。それは、カーソルが何を意味するか(実行中の支出)、コミットメントが何を保持するか(キャップとアセット)、証人が何か、そして重要な不変条件であるspent <= capを固定するバジェットサブストレートだ。型付きのIBudgetSubstrateが付属しているため、コンシューマーはremaining()を呼び出して直接数値を取得できる。最小限のCC0参照レジストリがここにあり、ERC-165のIDは凍結されている。
この分野では、より複雑なプライベートな実装も持っているため、公開されているものは意図的に最小限に抑えている。それはクリーンで、メータリングはするが強制はせず、アセットを保持せず、意図的にバイパス可能だ。このインターフェースが実装可能であり、プロファイルが相互運用することを示すために作成した。
このドラフトを議論の開始として投稿する。特に以下の3点について、皆様からのご意見を心から歓迎する。1) カーソルをプロファイルから分離するのは正しい切り分け方か、それとも間違った場所に線を引いているか? 2) バジェットサブストレートのプロファイルにおける相互運用性の保証は、実際に価値があるほど厳密か? 3) これは8301の制限付き実行ガードレールとどこで重複し、どこでそれらの邪魔にならないようにすべきか?
皆様のご意見をお待ちしている :folded_hands:
14件の投稿 - 6名の参加者