добавление аргумента конструктора в сценарий миграции в truffle

#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)
}

 

источник: здесь