Snapshot+Realityモジュール

トレジャリー管理をもう一歩進めるのに、Zodiac Realityモジュールを用いてSnapshotの投票をトリガーにしたSafeウォレットからの送金を試してみる。

事前準備

  • Gnosis SafeのZodiacアプリでOracleを設定

  • SnapshotでSafeSnapプラグインを追加

各種テスト

テスト1

Batch Transactionを手入力してETHを送金。普通にできる。けど、簡単すぎる。

✖️ Quorum関係なく実行をリクエストできてしまう。

✖️ TX実行の条件はマルチシグではなく投票。投票だけを信頼することになる。

テスト2

Batch Transactionを手入力して、複数の宛先にETHとERC20を送金。普通にできる。

✖️ これを定期的に手入力するとなるとめんどい。

テスト3

Batch TransactionをJSONで入力してパース。

○ 一括入力で1 Batchに入るのは楽。CSV→JSON変換して貼り付けで運用できそう。

✖️ だけどERC20の表示が関数名のみで、中身がぱっと見でわからない。全TXを展開するかJSONを見ないと正しいのかわからない。これ投票する人がみんなやるの? 見にくいからCSVの方を見てくださいと言ってもトラストすぎない?

テスト4

マルチシグ署名者ではない最小閾値の1トークンだけを持ったEOAがプロポーザル。

✖️ 24hの待機時間をしのげばトレジャリーから盗めそう。

これはQuorum未達でも、投票結果がどうでも、TX実行をリクエストできるから、頑張ってコミュニティを騙せば盗める。

まとめ

当分の間はSnapshotとマルチシグは別々で運用した方が安全なのでは。使いやすさではParcelとかCoinShiftの方が直感的で目に優しいし。Snapshot = トラストレスではなく、トラストレスな環境が揃ってからでもいいかな。

もしSnapshotでRealityモジュールを使うなら、下記を組み合わせることが条件になりそう。いくらか使いづらくなっちゃうけど。

  • トレジャリーハックする提案をコミュニティが検知できるよう監視の仕組みを持つ

  • Voting delay, Voting periodを長めに設定する、OracleのSet Outcome待機時間を長めに設定する、Bond金額を高くする

  • プロポーザル提出の閾値を可能な限り高くする