私は確かに優れたプログラマーではありませんが,このプロジェクトを書くことで多くのことを学びました (そして私を忙しくしました).私のコードの大半はFMZ.COMで行われ,私がパイトンコードを再構成するなら,私はよりオブジェクト指向モデルを使用します.それでも,私は得られた結果に喜ばしく驚きました.ボットはこれまでほぼ100%のエーテル利益を得ています.
何をするの? これはアービトラージボットです.つまり,それは2つの (またはそれ以上の) 取引所の価格の違いを取引することでお金を稼ぐということです.現在では,単方向で,EtherdeltaとBittrexの間だけ取引しています.彼らは約20のeth/トークンペアを共有しています.これがどのように動作するかを示す図です:括弧が続く単語は,スマートコントラクトの関数呼び出しを呼んでいるイーサリアム取引です.
fmz.com プラットフォームの python エディタを使ってトランザクションや関数呼び出しを作成できたなら,かなり簡単だったでしょう.もっと信頼性の高いものが必要でした.失敗したトランザクションはお金を失うことを意味します.私のGET リクエストの1つ"つに TCP パケットが失われたり,Webサーバーが一時的にダウンしたとしても,応答が必要でした.したがって,私は自分のpython etherscan APIラッピングを実装し,トランザクションを作成し,それを公開するためにpythereumを使用することにしました.私はまた,自分の request.get decoratorを書きました.これは応答が満足したときにのみ終了する一時ループです.
これはEtherdelta json APIの応答を hexadecimal,rlpで暗号化された Ethereumトランザクションとしてコードするために使用したコードです (弱心者のためではありません):
底辺の閉ざしの原生十六進数値は,各関数に対応する関数署名である.関数署名は関数とその引数のkeccakから派生する.トランザクションのデータパラメータに添付され,その後に引数を構成するデータが付属しなければならない.合計で私のコードは約400行長で,5つの異なるファイルに含まれています.
グラフを作りました. グラフは,
プロジェクト全体で,私は学校で私の空き時間に約2週間かかり,それはすべてのラウンドで爆発でした.私は,激しくコーディングから休憩を取って現在,計画中です 代引ボット v2. 次のバージョンは86の異なる取引所と取引ペアをたくさん含むつもりです.
月まで!