Ich bin sicherlich kein großer Programmierer, aber das Schreiben dieses Projekts hat mir viel beigebracht (und mich beschäftigt gehalten).FMZ.COM, und wenn ich den Python-Code refactoren sollte, würde ich ein objektorientierteres Modell verwenden.
Was macht er? Es handelt sich um einen Arbitrage-Bot. Das heißt, er verdient Geld durch den Handel mit der Differenz zwischen den Preisen auf zwei (oder mehr) Börsen. Ab sofort ist er einseitig und handelt nur zwischen Etherdelta und Bittrex: Sie teilen sich etwa zwanzig Eth/Token-Paare. Hier ist ein Diagramm, um zu veranschaulichen, wie es funktioniert:Wörter, denen Klammern folgen, sind Ethereum-Transaktionen, die einen Smart Contract-Funktionsanruf aufrufen.
Ich hätte es gebrauchen können.fmz.comIch brauchte etwas zuverlässigeres. Eine fehlgeschlagene Transaktion bedeutet, Geld zu verlieren. Jede einzelne meiner GET-Anfragen benötigte eine Antwort, auch wenn das TCP-Paket verloren ging oder der Webserver am anderen Ende vorübergehend nicht funktionierte. Deshalb beschloss ich, meinen eigenen Python-Etherscan-API-Wrapper zu implementieren und benutzte pythereum, um die Transaktionen zu erstellen und Etherscan zu veröffentlichen. Ich schrieb auch meinen eigenen Requests.get-Dekorator, der eine While-Schleife ist, die nur dann ausläuft, wenn die Antwort zufriedenstellend ist.
Hier ist der Code, den ich benutzt habe, um die Etherdelta json API-Antworten als hexadezimal, rlp codiert, Ethereum-Transaktionen zu kodieren (nicht für schwache Herzen):
Die Rohhexadezimalwerte in der Schließung unten sind die Funktionssignaturen, die jeder Funktion entsprechen. Eine Funktionssignatur wird aus dem Keccak der Funktion und ihren Argumenten abgeleitet. Sie muss dem Datenparameter einer Transaktion beigefügt werden, gefolgt von den Daten, aus denen die Argumente bestehen. Insgesamt ist mein Code etwa 400 Zeilen lang und in 5 verschiedenen Dateien enthalten.
Ich habe ein paar Grafiken aus den Daten gemacht, die ich mit Pymatplotlib protokolliert habe.
Insgesamt hat das ganze Projekt mich etwa zwei Wochen in meiner Freizeit in der Schule und es war eine Bombe rundum. Ich habe eine Pause vom Programmieren kräftig genommen und bin derzeit in der Planung Arbitrage Bot v2. Die nächste Version wird 86 verschiedene Börsen und eine ganze Menge von Handel Paare umfassen.
Auf den Mond!