Trustは災害時のリカバリー用コントラクトで、Sequence WaaSアカウントを保護します。このドキュメントでは、Trustコントラクトの役割と災害時のリカバリーフローについて解説します。

Trustコントラクトのアーキテクチャ

Trustはタイムロックコントラクトであり、各WaaSテナントプロジェクトごとに2つのインスタンスがあります。1つはプロジェクトのリカバリーウォレットに、もう1つはSequenceのリカバリーウォレットに紐づきます。Trustコントラクトはロック状態から始まり、テナント構成下のWaaSアカウントへのアクセスを拒否します。

一方の当事者は、相手側のTrustコントラクトインスタンスでsetUnlocksAtメソッドを呼び出すことで、Trustコントラクトをアンロックできます。この操作により、Trustコントラクトインスタンスはカウントダウン状態となり、90日間のカウントダウンが公開されます。

カウントダウン終了後、setUnlocksAtを呼び出した側は相手のTrustインスタンスを制御できます。両方のインスタンスを制御できるようになると、WaaSテナント構成で作成されたすべてのアカウントにアクセス可能となります。

アンロック状態の監視

SequenceはすべてのTrustコントラクトインスタンスのアンロック状態を監視しています。このサービスは、既存のSequence WaaSがAWS Nitro Secure Enclaveインスタンス上で稼働する中で運用されています。監視システムはすべてのTrustコントラクトインスタンスをチェックし、アンロック状態が検出された場合、Sequenceチームとプロジェクトオーナーの両方に通知します。これにより、一方が相手のコントラクトでsetUnlocksAtを知らないうちに呼び出すことを防ぎます。

災害時のリカバリーフロー

Trustコントラクトは、関係者が消失しWaaS構成アカウントへのアクセスが失われた場合にアカウントを復旧します。この場合、相手側のTrustコントラクトインスタンスでsetUnlocksAtメソッドを呼び出すことでリカバリーフローを開始できます。これにより、両者にアンロック通知が送信され、カウントダウン終了後、作成されたアカウントやアカウント内のトークンを復旧できます。