Truffle Migration wird nach dem Neustart von testrpc von der ersten Migration neu gestartet

Ich versuche, eine Art private Kette auf testrpc zu erstellen, damit ich testrpc -u 0 -d --db /path/to/dbtestrpc jedes Mal starte. Die Sache ist, dass, wenn ich testrpc neu starte (beenden und erneut starten) truffle migrate, der Migrationsprozess von Anfang an neu gestartet wird (1_*), obwohl testrpc eine alte Kettendatenbank verwendet. Gibt es eine Möglichkeit, dies zu umgehen oder ist dies ein Problem?

Antworten (1)

Wenn Sie einen Vertrag in Ihrer privaten Kette bereitstellen. Truffle speichert die Netzwerk-ID Ihrer Kette, um zu wissen, auf welcher Kette sie bereitgestellt wurde. ( mit der Adresse auf der aktuellen Kette )

in build/contract/yourContract.json gibt es ein Feld

"networks": {
 "1": {  //live network
  "events": {},
  "links": {},
  "address": "0xd77d2a7a728dc7c7c58ac1bcfdfb35934b3ed066"
 },
 "15": { // network id I manually set
  "events": {},
  "links": {},
  "address": "0x1c10cbe2e883567eea5de1017f3d21b5b2600abb"
 },
 "1507630284099": { // timestamp generated by testrpc
  "events": {},
  "links": {},
  "address": "0xcdc26c0a2e7f43f4ad571373fc68c1a58ed8a25a"
 }
},

Das Problem, das Sie haben, ist, dass Sie Ihre Netzwerk-ID nicht mit testrpc festlegen.

verwenden

-ioder --network-id: Geben Sie die Netzwerk-ID an, die der TestRPC verwendet, um sich selbst zu identifizieren (standardmäßig die aktuelle Zeit oder die Netzwerk-ID der Fork-Blockchain, falls konfiguriert). doc

testrpc -u 0 -d --db /path/to/db --network-id=15

um eine ID festzulegen, damit Sie beim Neustart Ihres testrpc Ihre Datenbank behalten und wenn Sie sie erneut ausführen, wird truffle migratesie Ihnen dies mitteilenNetwork up to date.