本文档介绍了OpenZeppelin Contracts库中用于构建符合ERC-4337标准的账户合约,并详细介绍了ERC4337Utils和ERC7579Utils两个实用工具库。
| 建议在 https://docs.openzeppelin.com/contracts/api/account 查看本文档 |
此目录包含用于构建 ERC-4337 账户的合约。
ERC4337Utilsimport "@openzeppelin/contracts/account/utils/draft-ERC4337Utils.sol";
包含通用 ERC-4337 实用功能的库。
参见 ERC-4337。
函数
内部变量
parseValidationData(uint256 validationData) → address aggregator, uint48 validAfter, uint48 validUntil internal将验证数据解析为其组成部分. 参见 packValidationData.
packValidationData(address aggregator, uint48 validAfter, uint48 validUntil) → uint256 internal将验证数据打包成一个 uint256. 参见 parseValidationData.
packValidationData(bool sigSuccess, uint48 validAfter, uint48 validUntil) → uint256 internal与 packValidationData 相同, 但带有一个布尔签名成功标志.
combineValidationData(uint256 validationData1, uint256 validationData2) → uint256 internal将两个验证数据合并为一个.
如果两者都成功, 则 aggregator 设置为 SIG_VALIDATION_SUCCESS, 而
validAfter 是两者中的最大值, validUntil 是两者中的最小值.
getValidationData(uint256 validationData) → address aggregator, bool outOfTimeRange internal返回 validationData 的 aggregator 以及它是否超出时间范围.
hash(struct PackedUserOperation self, address entrypoint) → bytes32 internal获取给定 entrypoint 的用户操作的哈希值
factory(struct PackedUserOperation self) → address internal从 PackedUserOperation 返回 factory, 如果 initCode 为空或格式不正确, 则返回 address(0).
factoryData(struct PackedUserOperation self) → bytes internal从 PackedUserOperation 返回 factoryData, 如果 initCode 为空或格式不正确, 则返回空字节.
verificationGasLimit(struct PackedUserOperation self) → uint256 internal从 PackedUserOperation 返回 verificationGasLimit.
callGasLimit(struct PackedUserOperation self) → uint256 internal从 PackedUserOperation 返回 callGasLimit.
maxPriorityFeePerGas(struct PackedUserOperation self) → uint256 internal从 PackedUserOperation 返回 gasFees 的第一部分.
maxFeePerGas(struct PackedUserOperation self) → uint256 internal从 PackedUserOperation 返回 gasFees 的第二部分.
gasPrice(struct PackedUserOperation self) → uint256 internal返回 PackedUserOperation 的总 gas 价格 (即 maxFeePerGas 或 maxPriorityFeePerGas + basefee).
paymaster(struct PackedUserOperation self) → address internal从 PackedUserOperation 返回 paymasterAndData 的第一部分.
paymasterVerificationGasLimit(struct PackedUserOperation self) → uint256 internal从 PackedUserOperation 返回 paymasterAndData 的第二部分.
paymasterPostOpGasLimit(struct PackedUserOperation self) → uint256 internal从 PackedUserOperation 返回 paymasterAndData 的第三部分.
paymasterData(struct PackedUserOperation self) → bytes internal从 PackedUserOperation 返回 paymasterAndData 的第四部分.
contract IEntryPoint ENTRYPOINT_V07 internal constantentrypoint v0.7.0 的地址
contract IEntryPoint ENTRYPOINT_V08 internal constantentrypoint v0.8.0 的地址
uint256 SIG_VALIDATION_SUCCESS internal constant出于模拟目的, validateUserOp (和 validatePaymasterUserOp) 成功时返回此值.
uint256 SIG_VALIDATION_FAILED internal constant出于模拟目的, 如果签名失败, validateUserOp (和 validatePaymasterUserOp) 必须返回此值, 而不是 revert.
ERC7579Utilsimport "@openzeppelin/contracts/account/utils/draft-ERC7579Utils.sol";
包含通用 ERC-7579 实用功能的库。
参见 ERC-7579。
函数
事件
错误
内部变量
execSingle(bytes executionCalldata, ExecType execType) → bytes[] returnData internal执行单个调用.
execBatch(bytes executionCalldata, ExecType execType) → bytes[] returnData internal执行一批调用.
execDelegateCall(bytes executionCalldata, ExecType execType) → bytes[] returnData internal执行一个 delegate call.
encodeMode(CallType callType, ExecType execType, ModeSelector selector, ModePayload payload) → Mode mode internal使用提供的参数编码模式。请参阅decodeMode。
decodeMode(Mode mode) → CallType callType, ExecType execType, ModeSelector selector, ModePayload payload internal将模式解码为参数。请参阅encodeMode。
encodeSingle(address target, uint256 value, bytes callData) → bytes executionCalldata internal编码单个调用执行。请参阅decodeSingle。
decodeSingle(bytes executionCalldata) → address target, uint256 value, bytes callData internal解码单个调用执行。请参阅encodeSingle。
encodeDelegate(address target, bytes callData) → bytes executionCalldata internal编码委托调用执行。请参阅decodeDelegate。
decodeDelegate(bytes executionCalldata) → address target, bytes callData internal解码委托调用执行。请参阅encodeDelegate。
encodeBatch(struct Execution[] executionBatch) → bytes executionCalldata internal编码一批执行。请参阅decodeBatch。
decodeBatch(bytes executionCalldata) → struct Execution[] executionBatch internal解码一批执行。请参阅encodeBatch。
此函数运行一些检查,如果输入格式不正确,将抛出ERC7579DecodingError。 |
ERC7579TryExecuteFail(uint256 batchExecutionIndex, bytes returndata) event当 EXECTYPE_TRY 执行失败时发出。
ERC7579UnsupportedCallType(CallType callType) error不支持提供的CallType。
ERC7579UnsupportedExecType(ExecType execType) error不支持提供的ExecType。
ERC7579MismatchedModuleTypeId(uint256 moduleTypeId, address module) error提供的模块与提供的模块类型不匹配。
ERC7579UninstalledModule(uint256 moduleTypeId, address module) error该模块未安装。
ERC7579AlreadyInstalledModule(uint256 moduleTypeId, address module) error该模块已安装。
ERC7579UnsupportedModuleType(uint256 moduleTypeId) error不支持该模块类型。
ERC7579DecodingError() error输入 calldata 格式不正确,可能存在恶意代码。
CallType CALLTYPE_SINGLE internal constant单个 call 执行。
CallType CALLTYPE_BATCH internal constant一批 call 执行。
CallType CALLTYPE_DELEGATECALL internal constantdelegatecall 执行。
ExecType EXECTYPE_DEFAULT internal constant默认执行类型,失败时恢复。
ExecType EXECTYPE_TRY internal constant失败时不恢复的执行类型。
- 原文链接: docs.openzeppelin.com/co...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!