Ist es in Ordnung, Deployables in einer einzigen Migration zu mungen?

Ich hoffe, Openzeppelin-Solidity-Verträge verwenden zu können. Einer von ihnen verwendet Ownable. Ist Folgendes in Ordnung (über Trüffelkompilierung und -migration)? Danke schön.

var OmniCAT = artifacts.require("./OmniCAT.sol");
var Ownable = artifacts.require("./Ownable.sol");
module.exports = function(deployer) {
  deployer.deploy(Ownable);
  deployer.deploy(OmniCAT);
};
Sicher, aber ob es der richtige Weg für Ihre Situation ist, hängt davon ab, ob OmniCAT von Ownable erbt. Bitte fügen Sie Ihren Vertragscode hinzu, wenn Sie möchten, dass jemand einen Blick darauf wirft
Sie sagen, einer von ihnen „benutzt“ Ownable, und ich denke, Sie meinen, er „erbt“ von Ownable. In diesem Fall sollten geerbte Verträge nicht eingesetzt werden.

Antworten (1)

jsAus syntaktischer Sicht ist es korrekt . Aber da der OmniCatden Vertrag verwendet Ownable, sollten Sie warten, bis er bereitgestellt wird, und dann bereitstellen OmniCat.

Dies liegt daran, dass die Bereitstellung einige Zeit in Anspruch nimmt, sodass sie asynchron erfolgt. Truffle verwendet Versprechungen beim Deployment.

Am Ende denke ich, dass dies besser funktionieren wird:

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

};