Becoming a Validator
Registering as a validator on BESC Hyperchain is a governed process. You self-stake BESC, apply, and existing validators vote to approve your admission.
Requirements
Before applying, ensure you have:
- Minimum 10,000 BESC for self-stake (held in the wallet you will use to register)
- BUSDC tokens for the monthly subscription fee (40 BUSDC per 30 days)
- A chosen commission rate between 0% and 25% (in basis points: 0–2500)
- A chosen validator name (displayed publicly in the registry)
Step 1: Prepare
Approve the registry contract to pull your first month's BUSDC subscription fee. This is separate from your self-stake BESC.
javascript
// Approve BUSDC for subscription fee payment
const busdcContract = new ethers.Contract(BUSDC_ADDRESS, ERC20_ABI, signer);
await busdcContract.approve(REGISTRY_ADDRESS, ethers.parseEther("40"));Step 2: Register
Call registerValidator on the registry, sending your self-stake as msg.value:
javascript
const registry = new ethers.Contract(
"0x76bF888EB22f6d11AD8C2348847062db746647E0",
REGISTRY_ABI,
signer
);
const selfStake = ethers.parseEther("10000"); // 10,000 BESC minimum
await registry.registerValidator(
"My Validator Name", // name — shown publicly
500, // commission in basis points (500 = 5%)
true, // delegationEnabled — allow others to delegate
{ value: selfStake }
);Step 3: Wait for Approval
Your application enters a pending state. Existing active validators must vote to approve you via voteToApproveValidator(yourAddress). Approval requires more than 50% of active validators to vote in favor.
You can check your vote status:
javascript
const { votes, activeValidators } = await registry.getApprovalVotes(yourAddress);
console.log(`${votes} of ${activeValidators} votes received`);Step 4: Stay Active
Once approved, you must:
- Call
payFee()every 30 days to pay the 40 BUSDC subscription - There is a 7-day grace period after the due date before your validator is deactivated
- Maintain your self-stake above the minimum
javascript
// Pay subscription (ensure BUSDC is approved first)
await registry.payFee();Managing Your Validator
javascript
// Check your validator status
const info = await registry.getValidatorInfo(yourAddress);
console.log(info);
// Increase self-stake
await registry.increaseSelfStake({ value: ethers.parseEther("500") });
// Update commission (7-day cooldown between changes)
await registry.updateCommission(750); // 7.5%
// Enable/disable delegation
await registry.setDelegationEnabled(true);
// Require delegator approval before accepting stake
await registry.setRequireDelegatorApproval(true);Exiting as a Validator
javascript
// Signal intent to exit (triggers cooldown)
await registry.startValidatorExit();
// After cooldown completes:
await registry.exitValidator();
// Withdraw your self-stake
await registry.withdrawSelfStake(amount);Important Notes
- Your self-stake is locked in the contract while you are an active validator
- The
unbondCooldown(1 day) applies to delegators unstaking from you - The
commissionCooldown(7 days) limits how often you can change your commission rate - Validators who fail to pay the subscription fee within the grace period are deactivated — their stake is not slashed but they stop receiving rewards until they pay and reactivate
