Tôi chắc chắn không phải là một lập trình viên tuyệt vời, nhưng viết dự án này đã dạy tôi rất nhiều (và giữ cho tôi bận rộn).FMZ.COMTuy nhiên, tôi đã rất ngạc nhiên với kết quả mà tôi nhận được và bot đã kiếm được gần 100% lợi nhuận ether cho đến nay.
Nó làm gì? Nó là một bot điều chỉnh. Điều đó có nghĩa là nó kiếm tiền từ việc giao dịch sự khác biệt giữa giá trên hai (hoặc nhiều) sàn giao dịch. Tính đến bây giờ nó là đơn hướng và chỉ giao dịch giữa Etherdelta và Bittrex: họ chia sẻ khoảng hai mươi cặp eth / token. Dưới đây là một sơ đồ minh họa cách nó hoạt động:Các từ theo sau dấu ngoặc là các giao dịch ethereum gọi một hàm hợp đồng thông minh.
Tôi có thể sử dụngfmz.comTôi cần một cái gì đó đáng tin cậy hơn; một giao dịch thất bại có nghĩa là mất tiền. Mỗi một yêu cầu GET của tôi cần một câu trả lời, ngay cả khi gói TCP bị mất hoặc máy chủ web ở đầu kia tạm thời bị ngưng hoạt động. Do đó, tôi quyết định thực hiện python etherscan API wrapper của riêng tôi và sử dụng pythereum để tạo các giao dịch và etherscan để xuất bản chúng. Tôi cũng đã viết requests.get decorator của riêng tôi, đó là một vòng lặp while chỉ xuất hiện khi câu trả lời thỏa mãn.
Đây là mã tôi đã sử dụng để mã hóa các phản hồi API json của etherdelta là hexadecimal, mã hóa rlp, giao dịch ethereum (không dành cho những người yếu lòng):
Các giá trị hexadecimal thô trong khóa ở phía dưới là chữ ký hàm tương ứng với mỗi hàm. Một chữ ký hàm được bắt nguồn từ keccak của hàm và các đối số của nó. Nó phải được thêm vào tham số dữ liệu của một giao dịch theo sau là dữ liệu tạo thành các đối số. Tổng cộng mã của tôi dài khoảng 400 dòng và chứa trong 5 tệp khác nhau.
Tôi đã tạo ra một vài biểu đồ từ dữ liệu tôi ghi lại bằng cách sử dụng pymatplotlib.
Nhìn chung, toàn bộ dự án đã mất khoảng hai tuần trong thời gian rảnh của tôi ở trường và nó là một vụ nổ xung quanh. Tôi đã nghỉ ngơi từ lập trình mạnh mẽ và hiện đang trong quá trình lập kế hoạch cho arbitrage bot v2. phiên bản tiếp theo sẽ bao gồm 86 sàn giao dịch khác nhau và rất nhiều cặp giao dịch.
Đến mặt trăng!