Introducing Kernel — Minimal & Extensible Smart Contract Account for ERC-4337 Wallets
Announcements
November 28, 2025
Scaling the Future of Account Abstraction: Introducing ZeroDev Credits
Announcements
November 28, 2025
.png)
With the launch of ERC-4337, we are seeing tremendous excitement from Web3 developers to build the next generation of crypto wallets using account abstraction.
Whereas traditional wallets like MetaMask are powered by externally owned accounts (EOA), account abstraction (AA) wallets are powered by smart contract accounts (CA). These wallets will be able to sponsor gas for users, batch transactions, support automatic payments (subscriptions)… overall enabling a Web3 experience hitherto unimaginable.
While some wallet developers want to control the entire tech stack end-to-end, most wallet developers we’ve met would rather focus on the end-user experience, by building product features such as DeFi integrations, cross-chain transfers, etc. Actually coding a smart contract account in Solidity, and making sure it’s compatible with ERC-4337 and supports all the essential functionalities such as validating signatures (ERC-1271) and bundling transactions, is time-consuming and hard to get right for most wallet developers.
Seeing this need, ZeroDev has developed an account abstraction wallet kernel. The term kernel comes from the lingo of operating systems. Just as the Linux kernel provides basic OS functionalities so builders can focus on unique OS features, the goal of the ZeroDev Kernel is so wallet developers do not have to build the basic wallet functionalities from scratch.
Specifically, the kernel includes the following basic features that we consider essential to any AA wallet:
However, we recognize that wallet developers may want to build additional on-chain functionalities later (e.g., support for session keys). It would be painful to ask users to upgrade their on-chain smart contract accounts to support a new use case.
Therefore, we have built a plugin framework for developers to add functionalities on top of the kernel, without needing to upgrade the account itself.
A plugin is a Solidity contract that the kernel can delegate to to modify the account's validation logic.
Let’s look at an example. If you want to allow someone to manage your USDC and DAI balances, you can create a contract like this (in pseudo-solidity):
Solidity
contract StableCoinPlugin {
function validateUserOp(UserOp op) returns bool {
return op.to == USDC_CONTRACT || op.to == DAI_CONTRACT;
}
}
This plugin authorizes transactions that interact only with the USDC and DAI contracts. Once deployed and authorized by the user, someone else can send transactions on your behalf, but only for those specific token contracts. We will be diving deep into the plugin framework in a future blog post.
Most smart contract wallets are deployed as proxies, allowing them to be upgraded. This means users are free to switch between account implementations (e.g., migrating from a simple in-game wallet to a full-featured wallet while keeping the same address).
In practice, migrating between wallets can be hard and unsafe due to storage layout issues. If two different wallet implementations store data in different slots (e.g., owner and nonce are swapped), migrating can corrupt the account's storage.
ZeroDev Kernel is designed with migration in mind. To that end, Kernel uses diamond storage—a technique that ensures that one wallet’s data storage won’t collide with another wallet’s. Therefore, it’s perfectly safe to migrate either from or to a wallet built on the kernel.
Note: Diamond storage is different than Diamond proxies (ERC-2535), which is a much more ambitious and complex design. Here, we simply ensure that storage layouts between different wallets don’t collide.
The fact that ZeroDev is perfectly migrate-able makes it perfect for building onboarding wallets. Users can onboard with ZeroDev and seamlessly migrate to another AA wallet they prefer without changing their address, a vast improvement over the old "exporting seed phrases" status quo.
During beta testing, a common question was: why build a new smart contract account when Gnosis Safe exists?
ZeroDev started with Safe and contributed to the reference Safe 4337 implementation. However, we encountered major issues:
Ultimately, Safe was designed for organizational multisig, which is far from the single-user, single-sig use case ZeroDev is designed for. Kernel offers a much simpler, more efficient, and highly extensible smart contract account optimized for retail AA users.
Some may be concerned that a plugin developed for Kernel will only work with Kernel.
To address this, our friends at Alchemy recently drafted ERC-6900, titled “Modular Smart Contract Accounts and Plugins.” The goal of the EIP is to define a common interface between smart contract accounts (like Kernel) and plugins.
We will be contributing to the ERC. As of today, Kernel is the closest thing to an implementation of ERC-6900, and we will be making Kernel fully compatible once ERC-6900 is finalized. This ensures that developers building on ZeroDev are using an open standard and will enjoy great interoperability.
Today, we are excited to announce that Kernel has been open-sourced and audited, and is available for anyone to use. Being an open-source project, Kernel is free for anyone to fork and extend.
You can use ZeroDev to quickly spin up Kernel-based AA wallets, and then extend the wallet’s functionalities using our plugin framework. We are already building some of the most commonly asked-for plugins including session keys, which we will dive into in a future blog post.
We are confident that Kernel will dramatically lower the barrier for building wallets powered by account abstraction. We can’t wait to see what you build with Kernel!