So bleiben Vertragsdaten aus Truffle-Transaktionen bestehen

Nach dem Ausführen von Truffle-Tests kehrt die Blockchain in eine Reinraumumgebung zurück und alle Daten gehen verloren.

Wie können Sie Transaktionen von Truffle aus durchführen und die Daten in Ihrem Vertrag beibehalten? In meinem Fall möchte ich diese Daten in einem Web3-Frontend verwenden.

Vom Frontend aus werden die Transaktionen gespeichert, aber es ist mühsam, da Sie die MetaMask-Bestätigung jedes Mal genehmigen müssen und das Erstellen von Hunderten von Transaktionen mühsam wäre, während Sie in Truffle einfach eine Schleife ausführen können und sich nicht um die Bestätigungsnachrichten kümmern müssen.

Antworten (1)

Zur Verdeutlichung: Sie versuchen, die Daten in Ihrem privaten Ganache-Netzwerk (nicht Truffle) zu speichern. Truffle ist einfach das Framework, mit dem Sie ein Projekt erstellen und auf verschiedene Netzwerke wie das Hauptnetz, Ropsten, Ganache usw. verweisen können.

Was Sie versuchen, kann nicht mit Tests erreicht werden, sondern sollte eher auf der Bereitstellungsseite (im migrationsOrdner Ihres Truffle-Projekts) durchgeführt werden. Der ganze Sinn des Tests besteht darin, einen Teil des Codes vorübergehend zu untersuchen, um zu bestätigen, dass er funktioniert, und nicht zu bestehen.

Um das gewünschte Ziel zu erreichen, sollten Sie die Bereitstellung, die Sie versuchen, in Ihrer migrations/2_deploy_contract.jsDatei durchzuführen. Wenn sich Ihr Code dort befindet, führen Sie einfach aus truffle migrate, und Ihr Code wird in dem Netzwerk bereitgestellt, auf das Sie zeigen.

Wenn Sie versuchen, Hunderte von Transaktionen durchzuführen, müssen Sie dies entweder manuell tun oder ein Skript schreiben (ähnlich wie bei Ihren Tests), das mit dem Blockchain-Netzwerk interagiert, in dem Sie sich befinden, und die Transaktionen durchführt. Wie Sie es schreiben und welche Tools Sie verwenden, bleibt Ihnen überlassen ( web3js, web3.py, usw.), aber sie führen alle zum gleichen Ergebnis.

Werfen Sie einen Blick auf diesen Artikel, um Ratschläge zu erhalten, wie web3jsSie das ausführen können, was Sie zu tun versuchen.