Laden mehrerer Trüffelartefakte aus einer einzelnen Sol-Datei

Gesamtbild: Wie erhalte ich mehrere Vertragsinstanzen aus einer einzigen Sol-Datei mit Truffle-Contract?

Ich habe zwei Verträge in meiner .sol-Datei (es ist eher eine Vertragsfabrik)

const artifacts = require('../build/contracts/Contract.json');
const contract = require('truffle-contract');
const MyContract = contract(artifacts);

Wie erstelle ich eine Instanz des zweiten Vertrags mit Truffle-Contract? Wenn ich in Mokka teste, kann ich tun

const SecondContract = artifacts.require("SecondContract");

aber aus irgendeinem Grund bekomme ich in truffle exec

TypeError: artifacts.require is not a function

Antworten (1)

Angenommen, Sie verwenden Trüffel-Javascript-Tests und haben ein gutes Verständnis von Mokka. Dann können Sie ganz einfach weitere Instanzen desselben Vertrags erstellen. Ihre Syntax zum Erstellen einer neuen Instanz eines Trüffelvertrags sollte also lauten.

 beforeEach(async () => {
    let SecondContract = await Contract.new()
})

Alternativ stellen Sie vielleicht eine viel einfachere Frage, die ich mir vorgestellt habe. Wenn Truffle-Artefakte für eine einzelne Datei erstellt werden .sol, die mehrere Verträge enthält (z. B. bei der Vererbung), werden mehrere Artefakte erstellt (überprüfen Sie den Ordner build/contracts/), versuchen Sie das folgende Code-Snippet.

const artifacts = require('../build/contracts/Contract.json');
const SecondContract = require('../build/contracts/SecondContract.json')
const contract = require('truffle-contract');
const MyContract = contract(artifacts);
const myCoolContract = contract(SecondContract)

Möglicherweise fehlt Ihnen ein Rückruf, weshalb truffle exec nicht wie erwartet funktioniert.

Siehe https://truffleframework.com/docs/truffle/getting-started/writing-external-scripts

Oh je ... ich habe nicht bemerkt, dass es einen anderen Json für den anderen Vertrag gibt. Vielen Dank.