Можно ли сбрасывать развертываемые компоненты за одну миграцию?

Я надеюсь использовать контракты openzeppelin-solidity. Один из них использует Ownable. Можно ли сделать следующее (через компиляцию и миграцию трюфеля)? Спасибо.

var OmniCAT = artifacts.require("./OmniCAT.sol");
var Ownable = artifacts.require("./Ownable.sol");
module.exports = function(deployer) {
  deployer.deploy(Ownable);
  deployer.deploy(OmniCAT);
};
Конечно, но правильно ли это для вашей ситуации, зависит от того, наследуется ли OmniCAT от Ownable. Пожалуйста, добавьте код вашего контракта, если вы хотите, чтобы кто-то взглянул на него
Вы говорите, что один из них «использует» Ownable, и я думаю, вы имеете в виду, что он «наследует» от Ownable. В этом случае унаследованные контракты не должны развертываться.

Ответы (1)

Это правильно с jsточки зрения синтаксиса. Но поскольку он OmniCatиспользует Ownableконтракт, вам следует дождаться его развертывания, а затем выполнить развертывание OmniCat.

Это связано с тем, что развертывание требует времени, поэтому оно выполняется асинхронно. truffle использует обещания при развертывании.

в конце концов, я думаю, что это будет работать лучше:

var OmniCAT = artifacts.require("./OmniCAT.sol");
var Ownable = artifacts.require("./Ownable.sol");
module.exports = function(deployer) {
  deployer.deploy(Ownable).then(
      Ownabledeployed =>{
        deployer.deploy(OmniCAT);
  });

};