Wallet-Native Assets

Asset Authorization

Replace persistent allowance and operator state with bounded wallet-level authority.

3 sectionsasset-authorization
01

Transient asset pulls

executeWithTokenPull and executeWithNftPull grant one target temporary authority during one external call. The target is limited to a specific asset and maxAmount or tokenId.

The context is cleared after success, while failures revert the full transaction. No ERC-20 allowance or ERC-721 operator approval remains.

IWalletAssetPullExecutor
interface IWalletAssetPullExecutor {
  function executeWithTokenPull(
    address target, bytes calldata data, address asset, uint256 maxAmount
  ) external;
  function executeWithNftPull(
    address target, bytes calldata data, address asset, uint256 tokenId
  ) external;
  function tokenPullToCaller(address asset, uint256 amount) external;
  function nftPullToCaller(address asset, uint256 tokenId) external;
}
02

Signed transfers

ERC-8112 supports EIP-712 transfers of ERC-20 or native currency with nonce scope by (asset, to). ERC-8114 supports ERC-721 transfers with nonce scope by (asset, tokenId).

The wallet Runtime validates signatures with ERC-1271 semantics, and any relayer may submit them before the deadline.

Wallet-native signed transfers
interface IERC8112 {
  function tokenTransferNonce(address asset, address to) external view returns (uint256);
  function tokenTransferWithSig(
    address asset, address to, uint256 value, uint256 deadline, bytes calldata signature
  ) external returns (bool);
}

interface IERC8114 {
  function nftTransferNonce(address asset, uint256 tokenId) external view returns (uint256);
  function nftTransferWithSig(
    address asset, address to, uint256 tokenId, uint256 deadline, bytes calldata signature
  ) external returns (bool);
}
03

Choosing a path

  • For immediate DEX or market settlement, prefer token/NFT pull execution.
  • For payments, gifts, red packets, or relayed transfers, use ERC-8112 or ERC-8114.
  • For multiple ordinary calls, use wallet-self executeBatch.
  • Neither pull execution nor signed transfer creates persistent spender authority in the asset contract.