Woher kennt Truffle die Adresse von Verträgen, die über Truffle Migrate veröffentlicht werden?

In der Dokumentation von Truffle heißt DeployedAddresses.soles, wie Truffle die Adressen von Verträgen identifiziert und speichert, die über in der Blockchain veröffentlicht werden truffle migrate.

Wie funktioniert diese Datei und wie sieht sie aus? Wenn ich einen AdoptionVertrag veröffentliche, woher weiß Truffle, dass sich das Wort Adoptionin truffle consoleauf diesen Vertrag bezieht?

Antworten (2)

Gut So weit ich weiß. Truffle speichert Ihre Vertragsadresse in der Datei build/contacts/[CONTRACT.json].

Truffle ordnet die Vertragsadresse unter dem Netzwerk-JSON-Objekt dem Index zu.

 "networks": {
    "1": {
      "events": {},
      "links": {},
      "address": "0x77685437e762aaa90d4b6924aa9445c1198013f1"
    }
  },
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-02-16T10:49:18.298Z"
}

Wenn Sie die JSON-Datei löschen, wird eine neue JSON-Datei mit einer neuen Vertrags-ID erstellt.

Wenn Sie „migrate/console“ ausführen, verweist Truffle auf Ihre [CONTRACT.json]-Datei mit dem entsprechenden Netzwerk und der entsprechenden Adresse.

Wie wird die Netzwerknummer generiert? zB Sie haben oben "1" angezeigt. Aber auf meiner lokalen Computernetzwerknummer ist "1532795656486" - was zufällig erscheint.
Die Netzwerknummer wird vom verbundenen RPC-Client / Blockchain gelesen. Wenn Sie in Ihre Ganache-Benutzeroberfläche schauen, sehen Sie die Netzwerknummer, die im JSON in der oberen Leiste der Benutzeroberfläche festgelegt ist.

Truffle erfordert, dass Sie Migrationen definieren, indem Sie einen Deployer für den Adoptionsvertrag erstellen.

Zum Beispielmigrations/2_deploy_contracts.js

var Adoption = artifacts.require("Adoption");

module.exports = function(deployer) {
  deployer.deploy(Adoption);
};

Beim Erstellen des Vertrags mit truffle buildwird auch eine JSON-Datei erstellt build/contracts/Adoption.json, die alle erforderlichen Metadaten enthält.

DeployedAddresses.sol wird zur Laufzeit von Truffle erstellt, wenn Sie Tests ausführen.

Siehe auch: https://github.com/trufflesuite/truffle/issues/471#issuecomment-315166855

Ich wusste das alles, um diese Frage zu stellen. Leider hat nichts davon meine Frage beantwortet.
Vielleicht musst du konkreter werden. ^^ Sie können auch den Trüffel-Support fragen. ZB über Gitter truffleframework.com/support