Core Protocol

Wallet Runtime

Runtime 把应用执行、签名验证和资产权限收敛到用户地址。

3 个章节runtime
01

应用执行

executeRuntimeApp(app, data) 先检查 app 地址、本地启用状态和 Registry 状态,然后通过 delegatecall 在钱包存储与余额上下文中执行应用逻辑。

任何地址都可以触发 executeRuntimeApp,但这不等于获得钱包 owner 权限。需要 owner 权限的应用操作必须依靠钱包自签名、ERC-1271 校验或 only-self 约束。

IAccountAppRuntime
interface IAccountAppRuntime {
  event AppEnabled(address indexed account, address indexed app);
  event AppDisabled(address indexed account, address indexed app);

  function executeRuntimeApp(address app, bytes calldata data)
    external payable returns (bytes memory result);
  function enableApp(address app) external;
  function disableApp(address app) external;
  function isAppEnabled(address app) external view returns (bool);
}
02

状态与执行锁

  • 账户核心与每个应用使用独立的 ERC-7201 命名空间存储。
  • Runtime 使用 transient storage 执行锁,拒绝重入和嵌套 Runtime 执行。
  • Token/NFT Pull 上下文只存在于当前交易执行窗口。
  • delegatecall 失败会向上传递原始错误;没有错误数据时返回统一执行失败错误。
03

账户级调用

  • executeBatch(calls):由钱包自身发起一组普通调用。
  • executeWithSig(call, deadline, signature):用钱包 EIP-712 签名授权任意人提交一次调用。
  • executeWithSig 使用账户级递增 nonce,并绑定 wallet、target、value、dataHash 和 deadline。