我想使用zkSync时代的测试网对不同的智能契约进行一些测试。我使用带有MetaMask的Remix作为注入提供程序,在testnet上部署合同。契约编译得很好,我已经能够使用这种方法在多边形zkEVM测试网上部署完全相同的合同。然而,当我在zkSync中选择了MetaMask时代的测试网并尝试部署契约时,我会得到以下错误消息(参见图):
气体估计失败了。未能序列化事务: toAddressIsNull","id":4712902792361366

这是我正在尝试部署的智能契约:
pragma solidity ^0.8.7;
// SPDX-License-Identifier: MIT
contract Dummy {
address public owner;
constructor() {
owner = msg.sender;
}
}虽然,最终我会部署不同的智能契约,但即使这个虚拟契约也不会部署。我用这个RPC在zkSync中配置了MetaMask时代的测试网(见图):

这个配置在MetaMask上运行得很好,我在这个网络上有一些ETH。我还尝试将RPC更改为我在网上找到的其他URL,但这并没有改变错误:
https://zksync2-testnet.zksync.dev https://zksync-era-testnet.rpc.thirdweb.com
到目前为止,只有zkSync时代的测试网出现了这些错误,我已经能够在其他测试网上部署智能契约了。任何帮助或建议,我可以尝试/改变,将不胜感激!
发布于 2023-06-01 16:41:44
你试过强迫交易吗?不幸的是,zkSync与EVM兼容,而不是等效的(这里有更多关于这一区别的内容),因此您需要我们的特定编译器来编译您的合同。见这里:
https://era.zksync.io/docs/dev/building-on-zksync/hello-world.html
您需要熟悉“硬帽子”,但本教程将一步一步地指导您。
发布于 2023-06-02 07:25:13
你需要使用硬帽子-zksync-solc。
文档是这样写的:要将一个契约部署在equal上,用户将一个事务发送到零地址(0x000.000),该事务的数据字段等于与构造函数参数连接的契约字节码。
为了在zkSync时代部署契约,用户调用ContractDeployer系统契约的create函数,提供要发布的契约的散列以及构造函数参数。(格式:https://era.zksync.io/docs/dev/building-on-zksync/contracts/contract-deployment.html#format-of-bytecode-hash)
本文档推荐部署安全帽,因为它需要不同的编译器https://era.zksync.io/docs/tools/hardhat/。
在zkSync时代部署合同也是可能的,通过L1-L2通信。https://era.zksync.io/docs/dev/developer-guides/bridging/l1-l2-interop.html
https://ethereum.stackexchange.com/questions/150695
复制相似问题