账户 - OpenZeppelin 文档
本文档介绍了OpenZeppelin Contracts库中用于构建符合ERC-4337标准的账户合约,并详细介绍了ERC4337Utils和ERC7579Utils两个实用工具库。
账户
| 建议在 https://docs.openzeppelin.com/contracts/api/account 查看本文档 |
此目录包含用于构建 ERC-4337 账户的合约。
实用工具
ERC4337Utils
import "@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 constant
entrypoint v0.7.0 的地址
contract IEntryPoint ENTRYPOINT_V08 internal constant
entrypoint v0.8.0 的地址
uint256 SIG_VALIDATION_SUCCESS internal constant
出于模拟目的, validateUserOp (和 validatePaymasterUserOp) 成功时返回此值.
uint256 SIG_VALIDATION_FAILED internal constant
出于模拟目的, 如果签名失败, validateUserOp (和 validatePaymasterUserOp) 必须返回此值, 而不是 revert.
ERC7579Utils
import "@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 constant
delegatecall 执行。
ExecType EXECTYPE_DEFAULT internal constant
默认执行类型,失败时恢复。
ExecType EXECTYPE_TRY internal constant
失败时不恢复的执行类型。
- 原文链接: docs.openzeppelin.com/co...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~