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。