How to work as a keeper

Hi there,
Is there anybody that is kind enough to explain in simple terms how to start doing jobs as a keeper please?
I did read the documentation, however its probably to technical for me, i am willing to learn and work as a keeper in the network, just do not know how and where to start.
I suspect the uniswaporacle job is the simplest and that i need to follow:

  1. click on etherscan address
    2.write my wallet address in _keep3r
    3.write the work function at point 8?

Thank you very much.


Here is how I would do it via Etherscan:

Step 1) Pick a job (for this example I will pick the UniswapV2Oracle job)

Step 2) Click the job address link to Etherscan:

Step 3) Go to Contract → Read Contract

Step 4) Go down to the “updateable” field, if it is True, that means work can be done. If False, you have to wait until it turns to True. For the UniswapV2Oracle job, this should turn to true every 30 mins.

Step 5) Write contract and connect your wallet

Step 6) Submit a work transaction

Step 7) If you have not activated your bond, this will throw an error:

so don’t forget to activate your bonds on

You can only activate bonds after the 3 day bonding period has surpassed. Also, the Activate Bonds button might not show up for you because of a UI bug which should be fixed soon with my pull request.

If you need to activate your bonds still and the button hasn’t showed up, you can do it via Etherscan by going to the K3PR token contract on etherscan and hitting Activate with the address of the K3PR token (which is

Step 8) If you are activated, then you should be able to submit that work transaction and you will be award bonded K3PR for doing so. You can see an example completed oracle job here

Note that doing this manually is not very efficient and you might get beaten by people running scripts, but if you time it right and hit work as soon as Updateable goes to True, then you can perhaps git work in as long as not too many others are trying.

When I get some extra time later today, I can go through another job (which might have different names for Updateable and Work) and also explain how to run Andre’s example node.js scripts which can fully automate all this.


thank you very much for detailed explanation!
So far i activated the bonds, but the button still shows activate, guess this is a bug

1 Like

Hi Really thanks for your explanation. I have done the steps that you mentioned above … still waiting for the work to be “done”. Fingers crossed… :grin:

Thanks @kx9x.
I have a question here. Its really not easy to get work as updateable is not true as needed. What do you suggest for it.
Is there any script that I can run in my machine as an autotask?
As suggestion: The script should be added as a cronjob and should check if any of Job’s work is available. If available then it lets join the work.

1 Like

Andre has a set of node.js scripts for 3 of the jobs on the Github repo. You can find them here.

You can download node.js and download these files and run these from the command line doing “node UniswapV2OracleKeeper.js”, for example.

Note that you have to edit the files to replace some placeholders Andre added:

These are:
const provider = new Web3.providers.HttpProvider(**<PROVIDER>**);

const account = <ETH-ADDRESS>;

const privateKey = Buffer.from(<PRIVATEKEY>, 'hex');

For <PROVIDER>, you can make an account and replace with your mainnet infura https:// endpoint.

After registering and making a project, you can find it here:

Copy paste that url and replace <PROVIDER> with it in the text file. Make sure to wrap it in single quotes like ‘

For <ETH-ADDRESS>, just put your Keeper’s ethereum address in single quotes.

For <PRIVATEKEY>, I just first want to slap on a huge warning about this. Exporting your private key and putting it in a file is extremely dangerous. This instantly turns any cold wallet into a hot wallet and you should only be doing this with wallets you are prepared to lose. As soon as someone else sees your private key, that wallet is compromised and your coins will be stolen. Do not screenshot this code after pasting your private key and try to ask questions for help here. Be very careful.

I repeat, exporting your private key and putting it in a file is not secure. Do NOT under any circumstance put your main wallet’s private key into a file like this. If you bonded with your main wallet, too bad. Make a new account, send it some ether, bond again and wait 3 days. It is worth the safety.

Now after heeding this warning, you should have a throwaway wallet that is bonded and includes a small amount of Eth. You can now replace with your wallet’s private key and run the script using node in the command line.

Currently the script will check every 5 minutes if a job is workable and will work the job if it is workable.

You can change the milliseconds that the script waits to try again by editing this line:

setTimeout(_getGasPrice, 300000);

You can change 300000 to something smaller. Remember this is in milliseconds, so 300000 ms is 5 minutes and 1000 ms is a second. Be careful not to refresh too quickly or you might use too many api calls on your Infura node. 1 minute might be plenty, aka 60000 ms.

This isn’t the best way to do this and a more secure and reliable automated option is described by Andre here. OpenZeppelin defender’s relayer technology will generate a new private key for each transaction which is much more secure. Consider it if you are going into the business of cloud automated Keepers.


Thanks so much a very detailed answer. And no worries, I am aware of keeping the private keys and using an account which is not main account to bond.

No problem! Also, I posted this guide if you are interested in a free way to use Open Zeppelin | Defender to run a cronjob on the cloud.

The same private key caveats apply and maybe even more so since this time your private key will end up on Open Zeppelin and you have to trust their security.

Worth a read and you can figure out your best option.

1 Like

Hey @kx9x. I activated the bond and the ‘uniswapv2oracle’ updateable is true but when i try to sumbit the work transaction still shows me the error mentioned above(Transaction erro: Exception thrown in contract code).
Any idea on this. Thanks

Experienced the same couple of times now

well, this thread explains it.


I have been reading your post and you have mentioned about providing our wallet private keys in order to perform jobs in the keeper network.

Is there other safer ways to perform a job automatically without providing our wallet private keys?

i haven’t found a way that would allow a bot to work without having your private key in some way exposed in your bot. But definitely don’t use your main wallet, make a separate wallet just for the bot.

Thanks for the reply.

If we have 100 KP3R, it will be around 9k usdt in a wallet. This is pretty dangerous as well.

  1. By the way, may I know how much ETH I need to keep in the wallet for all the gas required for keeper job. Any good estimate?

  2. To use Metawallet, we need at least 200kp3r?

  3. We do not need to maintain any ETH in Metawallet? or at least 1 ETH for any unforeseen gas?