Skip to content

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:

  1. Call payFee() every 30 days to pay the 40 BUSDC subscription
  2. There is a 7-day grace period after the due date before your validator is deactivated
  3. 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

BESC Hyperchain — Built for Institutions.