Hardhat-deploy: Feature-Anfrage: Bereitstellungen vom Mainnet auf Hardhat im Forking-Modus zulassen

Erstellt am 19. Nov. 2020  ·  10Kommentare  ·  Quelle: wighawag/hardhat-deploy

Es wäre cool, wenn await ethers.getContract("Bar") beim Ausführen im Hardhat-Forking-Modus Hardhat-deploy wissen lassen würde, dass --network hardhat tatsächlich auch die Bereitstellungen/von jedem Netzwerk berücksichtigen kann, das in Forking konfiguriert ist

Verweis auf dieses Problem https://github.com/wighawag/hardhat-deploy-ethers/issues/6

enhancement

Alle 10 Kommentare

implementiert in 0.7.0-beta.29
über hardhat node --fork ... --fork-deployments <networkName>

Kopieren aus unserem Chat als Referenz:

Gilt es ausschließlich für das Netzwerk, das Sie mit --fork-deployments übergeben? Für mich wäre das idealerweise folgendes:

  1. Schauen Sie zuerst in den Ordner "fork-deployments-Bereitstellungen" - wenn der Vertrag nicht darin enthalten ist
  2. Schauen Sie in den —Netzwerkbereitstellungsordner als zweites

Auf diese Weise können Tests gespaltene Vertragsinstanzen aus dem Mainnet und vorgetäuschten Instanzen mischen, die Sie möglicherweise nur im Hardhat-Netzwerk bereitstellen möchten

es funktioniert, indem es die Bereitstellungen aus der Kette in localhost kopiert
Dann kann Ihr Bereitstellungsskript entscheiden, die Bereitstellung zu überschreiben, wenn sie dies wünschen

  1. ah okay cool. Woher weiß es, aus welchem ​​Netzwerk die Bereitstellungen kopiert werden sollen? Analysiert es die forking.url ?

  2. Ich verwende hardhat network In-Memory-Forking und während meiner Tests wird keine Instanz von hardhat node ausgeführt. Funktioniert dies auch für Tests mit Forking im In-Memory-Hardhat-Netzwerk?

ha nein, guter Punkt, dies ist nur ein Parameter für die Knotenaufgabe.
Ich sollte es der Testaufgabe hinzufügen können. Wiedereröffnung

zu 1. : Das Argument des Parameters ist der Name des Netzwerks, aus dem kopiert werden soll

Tatsächlich @gitpusha haben Sie ein Repo-Beispiel, wie dies eingerichtet wird, da das Denken daran möglicherweise einige Änderungen an der Handhabung der Dinge erfordert.
derzeit im Speichernetzwerk, es gibt keine Möglichkeit, vorab bereitgestellte Vertragsinformationen zu haben
Ich kann vielleicht einen ähnlichen Parameter hinzufügen, muss aber mehr darüber nachdenken

Eigentlich sollten Sie in der Lage sein, die externe Bereitstellungskonfiguration zu verwenden:

etwas wie :

hardhat.config.js

module.exports = {
 ...
  external: {
    deployments: {
      hardhat: ['deployments/mainnet'],
    },
  },
}

Eigentlich sollten Sie in der Lage sein, die externe Bereitstellungskonfiguration zu verwenden

Das wäre süß.

hardhat: ['deployments/mainnet']

Versteht das Tool, dass auf hardhat in dann sowohl nach deployments/mainnet als auch nach deployments/hardhat suchen sollte? Wenn ja, welche Bereitstellungen haben Vorrang? Ich möchte, dass deployments/mainnet Vorrang hat, wenn es Überschneidungen zwischen Verträgen gibt, da ich es explizit konfiguriert habe.

Wird auch das Verzeichnis deployments/hardhat standardmäßig berücksichtigt?

Hier ist ein Beispiel- Repository .

Ich bin mir jedoch nicht sicher, wie nützlich diese Funktion ist, da Sie immer einfach verwenden können

await hre.ethers.getContractAt(abi, address)

in forkmode um auf bereitgestellte Instanzen aus einem bestimmten Netzwerk zuzugreifen.

Es ist also wirklich nur ein nice-to-have.

Ich habe den oben geposteten Vorschlag ausprobiert und es scheint gut zu funktionieren.
Die in extern angegebenen Bereitstellungen haben keinen Vorrang, aber das sollte kein Problem darstellen, da der Knoten standardmäßig den Vertrag in Bereitstellungen/Hardhat zurücksetzt

Ich werde das Problem schließen, aber wenn Sie ein Problem haben, können Sie es gerne wieder öffnen

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

smartcontracts picture smartcontracts  ·  20Kommentare

gitpusha picture gitpusha  ·  6Kommentare

tennox picture tennox  ·  4Kommentare

freebyte picture freebyte  ·  9Kommentare

lcswillems picture lcswillems  ·  14Kommentare