# Keepers

Keepers are bots, scripts, other contracts, or simply EOA accounts that trigger events. This can be submitting a signed TX on behalf of a third party, calling a transaction at a specific time, or a more complex functionality.

Each time you execute such a function, you are rewarded in either tokens, or the systems native token KP3R.

Jobs might require keepers that have a minimum amount of bonded tokens, have earned a minimum amount of fees, or have been in the system longer than a certain period of time.

At the most simple level, they simply require a keeper to be registered in the system.

## Becoming a Keeper

To become a keeper, you simply need to call `bond(address,uint)`, no funds are required to become a keeper, however certain jobs might require a minimum amount of funds.

```
/// @notice Beginning of the bonding process
/// @param _bonding The asset being bound
/// @param _amount The amount of bonding asset being bound
function bond(address _bonding, uint256 _amount) external;
```

After waiting `bondTime` (default 3 days) and you can activate as a keeper;

```
/// @notice End of the bonding process after bonding time has passed
/// @param _bonding The asset being activated as bond collateral
function activate(address _bonding) external;
```

## Removing a Keeper

If you want to withdraw your bonds, you will need first to unbond them,

```
/// @notice Beginning of the unbonding process
/// @param _bonding The asset being unbound
/// @param _amount Allows for partial unbonding
function unbond(address _bonding, uint256 _amount) external;
```

{% hint style="info" %}
After a keeper has unbonded an asset amount, it may stop qualifying for the Filtered Access Control jobs, should they require to have bondings of that asset
{% endhint %}

After waiting `unbondTime` (default 14 days) you can withdraw any bonded assets

```
/// @notice Withdraw funds after unbonding has finished
/// @param _bonding The asset to withdraw from the bonding pool
function withdraw(address _bonding) external;
```

## **Disputing and Slashing a Keeper**

### **Disputed Keeper**

A Keeper might be disputed by a [disputer](https://docs.thekeep3r.network/roles/disputer) if there is suspicious activity detected within that keeper.

A good behavior is expected from keepers, this includes but isn't limited to:

* NOT working a malicious job
* NOT sandwiching a job

In case it's disputed, the keeper won't be able to bond or activate new assets nor withdraw its unbonded assets

### **Slashed Keeper**

Keepers that are detected to have a malicious behavior within the network (either towards the network or the protocol they are working for — eg: sandwiching a job) will get their bonded assets slashed and seized by governance

## Additional Requirements

Some jobs might have additional requirements such as minimum bonded protocol tokens (for example SNX). In such cases you would need to bond a minimum amount of SNX before you may qualify for the job.
