Best Practice für den Austausch von Truffle-Build-Dateien zwischen Entwicklern

Ich arbeite an einigen Projekten mit Truffle, wie Sie wissen, kompiliert und migriert Truffle Verträge in verschiedene Ethereum- Netzwerke , z .

Eines der Probleme, die wir haben, ist, wie wir diese generierten Build-Dateien zwischen dem Team von Entwicklern teilen können, die an dem Projekt arbeiten.

Hat jemand Erfahrung mit diesem Problem und was ist die beste Lösung?

Die Hauptprobleme:

  • Wenn wir die Build-Dateien in die Quellcodeverwaltung übertragen, enthalten sie Elemente, die für den lokalen Computer des Benutzers spezifisch sind, z. B. sourcePath & absolutePath

  • Wenn wir sie nicht festschreiben, müssen wir entweder die abi json-Dateien manuell aktualisieren, um auf die richtige Vertragsadresse zu verweisen

Ich habe das Gefühl, dass wir vielleicht nicht verstehen, was der richtige Prozess ist, wenn Trüffel zwischen Teams mit mehr als ein paar Leuten in einem gemeinsamen Projekt verwendet werden

Alle Hilfe geschätzt

Das abi aus der Datei contract.json hat wahrscheinlich nichts mit dem Computer des Benutzers oder irgendeiner Art von Netzwerkkonfiguration zu tun. Daher sollte die gemeinsame Nutzung neben der bereitgestellten Vertragsadresse ausreichen, um direkt zwischen Teams mit web3 zu arbeiten, aber nicht mit Trüffel.
Sie stimmten zu, das Problem ist, dass Truffle Build-Dateien generiert, die auch maschinenspezifische Daten enthalten. Möglicherweise ist eine Form der Transformation erforderlich.

Antworten (1)

Ich weiß nicht, ob es dafür eine wirkliche Antwort gibt, aber ich verwende diese Lösung: Ich ändere die Migrationsdatei und schreibe die ABI und ihre Adresse nach dem Deploy

var fs = require('fs');
var MeinVertrag = artifacts.require('./MeinVertrag.sol');
var fileContent = require('../build/contracts/MyContract.json');

module.exports = Funktion (Bereitsteller) {
  deployer.deploy(MyContract).then(() => {
    var VertragKonfiguration = {
        abi: fileContent.abi,
        Adresse: MeinVertrag.Adresse
    };

    fs.writeFileSync('contractConfiguration/MyContract.json', JSON.stringify(contractConfiguration), { flag: 'w' });
  });
};

In meinem Fall verwende ich es, um meine Vertragsinformationen immer für UI-Zwecke zu aktualisieren. Die Benutzeroberfläche liest also die Informationen im contractConfigurationOrdner und hat immer die aktualisierte Adresse und ABI.

Ich mag diese Idee, müsste aber die Funktion erweitern, um die Adresse für jedes Netzwerk beizubehalten, z. B. ropsten, rinkeby, mainet. Ich werde es vorgeben und sehen, ob es hilft. Im Idealfall wäre es gut, wenn Truffle zwei Dateien ausgeben würde, eine mit den Adressen und ABI und eine andere mit benutzerspezifischen Details wie sourcePath & absolutePath , die idealerweise über die Konfiguration für verschiedene Ordner angegeben werden.
Nun, Trüffel machen es nicht von alleine. Erweitern Sie also einfach das obige Skript nach Belieben. Sie können Ihre Konfiguration verwenden und die Ausgabeverzeichnisse laden, mehrere Netzwerke unterstützen und so weiter.
Es gibt einen Trüffel-Artefakt , der anscheinend etwas Ähnliches tut.