# 关于zkSync Era必须要了解的知识(十) **Published by:** [zkSync](https://paragraph.com/@zksync-13/) **Published on:** 2023-05-03 **URL:** https://paragraph.com/@zksync-13/zksync-era-10 ## Content #交易流程 每笔交易都经过以下流程: 验证步骤 在验证步骤中,账户应决定是否接受交易,如果接受,则支付费用。如果任何部分验证失败,则该帐户不收取费用,并且该交易不能包含在区块中。 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 帐户的收费和签名验证。 ## Publication Information - [zkSync](https://paragraph.com/@zksync-13/): Publication homepage - [All Posts](https://paragraph.com/@zksync-13/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@zksync-13): Subscribe to updates