Saya tentu saja bukan programmer yang hebat, tetapi menulis proyek ini banyak mengajarkan saya (dan membuat saya sibuk). Sebagian besar kode saya dilakukan di FMZ.COM, dan jika saya refactor kode python saya akan menggunakan model yang lebih berorientasi objek.
Apa gunanya? Ini adalah bot arbitrase. Itu berarti bahwa ia menghasilkan uang dari perdagangan perbedaan antara harga pada dua (atau lebih) bursa. Saat ini ia unidirectional dan hanya perdagangan antara Etherdelta dan Bittrex: mereka berbagi sekitar dua puluh pasangan et / token. Berikut adalah diagram untuk menggambarkan bagaimana cara kerjanya:Kata-kata yang diikuti oleh tanda kurung adalah transaksi ethereum yang memanggil panggilan fungsi kontrak pintar.
Saya bisa menggunakan editor python platform fmz.com untuk membuat transaksi dan panggilan fungsi dan itu akan cukup mudah. Saya membutuhkan sesuatu yang lebih dapat diandalkan; transaksi yang gagal berarti kehilangan uang. Setiap satu permintaan GET saya membutuhkan jawaban, bahkan jika paket TCP hilang atau webserver di ujung lain turun sementara. Oleh karena itu saya memutuskan untuk mengimplementasikan wrapper API python eterscan saya sendiri dan menggunakan pythereum untuk membuat transaksi dan eterscan untuk menerbitkannya. Saya juga menulis request.get decorator saya sendiri yang merupakan loop sementara yang hanya keluar setelah jawaban memuaskan.
Ini adalah kode yang saya gunakan untuk mengkodekan respon API etherdelta json sebagai hexadecimal, rlp dikodekan, transaksi ethereum (bukan untuk yang lemah hati):
Nilai heksadesimal mentah dalam penutupan di bagian bawah adalah tanda tangan fungsi yang sesuai dengan setiap fungsi. Tanda tangan fungsi berasal dari keccak fungsi dan argumennya. Ini harus dilampirkan ke parameter data transaksi diikuti oleh data yang membentuk argumen. Secara total kode saya sekitar 400 baris panjang dan terkandung dalam 5 file yang berbeda.
Saya membuat beberapa grafik dari data yang saya log menggunakan pymatplotlib.
Secara keseluruhan seluruh proyek ini memakan waktu sekitar dua minggu selama waktu luang saya di sekolah dan itu adalah ledakan di seluruh. saya telah mengambil istirahat dari coding dengan kuat dan saat ini dalam proses perencanaan arbitrase bot v2. versi berikutnya akan mencakup 86 bursa yang berbeda dan banyak pasangan perdagangan.
Ke bulan!