El Collectooorr is an autonomous service that watches for new Art Blocks drops and intelligently collects new works for you. This agent service has been created using the Autonolas stack as part of Valory's Agent Academy 1.
This repository holds the code for the FSM apps used in the El Collectooorr.
Clone the repository:
git clone git@github.com:valory-xyz/agent-academy-1.git
Refer to requirements for open-autonomy in the requirements section of the README.
Pull pre-built images:
docker pull node:16.7.0
docker pull trufflesuite/ganache:beta
docker pull valory/elcollectooorr-network:latest
docker pull valory/open-autonomy-tendermint:latest
docker pull valory/open-autonomy:latest
docker pull valory/open-autonomy-user:latest
Create a virtual environment with all development dependencies:
make new_env
Enter virtual environment:
pipenv shell
Fetch packages:
autonomy packages sync --update-packages
Optionally: run all checks
tox
These steps only work for operators registered on-chain!
Ensure the service and its dependencies are pushed:
autonomy init --reset --remote --ipfs
autonomy push-all
Prepare a JSON file keys.json
containing the addresses and keys of the agents. Below you have some sample keys for testing. Use these keys for testing purposes only. Never use these keys in a production environment or for personal use.. Also, make sure that the addresses have some funds or transactions will fail.
[
{
"address": "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65",
"private_key": "0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a"
},
{
"address": "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc",
"private_key": "0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba"
},
{
"address": "0x976EA74026E726554dB657fA54763abd0C3a0aa9",
"private_key": "0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e"
},
{
"address": "0x14dC79964da2C08b23698B3D3cc7Ca32193d9955",
"private_key": "0x4bbbf85ce3377467afe5d46f804f221813b2bb87f24d81f60f1fcdbf7cbf4356"
}
]
Run the service:
Option 1: Step-by-step
Ensure you have set the following environment variables:
export SAFE_CONTRACT_ADDRESS="0x123a3d66cf688b676f9b7a6bcc3991f62fec7f0a"
export WHITELISTED_INVESTOR_ADDRESSES='["YOUR_WHITELIST"]'
export SERVICE_ELCOLLECTOOORR_RPC_0="YOUR_RPC_URL"
export SERVICE_ELCOLLECTOOORR_RPC_1="YOUR_RPC_URL"
export SERVICE_ELCOLLECTOOORR_RPC_2="YOUR_RPC_URL"
export SERVICE_ELCOLLECTOOORR_RPC_3="YOUR_RPC_URL"
where 0x123a3d66cf688b676f9b7a6bcc3991f62fec7f0a
should match the correct address from the on-chain service deployment, and YOUR_WHITELIST
, YOUR_RPC_URL_0
and YOUR_RPC_URL_1
should be replaced accordingly.
Then fetch the service:
autonomy fetch elcollectooorr/elcollectooorr:0.1.0:bafybeielssdlvnocbltwqz2fao7kwjyenblyfe6k7yuenf3bhjlac3negi --service
cd elcollectooorr
Then build the service:
autonomy build-image
autonomy deploy build keys.json --force --local --password "\${PASSWORD}" --aev
(On MAC OS manually update permissions with chmod 777 abci_build
and it's subfolders!)
Then run the service:
cd abci_build
docker-compose up --force-recreate
Option 2: One-step (requires on-chain to reference the correct hash)
autonomy deploy from-token 1 keys.json
Check out the Makefile
for useful commands, e.g. make formatters
, make generators
, make code-checks
, as well
as make common-checks-1
. To run all tests use make test
. Or simply use tox
.
You can run a fork of Ethereum Mainnet via Ganache in the following way:
ganache --fork.network mainnet