Etherie v0.1, Informationsextraktion zu Ethereum Smart Contracts

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


Blockchain, Bitcoin gegen Ethereum

Betrachten wir die Blockchain-Technologie aus einem anderen Blickwinkel. Wie viele Informationen sind in Blockchain gespeichert und wie können wir sie extrahieren und verwenden? Was können wir durch die Anwendung von Textinformationsextraktionstechniken auf eine öffentliche Blockchain gewinnen?

Zusätzlich zu den zuvor erwähnten Open-Source-Repositorys wie Github befinden wir uns jetzt in der aufstrebenden Ära blockchain-basierter Datenrepositorys. Unter dem Gesichtspunkt der Informationsextraktion ist das Lesen von Daten aus der Blockchain nicht nur kostenlos (oder zumindest effizient), sondern es wurde auch sichergestellt, dass:

  1. Die Integrität der Daten wurde nicht beeinträchtigt. Die Entwicklung einer Informationsextraktions-Engine wäre daher vertrauenswürdiger.
  2. Die Leute haben bezahlt, um die Daten (Transaktion, Smart Contract usw.) in der Blockchain zu speichern. Es kann also mit Sicherheit davon ausgegangen werden, dass ein starker kollektiver Anreiz besteht, die Dokumente sauber und funktionsfähig zu halten.

Schauen wir uns zwei der berühmtesten Blockchains an. Nun, Bitcoin ist ein Nur-Anhängen-Ledger, um Transaktionen zu verfolgen. Innerhalb des Bitcoin-Ökosystems gibt es begrenzte und nicht genutzte Skriptfunktionen. Man kann also mit Sicherheit behaupten, dass der größte Teil des Hauptbuchs nur eine sequentielle Kette von Transaktionen ist. Die einzigen Informationen, die in Bitcoin extrahiert werden müssen, sind die Transaktionseigenschaften und die schwer zu analysierenden verworrenen Diagramme.

Im Gegensatz dazu besteht die Ethereum-Blockchain aus intelligenten Verträgen. Tausende von Soliditätsquellen für Bytecodes stehen für die Prüfung zur Verfügung. Darüber hinaus wurde die Solidity-Sprache so konzipiert, dass sie für Menschen lesbar ist, und Entwickler haben einen Anreiz, den Code sauber und nicht mehrdeutig zu halten. Sowohl im logischen Teil als auch zur Auswahl von Variablen- und Funktionsnamen. Intuitiv sollte ein Korpus von Ethereum Smart Contracts ein großartiger Kandidat für Informationsextraktionstechniken sein.

Etherie, Ethereum Information Extraction Engine

Abbildung 2. Etherie-Ergebnisse für eine Beispielabfrage

Etherie v0.1 ist mein erster Versuch, Informationen aus diesen fruchtbaren, öffentlich zugänglichen Smart-Verträgen zu extrahieren. Um es auf den Punkt zu bringen, es findet die ähnlichsten intelligenten Verträge zu der vom Benutzer eingegebenen Abfrage. In Abb. 2 ist das Pilot-Frontend der aktuellen Version dargestellt. Zu einem Thema wurde eine Reihe von Wörtern eingegeben, und die Suchmaschine gibt 50 ähnlichste Verträge in 31.000 vorverarbeiteten Smart-Verträgen von Mainnet zurück.

Also, was passiert unter der Haube?

Um eine Reihe von vom Menschen erstellten Textdokumenten zu analysieren, können NLP-Techniken (Natural Language Processing) verwendet werden. Der NLP-Prozess kann einfach als eine Pipeline iterativer Extraktionen, Bereinigungen und Messungen über Textinhalte erklärt werden, um versteckte Beziehungen zwischen informativen Datenelementen zu finden und das Wissen zu aggregieren, um es für viel komplexere Aufgaben auszuführen. Im [1]Adam Geitgey hat die typischen Schritte der NLP-Pipeline erläutert und einige Python-Skriptbeispiele der Implementierung gezeigt.

Wie bereits erläutert, benötigen wir für die Smart Contract Information Extraction Engine nur einige grundlegende Schritte. Etherie verwendet derzeit diese vier Hauptschritte:

  1. Schluss machen: Speichern der verfügbaren Soliditätscodes für intelligente Verträge mithilfe von Smart Contract Sanctuary [2]. Dieses Open-Source-Skript gibt den Solidity-Smart-Vertrag aus Etherscan und Ätherkette Websites.
  2. Strukturelle Vorverarbeitung: Verwenden eines anderen Open-Source-Skripts (ConsenSys Python Solidity AST Parser) [3]) Habe ich abstrakte Syntaxbäume der gedumpten intelligenten Verträge generiert und sie in einer No-SQL-Datenbank (MongoDB) für eine spätere verschachtelte Suche in den abstrakten Syntaxbäumen gespeichert.
  3. Vorverarbeitung in natürlicher Sprache: Nachdem die Daten fertig sind, wurde eine einfache NLP-Pipeline verwendet, um aussagekräftige Wörter im f zu extrahierenFunktionsnamen und Variablennamen dass der Entwickler verwendet hat, um die Funktionalität verschiedener Teile des Codes auszudrücken. Die Schritte umfassen: Segmentierung, StopWord-Entfernung, Stemming und Namensentitätserkennung. Aus den extrahierten Wörtern wurden das Bag-of-Word-Vertragsmodell und die TF-IDF-Metrik (Term Frequency Inverse Document Frequency) sowie ein Gesamtwörterbuch aller verwendeten Wörter generiert.
  4. Ähnlichkeit berechnen: Die Kosinusähnlichkeit der eingegebenen Abfrage (nach einfacher Vorverarbeitung) wurde über die TF-IDF-Darstellungen der Verträge berechnet, und dem Benutzer wird eine sortierte Liste der Verträge angezeigt.

Verwandte Werke

Es gibt viele Studien zur Informationsextraktion, die jeweils für unterschiedliche Inhalte entwickelt wurden. LexNLP-Bibliothek [4] ist ein vollständig implementiertes Beispiel für eine Informationsextraktionspipeline, die sich mit rechtlichen und behördlichen Vorschriften befasst. Im [5]Adnan et. al. schlugen ein generisches Informationsextraktionssystem vor, um andere Datentypen wie visuelle Ressourcen zu nutzen. Die Aufgabe dieser Studien besteht darin, unstrukturierte Dokumente zu verarbeiten. In unserem Fall halten die Soliditätssyntax und der Anreiz der Entwickler den intelligenten Vertrag jedoch nahezu vollständig strukturiert. Informationsextraktionsaufgaben sind daher kostengünstiger und genauer.

Zukünftige Arbeiten

  1. Hinzufügen anderer Textzuordnungen wie Latent Dirichlet Allocation (LDA) oder halbüberwachte Techniken zur Verbesserung der Sortiergenauigkeit.
  2. Clustering Abstract Syntax Tree-Subgraphen zur Suche basierend auf der Vertragslogik.
  3. Clustering ByteCode von intelligenten Verträgen. Im Gegensatz zum Soliditätscode sind die ByteCodes von Smart Contracts über EVM selbst verfügbar, sodass sich der Untersuchungsbereich stark unterscheiden würde (von Zehntausenden bis zu Millionen Stichproben). In byteCode sind jedoch keine zusätzlichen Daten für die vorgeschlagene NLP-Pipeline verfügbar.

Fazit

Etherie v0.1 ist ein Versuch, frei verfügbare intelligente Verträge zu nutzen, um aktuell entwickelte Quellcodes zu finden. Ein Tool, mit dem Anfänger-Soliditätsentwickler (wie ich) Codemuster zu beliebigen Themen finden können.

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