I was thinking about implementing a MultiSig on top of Libra, something similar to the Gnosis one.
For example, I can imagine building a Move module that anyone can open a MultiSig by calling a function. It will then save a resource in the opener account that will contain the signatories, the required confirmations for a TX, and a counter of TXs.
In addition, it will contain an array of transactions, each will have the TX details (receiver, amount), the number of confirmations and the signatories that confirmed it already.
But the fact that there is no notion of a contract as an entity similar to how EVM works makes things much more difficult. For example, I will have to hardcode each type of asset that the MultiSig is managing up front. In addition, even for supported tokens, one cannot simply deposit them into the MultiSig, as it has no address, rather, the MultiSig will need to have a function for depositing them.
My main questions are:
- Does my design fit the Move spirit? Does it make sense?
- Am I correct regarding the limitations it has?
I can also imagine an option where the module is dedicated for one multi-sig and not many. And thus the initialization can happen only once. And the signatories own a resource that lets them confirm TXs.