> ## Documentation Index
> Fetch the complete documentation index at: https://developers.circle.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Wallet provider compatibility

CPN allows you to bring your own wallet provider when integrating with the
network. Circle Wallets is an option for your integration, but not a
requirement. When bringing your own wallet provider, you should make sure that
they support the features and signing methods that are required to interact with
CPN.

## Requirements

The following features and signing methods are required for a wallet provider to
be able to integrate with CPN:

* **Custodial wallet support:** The provider must be able to sign transactions
  for wallets without requiring user interaction.
* **EIP-712 signing:** The provider must support EIP-712 typed data. The
  resulting signature can be used in one of the following ways:
  * The signature can be verified by recovering the signer's address with the
    hash of the typed data (on behalf of an EOA).
  * The signature can be validated by the `isValidSignature` method defined in
    EIP-1271 with the hash of the typed data (on behalf of an SCA).

<Note>
  **Note:** USDC implements EIP-3009 with the EIP-7598 extension, enabling both
  EOAs and SCAs to authorize transfers via the EIP-3009 mechanism.
</Note>

* SCA wallet interface: When using an SCA wallet as the sender wallet, the
  wallet contract must implement the following two interfaces:
  * EIP-165 Standard Interface Detection: The SCA wallet must correctly
    implement the EIP-165 interface detection standard. The `supportsInterface`
    function must return `true` for the EIP-1271 interface ID.
  * EIP-1271 Standard Signature Validation for Contracts: The SCA wallet must
    correctly implement the EIP-1271 interface, which defines the
    `isValidSignature` function.

* **Solana signing:** The provider must support signing raw Solana transaction
  using `Ed25519`, without broadcasting them to the blockchain. The provider
  must also support
  [partial signing](https://solana.com/developers/cookbook/transactions/offline-transactions#partial-sign-transaction)
  of the transaction.

* **Solana memo field:** The provider must support a memo field for Solana
  transactions.

| Blockchain | Required signing methods                     |
| ---------- | -------------------------------------------- |
| EVM        | EIP-712 typed data signing                   |
| Solana     | Solana transaction signing (partial signing) |
