Solidity

錯誤:*** 部署失敗 *** – “未定義”的參數數量無效。得到 0 預期 1!

  • August 24, 2021

我正在嘗試部署我的智能合約。部署後,我收到此錯誤消息。 在此處輸入圖像描述

這是我的contractToken.sol

pragma solidity ^0.5.2;

contract BPToken {
   uint256 public totalSupply; 

   mapping(address => uint256) public balanceOf;


   constructor(uint256 _initialSupply) public { //constructor
       totalSupply = _initialSupply;
   }
}

這是我的 Token.js:

const { equal } = require("assert");

var BPToken = artifacts.require("./BPToken.sol")

   contract('BPToken', function(accounts) {
   
       var tokenInstance;

       it('sets the total supply upon deployment', function() {
       return BPToken.deployed().then(function(instance) {
           tokenInstance = instance;
           return tokenInstance.totalSupply();
       }).then(function(totalSupply) {
           assert.strictEqual(totalSupply.toNumber(), 1000000, 'sets the total supply to 1,000,000');
           return tokenInstance.balanceOf(accounts[0]);
       }); then(function(adminBalance) {
           assert.strictEqual(adminBalance, toNumber(), 1000000, "It allocates the initial supply to the admin account.")
       
       }
       
       );
   });

});

這是我的部署:

const BPToken = artifacts.require("./BPToken.sol");

module.exports = function(deployer) {
 deployer.deploy(BPToken);
};

在解決此錯誤發生的含義方面需要一些幫助,我是 Truffle 的新手。

問題出在遷移腳本中,您需要在部署合約時傳遞建構子參數。

在這種情況下,只有一個參數uint256 _initialSupply。因此,通過 initialSupply 應該可以解決問題。例如,將其設置為1000000令牌可以這樣完成(由於 javascript 的數字精度,您應該使用字元串來使其工作)。

module.exports = function(deployer) {
 deployer.deploy(BPToken, "1000000");
};

我也有一個部署錯誤。我通過刪除不必要的智能合約來解決它。你應該試試這個。

引用自:https://ethereum.stackexchange.com/questions/107304