---
# System prepended metadata

title: meta contractとFiller Network

---

# meta contractとFiller Network

## meta contract
https://github.com/metacontract/mc

## Filler Network
https://hackmd.io/6KOJ72F6RkKcX1j01UFlow


## インテントシステムの重要性
　インテントシステムはユーザーが意図した効率的な取引を経路を問わず不正なく確実に実行するものである。これはEthereumのユーザー体験を改善する際にトランザクションではなく署名を中心としたエンドツーエンドまで一貫した体験を提供でき、かつ、パブリックチェーン特有の意図しない挙動を制御できる点で期待できる技術である。

## インテントシステムの開発がどのように簡単になるのか

### meta contractにおける状態とインテントに使用できる変数

#### 意図と知識
　ユーザーがインテントを形成する際、ユーザーの想像力およびユーザーインターフェースの制約によって何を意図できるかが決まってしまう。例えば何％の手数料が妥当なのかとか、どのくらいの交換レートが適切なのかに始まり、コントラクトが持つどの状態が変化することを期待していいのかに関する知識がそのままインテントに反映される。
 　また、プロトコル側もプロトコルが持つ財や状態更新許可について網羅的に把握していなければ安全な状態遷移に関する検査をすり抜けてしまう。

#### Token-stateとSchema-state
　meta contractはユーザーから許可されたallowanceやPCV(Protocol Controlling Value)などの具体的な財の状態と、それら統合された財をどのように利用者で分配すべきかを規定する関数とストレージから構成されていると解釈できる。

### インテント、状態、知識、そして外部インテントと内部インテント
　前述したToken-stateとSchema-stateを元にインテントを形成し、任意のフィラーから状態遷移を受け入れ、Check Effectを行うというインテントシステムのフローを考えるとき、ユーザーがどのような状態遷移をしたいかについてのインテントを「外部インテント」と呼ぶ。一方でプロトコルがどのような状態遷移を守って欲しいかについてのインテントを「内部インテント」と呼ぶ。
　インテントシステムはリエントランシー（Tx発行元コントラクトウォレットへのコールバックTxと、その関数スコープからのプロトコルへの再入）を前提とするシステムであることから、内部インテントのCheck Effectは必ず完全なものでなくてはならない。
　この内部インテントは「任意のフィラーを受け入れるインテントシステム」を構築する際にあらゆる攻撃ベクタに対して網羅的に検討されなければならない。

### meta contract デザインパターンとしてのインテントシステム
　前述の知見を元に整理すると、インテントパターンを構成する要素は
 - インテントSDK
 - フィラーネットワーク
 - コールバックコントラクトインターフェース
 - Permit2 permitWitnessTransferFrom
 - Filler Tx (Composed DeFi Tx from Filler Network)
 - 外部インテント Check Effect
 - 内部インテント Check Effect
 が挙げられる。
 
 どのようなスマートコントラクトもこれらの要素を用意することによってインテント的な体験をユーザーに提供することができる。