更改日志


更改日志

Hardhat插件更新(2023年2月24日)。

以下是已经发布的Hardhat插件。

  • hardhat-zksync-verify版本0.1.2:现在返回一个验证ID,可用于查询智能合约的验证状态。更多信息这里open in new window
  • hardhat-zksync-deploy版本0.6.2:与最新版本的zksync-web3集成。
  • hardhat-zksync-chai-matchers版本0.1.1:与最新版本的zksync-web3集成。

如何更新你的项目

在你项目的package.json文件中更新以下版本。

  • 更新@matterlabs/hardhat-zksync-verify0.1.2
  • 更新@matterlabs/hardhat-zksync-deploy0.6.2
  • 更新 @matterlabs/hardhat-zksync-chai-matchers0.1.1

编译器和本地设置更新(2023年2月20日)

版本1.3.5zksolc已经发布,本地设置的zksync docker镜像已经更新。详细内容。

  • 编译器:
    • 增加了对Solidity 0.8.18的支持。
    • 修复了一个破损的优化标志,增加了编译合约的字节码大小。
    • 修复了一个将ERC20transfer调用检测为ETHtransfer并产生一个编译错误的错误。
    • 检测智能合约中的transfer'和send'方法现在会返回一个警告信息(类似于v1.3.1)。新的警告信息提醒开发者,使用这些方法转移ETH可能会导致问题,并建议用payable(address).call[value: <X>]("")取代它们。
    • transfer可以用来转移其他代币(如ERC20)而没有任何问题,尽管这可能仍然被编译器强调。
  • 本地设置docker镜像:
    • 改进了估计气体请求时返回的zksync节点错误信息。

如何更新你的项目

  • hardhat.config.ts文件中的编译器版本更新为1.3.5
  • 重新编译合约。
  • docker-compose pull更新本地设置的docker镜像,并通过运行./clear.sh脚本重新启动其状态。

系统更新(2023年2月10日)

小规模更新,简化了收费模式以减少开销,并修复了一些错误。它要求将zksync-web3软件包更新到v0.13.1

如何更新你的项目

  • 更新zksync-web3v0.13.1
  • 合同接口和API没有变化,所以不需要修改代码。
  • 不使用zksync-web3而依靠eth_signTypedData来签署交易的项目,需要在交易覆盖中手动加入固定的gasPerPubdataByteLimit50000

系统更新 v1.3 (Feb 8th 2023)

这次更新对系统进行了一些修改,为 "Fair Onboarding Alpha "里程碑做准备。这些修改包括。

  • 改造收费机制。
    • ergs已被替换为gas,以使其更容易理解(毕竟,我们都是以太坊生态系统的一部分)。
    • 气体退款:交易中未使用的气体会被退还。你可以看到这些退款作为代币转移在探索者open in new window
  • 帐户抽象和Paymaster接口中的更新。
  • L1和L2系统合同接口的变化。
  • 在我们的SDK中,包含 "ergs "的方法和属性被重新命名为 "gas",这是一个突破性的变化。
  • API错误信息现在遵循Geth格式(更多更新即将到来)。

这些更新是在系统再生之后进行的

如何更新你的项目

要更新你的项目,请遵循这些步骤。

  • 更新你所有的项目依赖,同时继续使用ethers v5.7.x(因为ethers v6.x引入了额外的破坏性变化)。
  • 删除 artifacts-zkcache-zk 文件夹。
  • 如果你使用本地设置来运行单元测试,用docker-compose pull更新docker镜像,并通过运行./clear.sh脚本重新启动本地设置状态。
  • 用最新版本的二进制编译器(v1.3.1)重新编译你的项目。
  • 更新zksync-web30.13.x。所有包含 "ergs "的方法都被重新命名为 "gas",一些函数的签名也有变化。
  • 如果你的项目使用zksync系统合约,请确保同时更新@matterlabs/zksync-contracts包。多个合同接口都有变化。
  • 付费者。
    • 交易customData中的ergsPerPubdata: utils.DEFAULT_ERGS_PER_PUBDATA_LIMIT应更新为gasPerPubdata: utils.DEFAULT_GAS_PER_PUBDATA_LIMIT
    • validateAndPayForPaymasterTransaction方法上进行交易验证后,自定义支付系统需要返回一个魔法值。如果验证成功,这个值应该是ACCOUNT_VALIDATION_SUCCESS_MAGIC(可在IAccount.sol接口上获得),如果验证失败,则是空值bytes4(0)
  • 如果你的项目使用账户抽象,请记住,IAccount接口已经改变。
    • Account abstraction multisig 教程已被更新,以反映接口的变化。
    • prePaymaster方法已更名为prepareForPaymaster
    • 智能合约账户现在包括版本号,以便于未来的更新。当从AA工厂合约中调用create2Account时,应将其作为一个参数。
    • 账户需要在validateTransaction方法的交易验证后返回一个魔法值。如果验证成功,这个值应该是ACCOUNT_VALIDATION_SUCCESS_MAGIC(可在IAccount.sol接口上找到),如果验证失败,则是空值bytes4(0)
  • 如果你的智能合约使用SystemContractsCaller库中的任何方法(如systemCall),你需要在zksolc文件中hardhat.config.tssettings部分将isSystem标志设置为true来编译它们。
  • zkSync 系统合约有周期依赖,可能会导致用 hardhat flatten 平整合约的问题。使用hardhat验证插件来代替。
  • 就像其他再生一样,它将删除所有的余额和合约,所以你需要再次存入资金并重新部署你的合约。

如果在做了这些改变之后,你仍然面临问题,请在我们的Discord的 "dev-support-beta "频道中创建一个支持票open in new window

Javascript SDK文档快速入门账户抽象自定义 教程已经更新,但**文档的一些其他部分还没有更新。如果你发现任何问题,请联系我们open in new window