I was under the impression that with account abstraction, I would be able to directly initiate smart contract calls without an EOA. However, after reading through zkSync's Account Abstraction example, that's not the case.
// The two owners of the multisig
const owner1 = Wallet.createRandom();
const owner2 = Wallet.createRandom();
You need the signatures of the above two EOAs to send any transaction with the multisig.
const signature = ethers.utils.concat([
// Note, that `signMessage` wouldn't work here, since we don't want
// the signed hash to be prefixed with `\x19Ethereum Signed Message:\n`
ethers.utils.joinSignature(owner1._signingKey().signDigest(signedTxHash)),
ethers.utils.joinSignature(owner2._signingKey().signDigest(signedTxHash)),
]);
aaTx.customData = {
...aaTx.customData,
customSignature: signature,
};
...
const sentTx = await provider.sendTransaction(utils.serialize(aaTx));
How is this meaningfully different from existing multisigs on mainnet, which hasn't implement Account Abstraction yet?