- Self Calls: This refers to the ability of an app to use the user’s account to call itself.
- CREATE: This refers to the ability of an app to create a new contract using the OPCODE
CREATE
.
Self Calls
For security reasons, we do not allow 3rd party apps to make calls to a user’s own Base Account address. This could allow apps to change owners, upgrade the user’s account, or cause other issues.CREATE
This is a limitation of the ERC-4337 standard and smart accounts. Currently, we do not support theCREATE
opcode for smart contracts deployment.
Future versions of Base Account may support it.
You can use a factory contract or a transaction with the
CREATE2
opcode to deploy a smart contract.Solidity’s Builtin transfer
function
The transfer
function is a built-in member of the address
type in Solidity that can be used to send ETH to an address. Base Account wallets cannot receive ETH using this function.
This function has long been considered deprecated in favor of call
by the Solidity community, but some older contracts still use it.
The reason for this is that transfer
only forwards 2300 gas to the transfer
call, a protective mechanism that was designed to prevent reentrancy attacks by limiting the amount of
gas available to a smart contract that might reenter the caller.
In the modern world of smart contract wallets (including for Base Account), this is often not enough gas for the smart contract’s receive
or fallback
functions to complete their work,
causing the transaction to revert.
Known affected contracts
- The WETH9 contract uses
transfer
to send ETH to the user’s wallet and therefore Base Accounts cannot directly unwrap ETH from it.