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
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:
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
ah okay cool. Woher weiß es, aus welchem Netzwerk die Bereitstellungen kopiert werden sollen? Analysiert es die forking.url
?
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