Saya sudah tentu bukan seorang pengaturcara yang hebat, tetapi menulis projek ini mengajar saya banyak (dan membuat saya sibuk). Kebanyakan kod saya dilakukan di FMZ.COM, dan jika saya akan refactor kod python saya akan menggunakan model yang lebih berorientasikan objek. Walau bagaimanapun, saya terkejut dengan hasil yang saya dapat dan bot telah membuat hampir 100% keuntungan eter setakat ini.
Apa gunanya? Ia adalah bot arbitrase. Ini bermakna ia memperoleh wang dari perdagangan perbezaan antara harga pada dua (atau lebih) bursa. Sehingga kini ia adalah unidirectional dan hanya perdagangan antara Etherdelta dan Bittrex: mereka berkongsi kira-kira dua puluh pasangan et / token. Berikut adalah rajah untuk menggambarkan bagaimana ia berfungsi:Perkataan yang diikuti oleh kurung adalah transaksi ethereum yang memanggil panggilan fungsi kontrak pintar.
Saya boleh menggunakan editor python platform fmz.com untuk membuat transaksi dan panggilan fungsi dan ia akan menjadi agak mudah. Saya memerlukan sesuatu yang lebih boleh dipercayai; transaksi yang gagal bermakna kehilangan wang. Setiap satu permintaan GET saya memerlukan jawapan, walaupun pakej TCP hilang atau pelayan web di hujung yang lain turun sementara. Oleh itu saya memutuskan untuk melaksanakan pembungkus API python eterscan saya sendiri dan menggunakan pythereum untuk membuat transaksi dan eterscan untuk menerbitkannya. Saya juga menulis permintaan saya sendiri.
Ini adalah kod yang saya gunakan untuk mengkodkan jawapan API etherdelta json sebagai hexadecimal, rlp dikodkan, transaksi ethereum (bukan untuk orang yang lemah hati):
Nilai hexadecimal mentah dalam penutupan di bahagian bawah adalah tanda tangan fungsi yang sepadan dengan setiap fungsi. Tanda tangan fungsi berasal dari keccak fungsi dan argumennya. Ia mesti dilampirkan ke parameter data transaksi diikuti oleh data yang membentuk argumen. Secara keseluruhan kod saya adalah kira-kira 400 baris panjang dan terkandung dalam 5 fail yang berbeza.
Saya membuat beberapa grafik dari data yang saya log menggunakan pymatplotlib.
Secara keseluruhan keseluruhan projek ini mengambil masa saya kira-kira dua minggu semasa masa lapang saya di sekolah dan ia adalah letupan di seluruh. saya telah mengambil rehat dari pengekodan kuat dan kini dalam proses merancang bot arbitrage v2. versi seterusnya akan merangkumi 86 pertukaran yang berbeza dan banyak pasangan dagangan.
Ke bulan!