Validator Registry
The SafudevPoweredValidatorRegistryV2 is the on-chain contract that manages the economic layer of BESC Hyperchain's validator system.
Contract Details
| Field | Value |
|---|---|
| Address | 0x76bF888EB22f6d11AD8C2348847062db746647E0 |
| Version | SafudevPoweredValidatorRegistryV2 v1.0.1 |
| Security Contact | security@bescfinancial.com |
| Total Staked | ~490,000 BESC |
| Total Transactions | 10,000+ |
Registry Parameters
| Parameter | Value | Description |
|---|---|---|
minSelfStake | 10,000 BESC | Minimum self-stake to register |
maxTotalStake | 20,000 BESC | Maximum total stake per validator |
maxCommission | 2,500 bps (25%) | Maximum commission rate |
busdcFee | 40 BUSDC | Subscription fee per period |
subscriptionPeriod | 30 days | How often the fee is due |
gracePeriod | 7 days | Grace period before deactivation |
unbondCooldown | 1 day | Wait time after undelegating |
commissionCooldown | 7 days | Wait time between commission changes |
Validator Lifecycle
APPLY → registerValidator(name, commission, delegationEnabled)
(must include minSelfStake BESC as msg.value)
│
▼
PENDING → Existing validators vote via voteToApproveValidator()
Requires supermajority (> 50% of active validators)
│
▼
ACTIVE → Validator receives reward distributions
Must call payFee() every 30 days (40 BUSDC)
│
├─ Grace period expires without fee → DEACTIVATED
├─ Governance vote → forceDeactivated
└─ Self-exit → startValidatorExit() → exitValidator()Key Functions
For Validators
solidity
// Register as a new validator (payable — send minSelfStake BESC)
function registerValidator(
string memory name,
uint16 commission, // basis points, e.g. 500 = 5%
bool delegationEnabled
) external payable;
// Pay monthly subscription fee (requires BUSDC approval first)
function payFee() external;
// Increase your self-stake
function increaseSelfStake() external payable;
// Withdraw self-stake (after exit process)
function withdrawSelfStake(uint256 amount) external;
// Update commission rate (subject to 7-day cooldown)
function updateCommission(uint16 newCommission) external;
// Begin validator exit process
function startValidatorExit() external;
// Approve or reject a delegator application
function approveDelegator(address delegator, bool status) external;For Delegators
solidity
// Delegate BESC to a validator (payable — send BESC amount)
function delegate(address validator) external payable;
// Undelegate from a validator
function undelegate(address validator, uint256 amount) external;
// Claim accumulated rewards
function claimRewards(address validator) external;
// Apply to delegate (if validator requires approval)
function applyToDelegate(
address validator,
string memory tgUsername,
string memory basicInfo
) external;For Governance (Validators Voting)
solidity
// Vote to approve a pending validator applicant
function voteToApproveValidator(address applicant) external;
// Vote to deactivate an existing validator
function voteToDeactivate(address target) external;Read Functions
solidity
// Get all active validators
function getValidators() external view returns (address[] memory);
// Get full info for a validator
function getValidatorInfo(address validator) external view returns (
string memory name,
uint256 selfStake,
uint256 totalStake,
uint16 commission,
bool delegationEnabled,
bool active,
uint256 lastFeePaid,
bool requireDelegatorApproval
);
// Get pending reward for any user
function getPendingReward(address user) external view returns (uint256);
// Get delegator info
function getDelegatorInfo(
address delegator,
address validator
) external view returns (uint256 stake, uint256 pending);Reward Sources
The registry contract tracks two reward sources:
| Source | Description |
|---|---|
| Block reward | 0.002 BESC forwarded by relayers after each block |
| Direct reward | Additional rewards forwarded by relayers from other sources |
Both are distributed identically — proportionally to stake across all active validators.
