Untersuchen von Ethereum-Blockchain-Daten mit The Graph – Matt Marshall

Free Bitcoins: FreeBitcoin | BonusBitcoin

Coins Kaufen: Bitcoin.deAnycoinDirektCoinbaseCoinMama (mit Kreditkarte)Paxfull

Handelsplätze / Börsen: Bitcoin.de | KuCoinBinanceBitMexBitpandaeToro

Lending / Zinsen erhalten: Celsius NetworkCoinlend (Bot)

Cloud Mining: HashflareGenesis MiningIQ Mining


Kürzlich habe ich an einem virtuellen Hackathon von The Graph teilgenommen. Grundsätzlich handelt es sich um einen dezentralen Indexer für Ethereum mit einer GraphQL-Schnittstelle. Hier diskutiere ich die Vor- und Nachteile des aktuellen Ansatzes bei Argent und bewerte verschiedene andere Optionen.

Als Mobile Engineer habe ich mich schon lange für verschiedene Schnittstellen zu Ethereum interessiert. Bei Argent verwenden wir die Standard-Web3-Schnittstellen mit den Ethereum-JSON-RPC-APIs (sodass wir frei zwischen Infura und Alchemy wechseln können oder dem Benutzer die Auswahl eines eigenen Knotens ermöglichen können). Wir ergänzen dies mit unserer eigenen web3.swift-Bibliothek und einem Skript zur statischen Codegenerierung für unsere intelligenten Verträge.

Dies hat eine Reihe von Auswirkungen:

  • Wir haben eine statische Schnittstelle für alle Funktionen und Ereignisse von Ethereum. Dies reduziert Fehler und hält den Code lesbar, indem eine klare imperative Logik ermöglicht wird.
  • Web3-API-Aufrufe sind spezifisch, was zu einer sehr gesprächigen App führt. Wir führen viele API-Aufrufe auf einem mobilen Gerät durch, und obwohl unsere ereignisgesteuerte Flux-ähnliche Architektur die Architektur einfach hält, stellen wir immer noch viele Anforderungen an jeden Benutzer. Beispiel: Wenn Sie die Details für einen ERC20-Token nachschlagen, fordern wir das Tokensymbol an, ein anderes für den Tokennamen, ein anderes für die Anzahl der Dezimalstellen eines Tokens.
  • Wir verwenden keine Datenmodelle, die für den Blockchain-Status repräsentativ sind, und müssen diese Modelle daher auf der Seite komplexer Logikclients (sowohl unter iOS als auch unter Android) erstellen. Wenn wir in unseren modularen Smart-Verträgen Logik hinzufügen, entfernen oder ändern, wird diese Komplexität weiter zunehmen.
  • Die unterste Ebene unseres mobilen Stacks ist eine sehr niedrige Ebene: Der direkte Umgang mit vielen Ethereum JSON RPC-Endpunkten.

Es gibt verschiedene Möglichkeiten:

Verwenden Sie einen proprietären Dienst zum Lesen von Blockchain-Daten oder verwenden Sie einen eigenen Dienst

Es gibt zahlreiche Unternehmen, die Blockchain-Daten in verschiedenen API-Formen und Datenbanken anbieten. Dies birgt jedoch ein zusätzliches Risiko. Was ist, wenn das Unternehmen pleite geht? Was ist, wenn ihre Server in einer Region blockiert werden? Was ist, wenn unsere Benutzer einfach eine Wahl haben möchten? Unser Prinzip ist einfach: Wir verwenden Daten so nah wie möglich an der Quelle, um das Vertrauen der Benutzer zu stärken und die Abhängigkeit von unseren eigenen Diensten zu verringern. Aus diesem Grund verwenden wir die Web3-JSON-RPC-API. Wenn wir unsere Back-End-Dienste ausschalten, werden einige Funktionen zur Verbesserung der Benutzererfahrung eingestellt. Ein Benutzer kann jedoch weiterhin auf seine Daten zugreifen.

Auf der anderen Seite würde das Erstellen unseres eigenen Service einen großen Engineering- und Wartungsaufwand erfordern. Wir könnten Erhöhen Sie das Vertrauen in die Daten, die dem Benutzer angezeigt werden, indem Sie dies durch clientseitige Integritätsprüfungen und Warnungen ergänzen.

Verwenden Sie die GraphQL (alpha) -Schnittstelle für Ethereum JSON RPC

Mithilfe der GraphQL-Schnittstelle für die Ethereum JSON RPC-APIs konnten wir einfach die Anzahl der Netzwerkanforderungen reduzieren. Ich hatte noch keine Gelegenheit zu detaillierten Nachforschungen, aber es lohnt sich, Folgendes zu lesen: https://github.com/ConsenSys/ethql

Beachten Sie, dass keine Indizierung vorhanden ist und sich das Projekt noch in der Entwicklung befindet.

Verwenden Der Graph

Jeder kann seinen eigenen Knoten ausführen / das System bereitstellen (Open Source), und das Team dahinter macht Fortschritte bei einem sehr interessanten Modell der offenen Infrastruktur. Im Gegensatz zur GraphQL-Oberfläche könnten wir ein serverseitiges Datenmodell mit einfach zu verwendenden Handlern für unsere intelligenten Vertragsereignisse erstellen oder sogar aus Vertragsaufrufen und neuen Blöcken manipulieren (lesen Sie die Dokumente).

Mit diesem Angebot können Benutzer ihren eigenen Knoten ausführen, ein gemeinsam genutztes Datenmodell basierend auf unserer Anwendung erstellen und Paginierung, Filterung usw. über GraphQL verwenden, wenn unser Brieftaschendatensatz wächst.

Zuerst habe ich einen Untergraphen erstellt, indem ich den Anweisungen in The Graph gefolgt bin, und ihn auf der eigenen Infrastruktur bereitgestellt. Eine kleine Änderung an einer YAML-Datei und ein paar Zeilen TypeScript sind alles, was erforderlich ist.

Schauen Sie sich meinen (inoffiziellen) Argent-Subgraph hier an: https://thegraph.com/explorer/subgraph/th3m477/argent

Um die Daten über die in The Graph bereitgestellte Benutzeroberfläche hinaus zu testen, habe ich auch eine einfache iOS13-App zusammengestellt (eine Ausrede, um mit SwiftUI, Swift Package Manager usw. zu spielen). Alles, was wirklich benötigt wird, ist das Apollo-Framework und ein oder zwei schnelle Hacks, um den Mangel an Unterstützung für iOS13 und SwiftUI zu beheben. Um andere Untergraphen einzuschließen, verwende ich auch den von Nick Johnson geschriebenen ENS-Untergraphen.

Überprüfen Sie den Code: https://github.com/th3m477/argent-graph-ios

Es hat mir viel Spaß gemacht, das Angebot von The Graph zu untersuchen, einen Subgraphen zu erstellen und auf der eigenen Infrastruktur bereitzustellen und dies mit einer iOS-Benutzeroberfläche zu demonstrieren. Der ganze Stapel ist sehr einfach zu bearbeiten. Die Indizierung aller Daten erfolgt ebenfalls relativ schnell. Es ist ein Projekt, das ich behalten werde sehr Auge zu.

Free Bitcoins: FreeBitcoin | BonusBitcoin

Coins Kaufen: Bitcoin.deAnycoinDirektCoinbaseCoinMama (mit Kreditkarte)Paxfull

Handelsplätze / Börsen: Bitcoin.de | KuCoinBinanceBitMexBitpandaeToro

Lending / Zinsen erhalten: Celsius NetworkCoinlend (Bot)

Cloud Mining: HashflareGenesis MiningIQ Mining

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close