Solidity
錯誤:*** 部署失敗 *** – “未定義”的參數數量無效。得到 0 預期 1!
這是我的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"); };
我也有一個部署錯誤。我通過刪除不必要的智能合約來解決它。你應該試試這個。