在 Truffle 中使用构造函数参数进行迁移
Migrate with constructor parameters in Truffle
所以基本上我不太确定如何从我的 solidity 代码中获取我的参数并将它们传递到部署程序的部署函数中,以便我使用 Truffle 进行第二次迁移。
这是我的 Solidity 代码的构造函数:
constructor(
IBEP20 _stakeToken,
IBEP20 _rewardToken,
uint256 _rewardPerSecond,
uint256 _startTimestamp,
uint256 _bonusEndTimestamp
) public {
stakeToken = _stakeToken;
rewardToken = _rewardToken;
rewardPerSecond = _rewardPerSecond;
startTimestamp = _startTimestamp;
bonusEndTimestamp = _bonusEndTimestamp;
// staking pool
poolInfo.push(PoolInfo({
lpToken: _stakeToken,
allocPoint: 1000,
lastRewardTimestamp: startTimestamp,
accRewardTokenPerShare: 0
}));
totalAllocPoint = 1000;
}
那么这是我的 javascript 迁移代码:
const tokenstaking = artifacts.require("TokenStaking");
module.exports = function(deployer) {
deployer.deploy(tokenstaking, stakeToken, rewardToken, rewardPerSecond, startTimestamp,
bonusEndTimestamp);};
每次我收到所有参数的相同错误:
ReferenceError: stakeToken is not defined
如何引用我的参数?帮助
对于参数,您必须传递值。您之前使用参数定义了构造函数。 stakeToken, rewardToken, rewardPerSecond, startTimestamp, bonusEndTimestamp
。现在你正在初始化合约,所以你必须传递表示初始值的参数。
所以你必须获取 stakeToken, rewardToken, rewardPerSecond, startTimestamp, bonusEndTimestamp
的值并传递它
deployer.deploy(tokenstaking,
"getStakeToken", // stakeToken
"getRewardToken", //rewardToken,
"1", // 1 reward per second
"92389424982",//startTimestamp
"99239323232"//bonusEndTimestamp
所以基本上我不太确定如何从我的 solidity 代码中获取我的参数并将它们传递到部署程序的部署函数中,以便我使用 Truffle 进行第二次迁移。
这是我的 Solidity 代码的构造函数:
constructor(
IBEP20 _stakeToken,
IBEP20 _rewardToken,
uint256 _rewardPerSecond,
uint256 _startTimestamp,
uint256 _bonusEndTimestamp
) public {
stakeToken = _stakeToken;
rewardToken = _rewardToken;
rewardPerSecond = _rewardPerSecond;
startTimestamp = _startTimestamp;
bonusEndTimestamp = _bonusEndTimestamp;
// staking pool
poolInfo.push(PoolInfo({
lpToken: _stakeToken,
allocPoint: 1000,
lastRewardTimestamp: startTimestamp,
accRewardTokenPerShare: 0
}));
totalAllocPoint = 1000;
}
那么这是我的 javascript 迁移代码:
const tokenstaking = artifacts.require("TokenStaking");
module.exports = function(deployer) {
deployer.deploy(tokenstaking, stakeToken, rewardToken, rewardPerSecond, startTimestamp,
bonusEndTimestamp);};
每次我收到所有参数的相同错误:
ReferenceError: stakeToken is not defined
如何引用我的参数?帮助
对于参数,您必须传递值。您之前使用参数定义了构造函数。 stakeToken, rewardToken, rewardPerSecond, startTimestamp, bonusEndTimestamp
。现在你正在初始化合约,所以你必须传递表示初始值的参数。
所以你必须获取 stakeToken, rewardToken, rewardPerSecond, startTimestamp, bonusEndTimestamp
的值并传递它
deployer.deploy(tokenstaking,
"getStakeToken", // stakeToken
"getRewardToken", //rewardToken,
"1", // 1 reward per second
"92389424982",//startTimestamp
"99239323232"//bonusEndTimestamp