#ethereum #solidity #truffle
#ethereum #солидность #truffle
Вопрос:
Здесь я получил довольно простой контракт ERC-20:
pragma solidity 0.8.1;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract SonnyCoin is ERC20 {
constructor(uint256 initialValue) public ERC20("SonnyCoin", "SCN") {
_mint(msg.sender, initialValue);
}
}
И затем мой код миграции для контракта выглядит следующим образом:
const SonnyCoin = artifacts.require("SonnyCoin");
const web3 = require("web3");
const initialValue = web3.utils.toWei("1", "ether");
module.exports = function(deployer) {
deployer.deploy(SonnyCoin(initialValue))
//I've also tried deployer.deploy(SonnyCoin({value: initialValue}))
}
Я просто хочу добавить параметр, чтобы сделать его динамическим контрактом на выдачу, но я не уверен, чего мне не хватает, я просмотрел документацию truffle о сценариях миграции и их параметрах здесь, и кажется, что я делаю то, что диктует документация, но мне, очевидно, не хватает ключевого элемента. Приветствуется любая помощь в добавлении параметра в функцию конструктора.
Ответ №1:
Вот документ, как передать параметры для конструктора.
myContract.deploy({
data: '0x12345...',
arguments: [123, 'My String']
})
В разделе «аргументы» мы можем передавать параметры.
Ответ №2:
На самом деле это синтаксическая ошибка с моей стороны, противоречащая синтаксису, который, как вы можете подумать, заключается в передаче аргументов в construstor контракта следующим образом
module.exports = function(deployer) {
deployer.deploy(SonnyCoin(arg1))
}
На самом деле вы захотите передать аргументы конструктору следующим образом:
module.exports = function(deployer) {
deployer.deploy(SonnyCoin, arg1)
}
источник: здесь