Skip to main content
install.sh deploys and activates one staking pool from guides/apps/staking-pools/install-helpers/. Set the environment, run the script once, and read back the pool address and a receipt. The script uses Foundation-delegated funds when a DelegationHandler already exists for your validator. Otherwise it spends 10,000 BERA plus gas from your funding wallet.

What you need before you run install.sh

You need a synced validator, the helper tools, and live endpoints:
  • A synced Berachain validator
  • bash, Foundry (cast), jq, and curl
  • Reachable execution-layer JSON-RPC and consensus-layer Node API endpoints. Enable the Node API. The Node API can run on any node; it doesn’t have to be on the validator.
You also need one funding path:
  • Self-funded: at least 10,000 BERA plus gas in the funding wallet
  • Delegated: a DelegationHandler already formed and funded, plus gas (for example, 0.1 BERA) for activation
A DelegationHandler is the Foundation contract that holds delegated capital for your validator. The Berachain Foundation creates it when they issue a delegation.

Clone install-helpers

Clone the guides repo and enter the helper directory:

Set environment variables

Copy env.sh.template to env.sh in that directory, then edit the copy. install.sh sources env.sh when the file is present.
Use ./install.sh --help for usage.

Form the handler

Skip this section on the self-funded path. On the delegated path, form the handler before you run install.sh. Run this from install-helpers/ on a machine with RPC access. It does not have to be the validator host:
The script deploys and funds the DelegationHandler, runs delegate(), and grants VALIDATOR_ADMIN_ROLE. It prompts for pubkey, delegate amount, and validator-admin address. Set VALIDATOR_PUBKEY, DELEGATE_AMOUNT_BERA, and VALIDATOR_ADMIN in env.sh to pre-fill those prompts, or pass --pubkey, --amount, and --validator-admin to skip them. The script prints each cast send (or runs it when PRIVATE_KEY is set). delegate and grantRole need DEFAULT_ADMIN_ROLE on the handler, often the Foundation Safe.

Run install.sh

The script deploys and activates one pool and doesn’t resume. Run it once per pool:
If a DelegationHandler with delegated funds exists for your pubkey, the script uses the delegated path. Otherwise it uses the self-funded path. On success, the script prints the staking pool address. Confirmed transactions append to staking-pool-receipts.jsonl. Call the pool with cast for staker operations. The Operator guide covers day-two work. The example frontend is a sample UI for end users.

What’s next

Continue with: