关于zkSync Era必须要了解的知识(十)
May 3rd, 2023

#交易流程

 每笔交易都经过以下流程:

验证步骤

在验证步骤中,账户应决定是否接受交易,如果接受,则支付费用。如果任何部分验证失败,则该帐户不收取费用,并且该交易不能包含在区块中。

 Step 1.系统检查交易的随机数之前没有被使用过。可以在#保持随机数唯一章节中阅读有关保留随机数唯一性的更多信息。

 **Step 2.**系统调用validateTransaction账户的方法。如果它没有恢复,请继续执行下一步。

 **Step 3.**系统检查交易的随机数是否已被标记为已使用。

 Step 4.

1>(no paymaster)。系统调用payForTransaction账户的方法。如果它没有恢复,请继续执行下一步。

2>(paymaster)。系统调用prepareForPaymaster发送方的方法。如果此调用没有恢复,则validateAndPayForPaymasterTransaction调用 paymaster 的方法。如果它也没有还原,继续执行下一步。

 **Step 5.**系统验证引导加载程序至少收到了tx.gasPrice * tx.gasLimitETH 给引导加载程序。如果是这样,则认为验证完成,可以进行下一步。

 #执行步骤

执行步骤被认为负责交易的实际执行,并将任何未使用的gas的退款发送回用户。如果在这一步有任何回滚,交易仍然被认为是有效的,并将被包含在区块中。

 **Step 6.**系统调用executeTransaction账户的方法。

 Step 7.(仅在交易有 paymaster 的情况下)postTransaction调用 paymaster 的方法。此步骤通常用于向发送方退还未使用的 gas,以防 paymaster 被用来以 ERC-20 代币支付费用。

 #费用

在 EIP4337 中,可以看到三种类型的气体限制:verificationGas, executionGas, preVerificationGas,它们描述了区块中交易包含的不同步骤的气体限制。zkSync Era 只有一个字段,gasLimit涵盖了所有三个的费用。提交易时,确保gasLimit足以涵盖验证、支付费用(上面提到的 ERC20 转账)和实际执行本身。

默认情况下,调用estimateGas添加一个常量来覆盖 EOA 帐户的收费和签名验证。

Subscribe to zkSync
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.
More from zkSync

Skeleton

Skeleton

Skeleton