Wie wird eine Vertragsadresse richtig gespeichert und abgerufen?

Angenommen, ich erstelle einen neuen Vertrag mit:

web3.eth.contract(abi).new({ data: code }, (err, contract) => { ... })

Innerhalb des Rückrufs kann ich contract.addressden neuen Vertrag erhalten. Ich kann diesen Vertrag dann erfolgreich aufrufen.

Ich versuche nur zu verstehen, wie diese Adresse richtig gespeichert werden sollte. Ich neige dazu, es in einer DB zu speichern, die mein System beim Start lädt.

Oder gibt es einen besseren Weg? Ich schätze, ich habe etwas DNS-ähnliches erwartet, bei dem ich meinem Vertrag einen eindeutigen Namen und eine eindeutige Version geben könnte, und er würde der Adresse zugeordnet werden. Gibt es das nicht? Klingt das Einfügen der Adresse in eine DB während eines Migrationsschritts sinnvoll?

Antworten (3)

Idealerweise interagierst du während deiner Bewerbung mit dem Vertrag. Sie können es in database, locally or even hardcodeder Adresse hinterlegen.

Wenn Sie in db speichern, können Sie problemlos zukünftige Migrationen und Upgrades Ihres Vertrags durchführen, wann immer Sie möchten.

Wenn die Vertragsbereitstellung dynamisch ist, können Sie die Bereitstellung in ein Versprechen einbinden und die Adresse speichern, wenn sie zurückkommt. Und erstellen Sie eine globale Variable aller bereitgestellten Verträge.

Vielleicht möchten Sie sich mit iurimatias/embark-framework befassen

Die von anderen Antworten vorgeschlagenen Datenbank- oder Konfigurationsdateioptionen klingen gut: Selbst wenn es eine DNS-ähnliche Registrierung gäbe, müsste DApps seine Adresse zunächst fest codieren.

Ihre Frage ist aktuell und der ENS, Ethereum Name Service, wurde gerade im Testnetz (Ropsten) bereitgestellt.

Einen Schnellstart und weitere Details finden Sie im ENS-Wiki . Hier ist eine Einführung:

ENS ist der Ethereum Name Service, ein verteiltes, erweiterbares Namenssystem, das auf der Ethereum-Blockchain basiert.

ENS kann verwendet werden, um eine Vielzahl von Ressourcen aufzulösen. Der anfängliche Standard für ENS definiert die Auflösung für Ethereum-Adressen, aber das System ist vom Design her erweiterbar, sodass in Zukunft mehr Ressourcentypen aufgelöst werden können, ohne dass die Kernkomponenten von ENS aktualisiert werden müssen.

ENS wird im Ropsten-Testnet unter 0x112234455c3a32fd11230c42e7bccd4a84e02010 bereitgestellt.

Erstgespräch hier .

Wenn Sie sich im Knoten befinden, können Sie ihn in einer Datenbank wie Postgres speichern oder sogar eine Datei erstellen, die ein Benutzer sichern kann.

Wenn Sie sich im Browser befinden, haben Sie eine Vielzahl von Optionen, die von Cookies über localStorage bis hin zu indexedDB reichen.

Sie können Benutzern sogar erlauben, ihre eigenen Vertragsadressen einzugeben, um einen bereits bereitgestellten Vertrag mit bekanntem Bytecode und ABI wiederherzustellen.