Skip to content

Commit

Permalink
docs: 7702 and MAv2 staging release (#1355)
Browse files Browse the repository at this point in the history
* docs: add ma v2 page (#1340)

* docs: add ma v2 page

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* fix: review fixes

* chore: remove comment to standardize

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* fix: imports in example

* fix: lint

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/smart-contracts/modular-account/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* chore: make it consistent

---------

Co-authored-by: avarobinson <[email protected]>

* docs: add various docs (#1345)

* feat: add Choosing a Smart Account page

* chore: lint

* feat: benchmarks

* feat: add mav2 overview

* docs: update table to display diff from MAv2 as a percentage increase

* docs: adding in feature table and other account details

* docs: updating copy

* docs: updating multisig

* chore: cleanup gas benchmarks, remove runtime column

* docs: clarify safe 4337 module

* docs: remove sidebar link

* docs: remove repeated table, add details

* docs: mention ERC-4337

* docs: link audits, clarify legacy contracts

* docs: rename legacy to other

* docs: specify MAv2 breaking the sub-100k gas barrier

* chore: format

---------

Co-authored-by: Ava Robinson <[email protected]>

* docs: restructure smart accounts layout (#1342)

* docs: add ma v2 page

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* fix: review fixes

* chore: remove comment to standardize

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* fix: imports in example

* fix: lint

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/smart-contracts/modular-account/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* chore: make it consistent

* docs: restructure smart accounts layout

* fix: pr review

* Update site/pages/concepts/intro-to-account-kit.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/resources/terms.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/resources/terms.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/resources/terms.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/smart-contracts/choosing-a-smart-account.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/smart-contracts/install-plugins.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/sidebar/smart-contracts.ts

Co-authored-by: avarobinson <[email protected]>

* fix: broken linksg

---------

Co-authored-by: avarobinson <[email protected]>
Co-authored-by: Ava Robinson <[email protected]>

* docs: adds set up useSmartAccountClient page and updates code examples to use mav2 (#1343)

* docs: fixes typo

* docs: updating guide to clean up account types and sidebar;

* docs: cleaning up configs and advanced table

* docs: fixing copy

* docs: updating type param to be optional

* docs: adds missing parameter definitions and fixes typos

* docs: adds wording modifications

* docs: fixing merge conflict

---------

Co-authored-by: Ava Robinson <[email protected]>

* docs: updating sidebar for mav2 (#1348)

* docs: add ma v2 page

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* fix: review fixes

* chore: remove comment to standardize

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* fix: imports in example

* fix: lint

* Update site/pages/smart-contracts/modular-account-v2/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/smart-contracts/modular-account/getting-started.mdx

Co-authored-by: avarobinson <[email protected]>

* chore: make it consistent

* docs: restructure smart accounts layout

* fix: pr review

* Update site/pages/concepts/intro-to-account-kit.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/resources/terms.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/resources/terms.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/resources/terms.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/smart-contracts/choosing-a-smart-account.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/pages/smart-contracts/install-plugins.mdx

Co-authored-by: avarobinson <[email protected]>

* Update site/sidebar/smart-contracts.ts

Co-authored-by: avarobinson <[email protected]>

* fix: broken linksg

* docs: re-arranging sidebar for new account layout and updating references

* chore: readd lost commit from ava

---------

Co-authored-by: howydev <[email protected]>

* docs: adds using 7702 react page (#1350)

* docs: adds 7702 react page

* docs: adds note about gas sponsorship

* docs: add note about getting access to testnet

* docs: adding 7702 details

* docs: modifies copy

* docs: adds ERC-4337 account benefits

* docs: fixing link

---------

Co-authored-by: Ava Robinson <[email protected]>

* docs: adds mode and 7702 info to smart-contracts docs (#1354)

* docs: moving 7702, updating link

* fix: running lint

* fix: broken links

* feat: add 7702 doc in smart-contracts (#1351)

* feat: add 7702 doc in smart-contracts

* fix: typo

* fix: review fixes

* docs: Apply suggestions from code review

* feat: move sc 7702 doc

* docs: changing desc

---------

Co-authored-by: avarobinson <[email protected]>
Co-authored-by: Ava Robinson <[email protected]>

* docs: fix code examples

* docs: temporarily remove accountParams from useSmartAccountClient reference

* docs: adds updated pregenerated docs

* docs: wraps sendUserOperation arguments in uo object

* Update site/pages/react/using-7702.mdx

Co-authored-by: Lisa Ma <[email protected]>

* Update site/pages/react/using-7702.mdx

Co-authored-by: Lisa Ma <[email protected]>

* Update site/pages/react/using-7702.mdx

Co-authored-by: Lisa Ma <[email protected]>

* Update site/pages/react/using-7702.mdx

Co-authored-by: Lisa Ma <[email protected]>

* Update site/pages/react/using-7702.mdx

Co-authored-by: Lisa Ma <[email protected]>

* fix: pr reviews

* Update site/pages/react/send-user-operations.mdx

Co-authored-by: Linna <[email protected]>

---------

Co-authored-by: howy <[email protected]>
Co-authored-by: Zer0dot <[email protected]>
Co-authored-by: Linna <[email protected]>
Co-authored-by: Adam Egyed <[email protected]>
Co-authored-by: linna <[email protected]>
Co-authored-by: Lisa Ma <[email protected]>
  • Loading branch information
7 people authored Feb 14, 2025
1 parent f7c7911 commit b8d8eaf
Show file tree
Hide file tree
Showing 61 changed files with 795 additions and 214 deletions.
5 changes: 2 additions & 3 deletions account-kit/react/src/hooks/useDropAndReplaceUserOperation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,8 @@ export type UseDropAndReplaceUserOperationResult<
* } from "@account-kit/react";
*
* export function ComponentWithDropAndReplaceUO() {
* const { client } = useSmartAccountClient({
* type: "MultiOwnerModularAccount",
* });
* const { client } = useSmartAccountClient({});
*
* const { sendUserOperationAsync, isSendingUserOperation } =
* useSendUserOperation({
* client,
Expand Down
5 changes: 2 additions & 3 deletions account-kit/react/src/hooks/useSendUserOperation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,8 @@ export type UseSendUserOperationResult<
* } from "@account-kit/react";
*
* function ComponentWithSendUserOperation() {
* const { client } = useSmartAccountClient({
* type: "MultiOwnerModularAccount",
* });
* const { client } = useSmartAccountClient({});
*
* const { sendUserOperation, isSendingUserOperation } = useSendUserOperation({
* client,
* // optional parameter that will wait for the transaction to be mined before returning
Expand Down
4 changes: 2 additions & 2 deletions account-kit/react/src/hooks/useSignMessage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,9 @@ export type UseSignMessageResult = {
* @example
* ```ts twoslash
* import { useSignMessage, useSmartAccountClient } from "@account-kit/react";
*
* const data = "messageToSign"
* const { client } = useSmartAccountClient({ type: "LightAccount" });
* const { client } = useSmartAccountClient({});
*
* const { signMessage, signMessageAsync, signedMessage, isSigningMessage, error } = useSignMessage({
* client,
* // these are optional
Expand Down
3 changes: 1 addition & 2 deletions account-kit/react/src/hooks/useSignTypedData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,14 @@ export type UseSignTypedDataResult = {
* @example
* ```ts twoslash
* import { useSignTypedData, useSmartAccountClient } from "@account-kit/react";
*
* const typedData = {
* types: {
* Message: [{ name: "content", type: "string" }],
* },
* primaryType: "Message",
* message: { content: "Hello" },
* }
* const { client } = useSmartAccountClient({ type: "LightAccount" });
* const { client } = useSmartAccountClient({});
* const { signTypedData, signTypedDataAsync, signedTypedData, isSigningTypedData, error } = useSignTypedData({
* client,
* // these are optional
Expand Down
10 changes: 1 addition & 9 deletions account-kit/react/src/hooks/useSmartAccountClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,15 +59,7 @@ export function useSmartAccountClient<
* ```ts twoslash
* import { useSmartAccountClient } from "@account-kit/react";
*
* const { client, address, isLoadingClient } = useSmartAccountClient({
* type: "LightAccount",
* accountParams: {
* salt?: 1n,
* factoryAddress?: '0x0000000000000000000000000000',
* initCode?: "0x0",
* accountAddress?: '0x0000000000000000000000000000'
* }
* });
* const { client, address, isLoadingClient } = useSmartAccountClient({});
* ```
*/
export function useSmartAccountClient({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export type UseWaitForUserOperationTransactionResult = {
* ```ts twoslash
* import { useWaitForUserOperationTransaction, useSmartAccountClient } from "@account-kit/react";
*
* const { client } = useSmartAccountClient({ type: "LightAccount" });
* const { client } = useSmartAccountClient({});
* const {
* waitForUserOperationTransaction,
* waitForUserOperationTransactionResult,
Expand Down
2 changes: 1 addition & 1 deletion site/pages/concepts/intro-to-account-kit.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Unlike other embedded wallet providers that only solve sign-up and key managemen

Unlike EOAs, SCAs are programmable and can include logic. When we refer to SCAs, or smart accounts, we are typically talking about [ERC-4337](https://www.alchemy.com/overviews/what-is-account-abstraction) smart accounts.

Account Kit comes with two enterprise-grade, audited smart account implementations, [Modular Account](/smart-contracts/modular-account) and [Light Account](/smart-contracts/light-account). You can [choose](/smart-contracts/choosing-a-smart-account) the smart account that best fits your needs or bring your own smart account.
Account Kit comes with enterprise-grade, audited smart account implementations. We recommend using [Modular Account v2](/smart-contracts/modular-account-v2/overview). Learn more and [choose](/smart-contracts/choosing-a-smart-account) the smart account that best fits your needs or bring your own smart account.

#### Why smart accounts?

Expand Down
2 changes: 1 addition & 1 deletion site/pages/concepts/middleware.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,6 @@ As mentioned abve, the client can be configured with a series of middleware that
1. `dummyPaymasterAndData` - Generates a dummy paymaster and data for gas estimation if using a paymaster (default: noop)
2. `feeEstimator` - Estimates the fees for a user operation. If you are using our RPCs, it's important to use the [`alchemyFeeEstimator`](/reference/account-kit/infra/functions/alchemyFeeEstimator) middleware.
3. `gasEstimator` - Estimates the gas limits for a user operation. The default middleware calls the underlying bundler RPC to `eth_estimateUserOperationGas`.
4. `customMiddleware` - Allows you define custom middleware to run before requesting sponsorhip if there are any additional steps you need to take before requesting sponsorship. (default: noop)
4. `customMiddleware` - Allows you define custom middleware to run before requesting sponsorship if there are any additional steps you need to take before requesting sponsorship. (default: noop)
5. `paymasterAndData` - Requests a gas sponsorship from a paymaster. (default: noop)
6. `userOperationSimulator` - Simulates a user operation to check if it will be successful. (default: noop)
69 changes: 69 additions & 0 deletions site/pages/react/how-to-set-up-smart-account-client.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
---
title: How to set up a smart account client
description: Learn how to set up your smart account client to enable transactions onchain
---

# How to set up a smart account client

Once users are [authenticated](/react/getting-started), you can start landing transactions onchain using a Smart Account Client. Setting up a new account client is easy using the `useSmartAccountClient` hook!

This extends `viem`'s [Client](https://viem.sh/docs/clients/custom#build-your-own-client), enabling account creation, sending transactions, signing messages, sponsoring gas, and more. It's also EIP-1193 compliant, so you can swap it in for other web3 providers like `window.ethereum`.

## Usage

The following sets up a Smart Account Client that will allow you to create a new smart account and send transactions signed by your **[Alchemy Signer](/react/getting-started)**.

```tsx twoslash
import { useSmartAccountClient } from "@account-kit/react";

const { client, address, isLoadingClient } = useSmartAccountClient({});
```

The default smart account type is Modular Account V2 — the most cost-effective and advanced smart account option. You can specify other [account types](#account-type) with additional configuration.

Note: React hooks only support Alchemy Signer. If you want to use a 3rd party signer, see this [guide](/third-party/signers).

## Configuration Options

You can customize your client by specifying additional parameters to change account type, add gas sponsorship, etc. These parameters are optional.

### Account Type

We recommend using [ModularAccountV2](/smart-contracts/modular-account-v2/overview) as it is the cheapest and most advanced Smart Account, but you can specify other smart contract account types as needed. Learn more about the different smart accounts [here](/smart-contracts/choosing-a-smart-account).

- **`type`** (string) - Defines the smart account type. Options:
- `"ModularAccountV2"` (recommended and default)
- `"LightAccount"`
- `"MultiOwnerLightAccount"`
- `"MultiOwnerModularAccount"`

Looking for 7702 support? Learn how to use advanced `ModularAccountV2` functionality [here](#TODO/702-guide).

:::tip
Note: Changing the account type will deploy a different account. If you've already deployed an account for a user and want to change the underlying account type, you'll need to upgrade it. Learn how to upgrade [here](/smart-contracts/other-accounts/modular-account/upgrading-to-modular-account).
:::

### Gas Sponsorship

To improve transaction UX, we recommend sponsoring gas for users.

- **`policyId`** (string) - [Gas Manager Policy ID](https://dashboard.alchemy.com/gas-manager/policy/create/?a=ak-docs) that enables gas sponsorship within policy limits

See the [full guide](/react/sponsor-gas) for gas sponsorship.

### Advanced options

:::details[Options]

| Usage | Parameter | Type |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Smart contract account implementation | `type` | One of `"ModularAccountV2"`, `"LightAccount"`, `"MultiOwnerLightAccount"`, `"MultiOwnerModularAccount"` |
| Sponsor gas for users. Get your policy ID [here](https://dashboard.alchemy.com/gas-manager) | `policyId` | `string` |
| Simulate user operations before sending (i.e. use [`alchemyUserOperationSimulator`](/reference/account-kit/infra/functions/alchemyUserOperationSimulator)) | `useSimulation` | `boolean` |
| Custom middleware to run before requesting sponsorship | `customMiddleware` | `ClientMiddlewareFn` |
| Override fee estimation middleware (if you are using our RPCs, it's important to use the default [`alchemyFeeEstimator`](/reference/account-kit/infra/functions/alchemyFeeEstimator)) | `feeEstimator` | `ClientMiddlewareFn` |
| Override gas estimation middleware (the default middleware calls the underlying bundler RPC to `eth_estimateUserOperationGas`) | `gasEstimator` | `ClientMiddlewareFn` |
| Override middleware that signs user operation(s) | `signUserOperation` | `ClientMiddlewareFn` |
| Advanced account params | `accountParams` | `AccountConfig` with the following fields: <ul><li>`mode`: `"default"` \| `"7702"`</li><li>`entryPoint`: `EntryPointDef`</li><li>`signerEntity`: `SignerEntity`</li><li>`salt`: `bigint`</li><li>`factoryAddress`: `Address`</li><li>`initCode`: `Hex`</li><li>`accountAddress`: `Address`</li></ul> |

:::
7 changes: 3 additions & 4 deletions site/pages/react/send-user-operations.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@ If you want to sponsor the gas for a user, see our [guide](/react/sponsor-gas).
## Single user operation

:::tip
In the below example, we use `LightAccount` as the underlying Smart Contract type. You can also use `MultiOwnerModularAccount` if you want to provide your users with an ERC-6900 compliant modular account,
or you can use `MultiOwnerLightAccount` if you want to support an account with multiple owners.
In the below example, we use `ModularAccountV2` as the underlying Smart Contract type, which is our default and recommended account. To learn more about all the account options, check out our guide [on choosing a smart account](/smart-contracts/choosing-a-smart-account).
:::

```tsx twoslash
Expand All @@ -26,7 +25,7 @@ import {
} from "@account-kit/react";

export default function MyOpSenderComponent() {
const { client } = useSmartAccountClient({ type: "LightAccount" });
const { client } = useSmartAccountClient({});

const { sendUserOperation, isSendingUserOperation } = useSendUserOperation({
client,
Expand Down Expand Up @@ -74,7 +73,7 @@ import {
} from "@account-kit/react";

export default function MyOpSenderComponent() {
const { client } = useSmartAccountClient({ type: "LightAccount" });
const { client } = useSmartAccountClient({});

const { sendUserOperation, isSendingUserOperation } = useSendUserOperation({
client,
Expand Down
1 change: 0 additions & 1 deletion site/pages/react/sponsor-gas.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ import {

export default function MyComponent() {
const { client } = useSmartAccountClient({
type: "LightAccount",
policyId: "GAS_MANAGER_POLICY_ID",
});
const { sendUserOperation } = useSendUserOperation({ client });
Expand Down
72 changes: 72 additions & 0 deletions site/pages/react/using-7702.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
title: Using EIP-7702
description: Learn how to use EIP-7702 to enable smart account features for EOAs
---

# Using EIP-7702

## What is EIP-7702?

[EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) is an upcoming upgrade set to launch as part of the Ethereum Pectra hardfork. Specifically, EIP-7702 enables Externally Owned Accounts (EOAs) to use smart contract account features.

This upgrade marks a pivotal moment in Ethereum’s journey toward account abstraction, a breakthrough designed to make onchain experiences smoother, smarter, and more accessible. EIP-7702 doesn’t replace Ethereum’s existing AA standard, ERC-4337. EIP-7702 was designed to be complementary to ERC-4337 and make it easier for those account abstraction features to reach users.

- EIP-7702 enables EOAs to delegate control to smart contract accounts that can execute code directly from their addresses
- It is compatible with the prevailing AA standard, ERC-4437, so existing EOAs can enable smart account features without creating a new address and transferring assets
- For users, it will enable web2-like features, including account recovery and passkey sign-in for easier authentication, and web3 benefits like gas-sponsored transaction fees and paying for gas in any token, not just ETH

[Learn more about EIP-7702](https://www.alchemy.com/blog/eip-7702-ethereum-pectra-hardfork).

## When to use EIP-7702?

**For developers with existing users and embedded wallets**

Upgrade your existing embedded EOA users to smart accounts to enable features like batching and gas sponsorship. Account Kit makes this upgrade easy with compatible smart accounts and infrastructure. Follow [this guide](/smart-contracts/modular-account-v2/using-7702).

**For developers who have not deployed their app**

While ERC-4337 and EIP-7702 both enable account abstraction, they serve different needs. You can either:

- **(Recommended)** Use ERC-4337 smart accounts from the start to leverage the fullest of Ethereum AA features such as maximum account programability, extensive transaction customization, and established tooling: get started [here](/react/how-to-set-up-smart-account-client)
- Use EIP-7702 smart EOAs: keep reading this guide

[Explore here](https://www.alchemy.com/blog/eip-7702-ethereum-pectra-hardfork#adoption-and-security-considerations-for-application-developers) to decide what's best for you.

## How to ship smart EOAs

In this example, we will upgrade a **new** embedded EOA to a smart contract account ([Modular Account v2](/smart-contracts/modular-account-v2/overview)) and send a gasless transaction from the account.

:::tip
Note: Sepolia EIP-7702 support is not yet live. For early access to testnet support, please reach out to [email protected]
:::

The following sets up a Smart Account Client using the EIP-7702 supported version of a Modular Account v2. Make sure to first go through the [authentication setup](/react/getting-started) to generate a signer.

```tsx twoslash
import { useSmartAccountClient } from "@account-kit/react";

const { client, address, isLoadingClient } = useSmartAccountClient({
type: "ModularAccountV2",
accountParams: {
mode: "7702",
},
});
```

### 2. Send a sponsored transaction

Now that you have a smart account client with an EIP-7702 supported smart account, you can leverage all of the easy-to-use React hooks to take action on the account. Account Kit will handle all of the complexity of delegating your EOA to the smart account and handling the special signature types.

Continue on to [sending user operations](/react/send-user-operations) (aka smart account transactions) and [sponsoring gas](/react/sponsor-gas).

## When can I use it?

EIP-7702 will be supported on Sepolia starting March 5, and mainnet is expected to follow shortly after. Account Kit will support EIP-7702 integration on Day 1 at both milestones.

Check out the [UI Demo](https://demo.alchemy.com) to see a live preview of these features in action!

Want to experiment on other testnets before March 5? Reach out to us at [email protected] for early access to experimental networks.

## Upgrading an existing EOA

Want to upgrade your EOA to have smart contract functionality? Learn how to [here](/smart-contracts/modular-account-v2/using-7702).

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit b8d8eaf

Please sign in to comment.