コンポーザビリティは、独立して開発された部品が互換性のあるインターフェースを通じて連携できる性質を指します。Web3 ではアプリケーションが既存のスマートコントラクトを呼び出し、そのトークン、流動性、会計機能を利用できます。開発者は基盤となる機能をすべて作り直さず、既存の部品を活用できます。
一つのトランザクションに操作を組み込む
例えば、コントラクトが分散型取引所でトークンを交換し、受け取ったトークンをレンディングプロトコルに預ける処理があります。これらが一つのトランザクション内で実行され、必須の手順が失敗すると、それまでのコントラクトの変更を取り消せます。すべて成功するか、すべて取り消されるこの実行方式をアトミック・コンポーザビリティと呼びます。
ただし互換性は必要です。トークンの動作、アクセス権限、利用可能な流動性、コントラクトのインターフェースが想定する流れに適合しなければなりません。同じブロックチェーン上にあるだけですべてが互換になるわけではなく、別々のトランザクションに同じ原子性は引き継がれません。
再利用は依存関係も生む
組み合わせたアプリケーションは各部品の動作に依存します。オラクルの障害、コントラクトの更新、出金停止、プロトコルへの攻撃は、その上に構築されたアプリケーションに影響します。
安全性の検証では、個々の部品だけでなく組み合わせた相互作用も確認する必要があります。コンポーザビリティは便利なサービスや開発の迅速化を可能にする一方、各プロトコルを単独で見ると別々に見えたリスクを結び付けることもあります。