did-ethr, erc-725, erc-1271, shamir-bip39 — identity and multisig is tough
Lately being trying to get XDV NFT (or XDV V2) the last piece of code implemented properly, you see, it requires encryption using key exchange between two parties. But it has to be done by a smart contract address. Smart Contract address, which are different from EOA or Externally Owned Account, do not have a key pair. Thus you can’t sign from a smart contract that easily.
Of course there are projects like Argent and Gnosis which implement their own smart account or wallet Solidity implementation which is not for the faint hearted. Quite marvellous code indeed. So if we are not Argent or Gnosis, what options do we have? Let’s see
ERC-725: Smart contract based accounts with attachable key value
The main thing here, you can add key values using a call. You can say you from a client upload signature and address which are then use to ecrecover and validate.
ERC-1271: Dharma uses something where they verify the data with the address and signature set before calling the verifier. Of course only an admin should access to set the signature, but that can be address later.
did-ethr: This seems to be my preference, because it is compatible with XDV Universal Wallet and the delegate feature seems very elegant and straightforward. You could actually do the keyexch, encrypt and decrypt very simpler to implement.
shamir-bip39: Not sure yet, but you could in theory store the first addresss of mnemonic and store that address and path index of the selected array of wallets, with that in place, your EVM compatible keys become multisig without any complex threshold security algorithms know how.
But the fact is, one thing I’ll probably look is a combo of ERC-1271, did-ethr and shamir-bip39. Hope this has explained some of the identity research I’m working on currently as part of XDV platform.