账户 - 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 价格 (即 maxFeePerGasmaxPriorityFeePerGas + 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

失败时不恢复的执行类型。

← Access

Common (Tokens) →

  • 原文链接: docs.openzeppelin.com/co...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
OpenZeppelin
OpenZeppelin
江湖只有他的大名,没有他的介绍。