Become a Keeper
Earn PLS by fulfilling entropy requests
1
Monitor
Check pending
2
Find
Ready requests
3
Fulfill
Send transaction
4
Earn
Get bounty
👁
Watch?
FindTX
Fulfill$
EarnNo registration needed - anyone can be a keeper
Max Bounty
3K
PLS per request
Your Share
30%
of each request
Batch Size
75
max per tx
Cooldown
1
block
Revenue Split (per 10,000 PLS request)
3,000
Your Bounty (30%)
6,000
Protocol (60%)
1,000
Treasury (10%)
Bounty Decay (Speed Matters!)
Faster fulfillment = bigger bounty. Be first to earn more.
Delay 1-2 blocks (fastest)3,000 PLS (100%)
Delay 3 blocks~2,475 PLS (82%)
Delay 4 blocks~1,950 PLS (65%)
Delay 5 blocks~1,425 PLS (47%)
Delay 7+ blocks (slow)900 PLS (30% min)
What You Need
Wallet
With PLS for gas
RPC Access
PulseChain node
Bot Script
Node.js or Python
Not Required
Registration
Fully permissionless
Staking
No collateral needed
Approval
Start immediately
Keeper Bot
Quick Start
Simple bot to start earning bounties
1Contracts
VE
VEO
Fulfill requests
VE
VEOKeeper
Find ready requests
2Basic Bot
keeper.js
const { ethers } = require('ethers');
const provider = new ethers.JsonRpcProvider('https://rpc.pulsechain.com');
const wallet = new ethers.Wallet(PRIVATE_KEY, provider);
const veo = new ethers.Contract(VEO_ADDRESS, VEO_ABI, wallet);
const veoKeeper = new ethers.Contract(VEOKEEPER_ADDRESS, KEEPER_ABI, provider);
async function runKeeper() {
while (true) {
// Check cooldown (1 block between fulfills)
const currentBlock = await provider.getBlockNumber();
const lastFulfill = await veo.lastFulfillBlock(wallet.address);
if (currentBlock <= lastFulfill) {
await sleep(3000);
continue;
}
// Get fulfillable requests
const [requestIds] = await veoKeeper.getGlobalFulfillable();
if (requestIds.length === 0) {
await sleep(3000);
continue;
}
// Fulfill batch (max 75 per tx)
const batch = requestIds.slice(0, 75);
const tx = await veo.fulfillEntropyBulk(batch, {
gasLimit: 300000 + (batch.length * 150000)
});
const receipt = await tx.wait();
console.log(`Fulfilled ${batch.length} requests! Tx: ${receipt.hash}`);
}
}
runKeeper();3Key Functions
VEOKeeper (Read)
getGlobalFulfillable() → (bytes32[], ...)getPendingStatus() → (ids, ready[], ...)canKeeperFulfill(keeper, id) → (bool, ...)VEO (Write)
fulfillEntropy(requestId)fulfillEntropyBulk(requestIds[]) → bountyisReadyToFulfill(id) → boolRules
Competition
First come first served
Cooldown
1 block between fulfills
Batch Limit
Max 75 per transaction
Gas
You pay, bounty covers it