首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编译器错误:堆栈太深

编译器错误:堆栈太深
EN

Ethereum用户
提问于 2023-02-15 01:43:33
回答 1查看 150关注 0票数 1

当我试图使用zkSync部署我的智能合同时,我遇到了这个错误,但是在另一个链上(孟买多边形):

代码语言:javascript
复制
CompilerError: Stack too deep. Try compiling with `--via-ir` (cli) or the equivalent `viaIR: true` (standard JSON) while enabling the optimizer. Otherwise, try removing local variables.
   --> @matterlabs/zksync-contracts/l2/system-contracts/BootloaderUtilities.sol:103:34:
    |
103 |             uint256 listLength = encodedNonce.length +
    |                                  ^^^^^^^^^^^^

Error HH600: Compilation failed

这些都是我的文件:

hardhat.config.ts

代码语言:javascript
复制
import "@matterlabs/hardhat-zksync-deploy";
import "@matterlabs/hardhat-zksync-solc";
const { pk } = require('./.secrets.json');

module.exports = {
  zksolc: {
    version: "1.3.1",
    compilerSource: "binary",
    settings: {},
  },
  defaultNetwork: "zkSyncTestnet",
  networks: {
    zkSyncTestnet: {
      url: "https://zksync2-testnet.zksync.dev",
      ethNetwork: "goerli", // Can also be the RPC URL of the network (e.g. `https://goerli.infura.io/v3/`)
      zksync: true,
      accounts: [pk]
    },
    mumbai: {
      url: "https://matic-mumbai.chainstacklabs.com/",
      chainId: 80001,
      gasPrice: "auto",
      accounts: [pk],
      zksync: false
    }
  },
  solidity: {
    version: "0.8.17",
    settings: {
      optimizer: {
        enabled: true,
        runs: 200,
      },
    },
  },
};

Greeter.sol

代码语言:javascript
复制
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;

contract Greeter {
    string private greeting;

    constructor(string memory _greeting) {
        greeting = _greeting;
    }

    function greet() public view returns (string memory) {
        return greeting;
    }

    function setGreeting(string memory _greeting) public {
        greeting = _greeting;
    }
}

部署,

代码语言:javascript
复制
import { Wallet } from "zksync-web3";
import { HardhatRuntimeEnvironment } from "hardhat/types";
import { Deployer } from "@matterlabs/hardhat-zksync-deploy";
import { pk } from "../.secrets.json";

// An example of a deploy script that will deploy and call a simple contract.
export default async function (hre: HardhatRuntimeEnvironment) {
  console.log(`Running deploy script for the Greeter contract`);

  // Initialize the wallet.
  const wallet = new Wallet(pk);

  // Create deployer object and load the artifact of the contract you want to deploy.
  const deployer = new Deployer(hre, wallet);
  const artifact = await deployer.loadArtifact("Greeter");

  // Estimate contract deployment fee
  const greeting = "Hi there!";
  //const deploymentFee = await deployer.estimateDeployFee(artifact, [greeting]);

  const greeterContract = await deployer.deploy(artifact, [greeting]);

  //obtain the Constructor Arguments
  console.log("constructor args:" + greeterContract.interface.encodeDeploy([greeting]));

  // Show the contract info.
  const contractAddress = greeterContract.address;
  console.log(`${artifact.contractName} was deployed to ${contractAddress}`);
}
EN

回答 1

Ethereum用户

回答已采纳

发布于 2023-04-19 08:45:24

在某个时候,v1.3.1中有一个错误,所以尝试从/Users//Library/Caches/hardhat-nodejs/compilers-v2/zksolc/中的缓存文件夹中删除所有编译器,然后再试一次。它将自动下载相应的编译器。

此外,确保您使用的是最新版本的硬帽插件(硬帽子-zksync-solc硬帽子-zksync-部署)和编译器

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/144949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档