Skip to content

UniswapV2-SushiSwap market arbitration using WETH.

License

Notifications You must be signed in to change notification settings

PatricioNapoli/bazaar

Repository files navigation

Grand Bazaar

Made with Go Made with Go Ethereum is a dark forest

License MIT Go 1.18 build

Bazaar

Overview

Go console application that searches for possible market arbitration paths utilizing pre-approved coin pair swapping paths.
Possible markets are two, UniswapV2 and SushiSwap.
Always starts at 1 WETH and attempts to exit with same coin.

Prerequisites

If you are not using docker, these are required:

make
go 1.18+
solc
abigen (geth)

Environment

For getting a prompt for the required INFURA key and other configs, and creating .env file.

make env

Alternatively, you may export manually:

export BAZAAR_INFURA_KEY=YOURKEY

Build & Run

Make

Build & Run

make go

Alternatively, you may run make build and make run separately.
Or run the scripts in scripts/.

Contract ABI for pair reserves is already built but can be recompiled with:

make sol

Testing

make test

Please note that tests also require BAZAAR_INFURA_KEY env var set.

Docker

Building

docker build -t patricionapoli/bazaar .

Running

First, either create the env file through:

make env

And then:

docker run --env-file .env -v "$(pwd)"/output:/go/src/bazaar/output patricionapoli/bazaar

Or set the infura API key directly:

docker run -e BAZAAR_INFURA_KEY=key -v "$(pwd)"/output:/go/src/bazaar/output patricionapoli/bazaar

Please note that the output folder is being mapped to /output

Running release

docker run -e BAZAAR_INFURA_KEY=key -v "$(pwd)"/output:/go/src/bazaar/output ghcr.io/patricionapoli/bazaar:master

Testing

docker run -e BAZAAR_INFURA_KEY=key -v "$(pwd)"/output:/go/src/bazaar/output ghcr.io/patricionapoli/bazaar:master scripts/test.sh