Skip to content

Remove local wallet dependency for AA demo using Viem wrapping #699

@theref

Description

@theref

Summary

The TACo AA signing demo currently requires a local wallet as a signatory for the MetaMask Smart Account, even though the actual signing is performed by the TACo network. We can apparently wrap the multisig cohort with Viem to eliminate this unnecessary dependency, which would be particularly useful for AI agents.

Current Implementation

In demos/taco-aa-signing/src/index.ts:

const smartAccount = await toMetaMaskSmartAccount({
  client: publicClient,
  implementation: Implementation.MultiSig,
  deployParams: [signers, BigInt(threshold)], // TACo network signers
  deploySalt: '0x' as `0x${string}`,
  signatory: [{ account: localAccount }], // ← Unnecessary local wallet requirement
});

The local wallet in signatory is just a placeholder - the actual signing happens via:

const signature = await signUserOp(
  provider,
  TACO_DOMAIN,
  COHORT_ID,
  SEPOLIA_CHAIN_ID,
  tacoUserOp,
  AA_VERSION,
  signingContext
);

Problem

  • The local wallet requirement is confusing for demo purposes
  • AI agents shouldn't need to manage private keys when TACo handles signing
  • The current pattern doesn't clearly show that TACo is doing the actual signing

Proposed Investigation

Research and implement Viem's capabilities to wrap the TACo multisig cohort as a custom signer, eliminating the need for the local wallet. This might involve:

  1. Creating a custom Viem account that delegates to TACo's signing
  2. Using Viem's account abstraction primitives to wrap our signing logic
  3. Potentially using session keys or other patterns

Benefits

  • Cleaner demos: Shows TACo as the sole signing authority
  • AI agent ready: No private key management required
  • Better architecture: Accurate representation of the signing flow

Tasks

  • Research Viem's custom account/signer patterns
  • Investigate how to wrap TACo signing as a Viem-compatible signer
  • Update the AA demo to use the wrapped approach
  • Update documentation to explain the pattern

This would make the demo much clearer for adopters and enable new use cases with AI agents.

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions