common EOA: we use the v4 signature and web3.eth.personal.ecRecover validate signature
when v4 signature fails for any step, we will try personal_sign and web3.eth.personal.ecRecover validate signature
For Dapp
when loopring DEX is inside Dapp Webview & connect by window.ethereum, we remove the web3.eth.personal.ecRecover validate
Loopring smart wallet:
For Loopring smart wallet we send eth_signTypedData by WalletConnect & validate ABI.Contracts.ContractWallet.encodeInputs isValidSignature(bytes32,bytes)
Loopring counterfactual wallet:
signature is same as Loopring smart wallet
But ecRecover is by walletOwner, const {walletOwner} = await LoopringAPI.exchangeAPI.getCounterFactualInfo({ accountId: LOOPRING_EXPORTED_ACCOUNT.accountIdCF, });