PageSourceSearch

https://elastos-docs.onrender.com/assets/js/3d966905.4e6ccab5.js

js elastos-docs.onrender.com collected 2026-10-03 11:43:42 UTC 30,010 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkelastos_docs=globalThis.webpackChunkelastos_docs||[]).push([[8845],{81339(e,s,n){n.r(s),n.d(s,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"blockchain/concepts/staking-guide","title":"BPoS Staking Guide","description":"Bonded Proof of Stake (BPoS) mechanics on the Elastos main chain\u2014emissions, reward splits, pledge parameters, and validator economics.","source":"@site/docs/blockchain/concepts/staking-guide.md","sourceDirName":"blockchain/concepts","slug":"/blockchain/concepts/staking-guide","permalink":"/blockchain/concepts/staking-guide","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":15,"frontMatter":{"type":"concept","sidebar_position":15,"title":"BPoS Staking Guide","description":"Bonded Proof of Stake (BPoS) mechanics on the Elastos main chain\u2014emissions, reward splits, pledge parameters, and validator economics.","chains":["main"],"keywords":["Elastos","World Computer","Blockchain","BPoS","staking","ELA","validator","rewards"],"image":"/img/og-blockchain.jpg"},"sidebar":"blockchainSidebar","previous":{"title":"The Dual-Curve Design","permalink":"/blockchain/concepts/dual-curve"},"next":{"title":"EID Identity Chain","permalink":"/blockchain/concepts/identity-chain"}}');var r=n(74848),i=n(28453);const o={type:"concept",sidebar_position:15,title:"BPoS Staking Guide",description:"Bonded Proof of Stake (BPoS) mechanics on the Elastos main chain\u2014emissions, reward splits, pledge parameters, and validator economics.",chains:["main"],keywords:["Elastos","World Computer","Blockchain","BPoS","staking","ELA","validator","rewards"],image:"/img/og-blockchain.jpg"},d="BPoS Staking Guide",l={},a=[{value:"What is BPoS?",id:"what-is-bpos",level:2},{value:"Staking rules (from chain parameters)",id:"staking-rules-from-chain-parameters",level:2},{value:"Reward structure",id:"reward-structure",level:2},{value:"Staking rights formula",id:"staking-rights-formula",level:2},{value:"Equity tokens",id:"equity-tokens",level:2},{value:"Pledge duration and extensions",id:"pledge-duration-and-extensions",level:2},{value:"Validator requirements",id:"validator-requirements",level:2},{value:"Consensus rotation",id:"consensus-rotation",level:2},{value:"Penalties",id:"penalties",level:2},{value:"Tips for choosing a validator",id:"tips-for-choosing-a-validator",level:2},{value:"Key parameters (from code)",id:"key-parameters-from-code",level:2},{value:"Quick reference",id:"quick-reference",level:2},{value:"Terms used on this page",id:"terms-used-on-this-page",level:2}];function c(e){const s={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",mermaid:"mermaid",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.header,{children:(0,r.jsx)(s.h1,{id:"bpos-staking-guide",children:"BPoS Staking Guide"})}),"\n",(0,r.jsxs)(s.p,{children:["This guide documents ",(0,r.jsx)(s.strong,{children:"Bonded Proof of Stake (BPoS)"})," on the Elastos main chain: emissions, reward distribution, pledge rules, and validator economics. Parameters below are verified from ",(0,r.jsx)(s.strong,{children:"Elastos.ELA"})," source (",(0,r.jsx)(s.strong,{children:"DPoS v2"}),", activated at block height ",(0,r.jsx)(s.strong,{children:"1,405,000"}),")."]}),"\n",(0,r.jsxs)(s.p,{children:["For a step-by-step walkthrough using Essentials (stake, vote, unstake), see ",(0,r.jsx)(s.a,{href:"../../blockchain/users/stake-ela",children:"Stake ELA"}),"."]}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"BPoS"})," replaces the earlier delegated model with ",(0,r.jsx)(s.strong,{children:"bonded"})," voting: you ",(0,r.jsx)(s.strong,{children:"lock (stake) ELA"}),", then ",(0,r.jsx)(s.strong,{children:"pledge it to a validator (vote)"})," for a ",(0,r.jsx)(s.strong,{children:"pledge window"})," you choose (within chain min/max). ",(0,r.jsx)(s.strong,{children:"Rewards are earned from that vote (pledge), not from locking ELA alone"}),"; the pledge weights how rewards flow between you, validators, and the protocol."]}),"\n",(0,r.jsx)(s.mermaid,{value:'pie title Block Reward Distribution\n    "AuxPoW Miners (35%)" : 35\n    "BPoS \u2014 Node Operators (8.75%)" : 8.75\n    "BPoS \u2014 Voters (26.25%)" : 26.25\n    "Elastos DAO Treasury (30%)" : 30'}),"\n",(0,r.jsx)(s.h2,{id:"what-is-bpos",children:"What is BPoS?"}),"\n",(0,r.jsxs)(s.p,{children:["Elastos upgraded consensus from ",(0,r.jsx)(s.strong,{children:"DPoS"})," to ",(0,r.jsx)(s.strong,{children:"BPoS"}),". Token holders ",(0,r.jsx)(s.strong,{children:"lock (bond)"})," ELA, then ",(0,r.jsx)(s.strong,{children:"cast votes"})," (pledges) toward ",(0,r.jsx)(s.strong,{children:"block-producing validators"})," (supernodes). ",(0,r.jsx)(s.strong,{children:"Earning rewards requires an active vote (pledge); locking ELA without voting does not earn."})]}),"\n",(0,r.jsxs)(s.p,{children:["The active set currently includes ",(0,r.jsx)(s.strong,{children:"69"})," BPoS validators elected through bonded voting."]}),"\n",(0,r.jsx)(s.p,{children:"At a high level:"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Voters"})," lock ELA (stake) and ",(0,r.jsx)(s.strong,{children:"pledge it to eligible validators"})," for a defined period\u2014that pledge is what earns a share of emissions."]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Elected validators"})," produce blocks and receive a protocol-defined share of emissions; ",(0,r.jsx)(s.strong,{children:"voters"})," (pledged stake) receive the remainder of the validator bucket per consensus rules."]}),"\n"]}),"\n",(0,r.jsx)(s.admonition,{title:"Why bonding matters",type:"info",children:(0,r.jsxs)(s.p,{children:["BPoS ties voting power to ",(0,r.jsx)(s.strong,{children:"pledged duration"})," and stake, aligning long-term participation with network security and validator accountability."]})}),"\n",(0,r.jsx)(s.h2,{id:"staking-rules-from-chain-parameters",children:"Staking rules (from chain parameters)"}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Rule"}),(0,r.jsx)(s.th,{children:"Detail"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Minimum pledge"})}),(0,r.jsxs)(s.td,{children:[(0,r.jsx)(s.strong,{children:"10 days"})," (",(0,r.jsx)(s.strong,{children:"7,200"})," blocks)"]})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Maximum pledge"})}),(0,r.jsxs)(s.td,{children:[(0,r.jsx)(s.strong,{children:"1,000 days"})," (",(0,r.jsx)(s.strong,{children:"720,000"})," blocks)"]})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Voting weight"})}),(0,r.jsxs)(s.td,{children:[(0,r.jsx)(s.strong,{children:"1"})," staked ELA = ",(0,r.jsx)(s.strong,{children:"1"})," equity token for voting"]})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Rewards"})}),(0,r.jsxs)(s.td,{children:["Accrue from ",(0,r.jsx)(s.strong,{children:"active votes"})," (pledged stake); depend on amount pledged, pledge duration, and validator performance"]})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Pledge changes"})}),(0,r.jsxs)(s.td,{children:["Duration may be ",(0,r.jsx)(s.strong,{children:"extended"}),"; it ",(0,r.jsx)(s.strong,{children:"cannot"})," be shortened"]})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Unstake while voting"})}),(0,r.jsxs)(s.td,{children:["ELA committed to ",(0,r.jsx)(s.strong,{children:"active votes"})," cannot be unstaked until the ",(0,r.jsx)(s.strong,{children:"pledge expires"})]})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Validator eligibility"})}),(0,r.jsx)(s.td,{children:"Validators must meet registration and staking requirements to be eligible for election"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"After expiry"})}),(0,r.jsxs)(s.td,{children:["You ",(0,r.jsx)(s.strong,{children:"must re-vote"})," after pledge ends to keep earning"]})]})]})]}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Block time note:"})," Elastos main chain targets a ",(0,r.jsx)(s.strong,{children:"2-minute"})," block interval; ",(0,r.jsx)(s.strong,{children:"7,200"})," / ",(0,r.jsx)(s.strong,{children:"720,000"})," blocks correspond to about ",(0,r.jsx)(s.strong,{children:"10"})," / ",(0,r.jsx)(s.strong,{children:"1,000"})," days at steady cadence. Use on-chain height for exact timing."]}),"\n",(0,r.jsx)(s.admonition,{title:"Pledge is binding for its term",type:"warning",children:(0,r.jsxs)(s.p,{children:["Until the pledge period ends, you cannot free ELA that is still allocated to votes. Plan liquidity and unstaking around ",(0,r.jsx)(s.strong,{children:"expiry"})," and ",(0,r.jsx)(s.strong,{children:"re-voting"}),"."]})}
1),"\n",(0,r.jsx)(s.h2,{id:"reward-structure",children:"Reward structure"}),"\n",(0,r.jsx)(s.p,{children:"Block rewards split at the protocol level:"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"35%"}),": miners (AuxPoW)"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"35%"}),": BPoS validators and voters (pledged stake)"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"30%"}),": Elastos DAO treasury"]}),"\n"]}),"\n",(0,r.jsxs)(s.p,{children:["Of the ",(0,r.jsx)(s.strong,{children:"35%"})," validator share, consensus allocates ",(0,r.jsx)(s.strong,{children:"25%"})," to the ",(0,r.jsx)(s.strong,{children:"node operator"})," and ",(0,r.jsx)(s.strong,{children:"75%"})," to ",(0,r.jsx)(s.strong,{children:"voters"})," (token holders with ",(0,r.jsx)(s.strong,{children:"active pledges"})," to validators). Rewards are distributed ",(0,r.jsx)(s.strong,{children:"automatically"})," in proportion to pledged stake and pledge-related weighting as defined by the chain."]}),"\n",(0,r.jsxs)(s.p,{children:["The ",(0,r.jsx)(s.strong,{children:"30%"})," treasury slice funds Elastos DAO operations and ecosystem programs; it is ",(0,r.jsx)(s.strong,{children:"not"})," part of the validator\u2013voter split. The ",(0,r.jsx)(s.strong,{children:"35%"})," AuxPoW allocation pays merged-mining participants securing the main chain\u2019s proof-of-work anchor."]}),"\n",(0,r.jsx)(s.admonition,{title:"Validator choice affects yield",type:"tip",children:(0,r.jsxs)(s.p,{children:["Compare ",(0,r.jsx)(s.strong,{children:"uptime"}),", ",(0,r.jsx)(s.strong,{children:"commission"}),", and ",(0,r.jsx)(s.strong,{children:"total votes"})," when selecting validators; poor performance can reduce effective returns for that node\u2019s voters."]})}),"\n",(0,r.jsx)(s.h2,{id:"staking-rights-formula",children:"Staking rights formula"}),"\n",(0,r.jsx)(s.p,{children:"Staking rights determine your share of rewards relative to other voters on the same validator. The formula rewards longer commitments with a logarithmic multiplier:"}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{children:"N = E \xd7 log(T / 720)\n"})}),"\n",(0,r.jsxs)(s.p,{children:["Where ",(0,r.jsx)(s.strong,{children:"E"})," is the number of staked ELA and ",(0,r.jsx)(s.strong,{children:"T"})," is the pledge time in blocks (7,200 \u2264 T \u2264 720,000)."]}),"\n",(0,r.jsxs)(s.p,{children:["The logarithmic scaling means the growth coefficient ranges from ",(0,r.jsx)(s.strong,{children:"1x"})," to roughly ",(0,r.jsx)(s.strong,{children:"3x"})," as pledge time increases from the minimum (10 days) to the maximum (1,000 days). Doubling your pledge duration does not double your rights \u2014 it provides a diminishing but meaningful boost that rewards patient participants."]}),"\n",(0,r.jsxs)(s.p,{children:["When you ",(0,r.jsx)(s.strong,{children:"extend"})," an existing pledge, staking rights and yield rates are recalculated in real time."]}),"\n",(0,r.jsx)(s.h2,{id:"equity-tokens",children:"Equity tokens"}),"\n",(0,r.jsxs)(s.p,{children:["When you lock ELA for BPoS, the protocol converts it into ",(0,r.jsx)(s.strong,{children:"equity tokens"})," \u2014 purpose-specific voting units. One locked ELA produces equity tokens for each of these activities:"]}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Equity token"}),(0,r.jsx)(s.th,{children:"Used for"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"BPoS staking"})}),(0,r.jsx)(s.td,{children:"Pledging to validators for block production rewards"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"CR election"})}),(0,r.jsx)(s.td,{children:"Voting for Cyber Republic Council candidates"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Proposal opposition"})}),(0,r.jsx)(s.td,{children:"Voting against CRC proposals during the referendum period"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Impeachment"})}),(0,r.jsx)(s.td,{children:"Voting to impeach sitting CR Council members"})]})]})]}),"\n",(0,r.jsx)(s.p,{children:"Each equity token can only be used for its designated purpose. A single BPoS equity token can be pledged to one validator at a time, but you can split tokens across multiple validators."}),"\n",(0,r.jsxs)(s.p,{children:["To convert equity tokens back to liquid ELA, ",(0,r.jsx)(s.strong,{children:"all"})," equity tokens must be free (not actively committed to any vote or pledge). If any equity token is still locked in an activity, you cannot convert back. Equity tokens are non-transferable \u2014 they cannot be traded or sent to other addresses."]}),"\n",(0,r.jsx)(s.h2,{id:"pledge-duration-and-extensions",children:"Pledge duration and extensions"}),"\n",(0,r.jsxs)(s.p,{children:["You may ",(0,r.jsx)(s.strong,{children:"extend"})," a pledge (longer commitment) where the protocol allows; you ",(0,r.jsx)(s.strong,{children:"cannot shorten"})," an existing pledge below what the chain has already recorded. Extensions recalculate staking rights using the formula above. Read the confirmation screen carefully before signing."]}),"\n",(0,r.jsx)(s.h2,{id:"validator-requirements",children:"Validator requirements"}),"\n",(0,r.jsx)(s.p,{children:"To register as a BPoS validator:"}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Requirement"}),(0,r.jsx)(s.th,{children:"Detail"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Deposit"})}),(0,r.jsxs)(s.td,{children:[(0,r.jsx)(s.strong,{children:"2,000 ELA"})," pledged at registration"]})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Minimum deposit pledge"})}),(0,r.jsxs)(s.td,{children:[(0,r.jsx)(s.strong,{children:"72,000"})," blocks (~",(0,r.jsx)(s.strong,{children:"100 days"}),")"]})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Activation threshold"})}),(0,r.jsxs)(s.td,{children:["Total staking rights from all voters must reach ",(0,r.jsx)(s.strong,{children:"80,000"})]})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Deposit expiry"})}),(0,r.jsx)(s.td,{children:"When the deposit pledge expires, the node automatically becomes inactive"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Max voter pledge"})}),(0,r.jsx)(s.td,{children:"Voters pledging to a validator cannot set a pledge duration exceeding the node's deposit expiry"})]})]})]}),"\n",(0,r.jsxs)(s.p,{children:["After registration, the node starts in an ",(0,r.jsx)(s.strong,{children:"inactive"})," state. It cannot produce blocks but can begin accepting voter pledges. Once aggregate staking rights cross ",(0,r.jsx)(s.strong,{children:"80,000"}),", the node activates and enters the consensus rotation."]}),"\n",(0,r.jsx)(s.mermaid,{value:"stateDiagram-v2\n    [*] --\x3e Registered: Register with 2000 ELA\n    Registered --\x3e Inactive: Awaiting staking rights\n    Inactive --\x3e Active: Staking rights >= 80,000\n    Active --\x3e Arbitrator: Selected for consensus round\n    Arbitrator --\x3e Active: Round complete\n    Active --\x3e Inactive: Staking rights < 80,000\\nor deposit expired\n    Inactive --\x3e [*]: Unregister\n    Active --\x3e Invalid: Malicious behavior detected"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"12 CRC nodes"})," are active by default as part of the Elastos Council validator set. Voters cannot stake on CRC nodes \u2014 all block rewards from CRC nodes go directly to their operators."]}),"\n",(0,r.jsx)(s.h2,{id:"consensus-rotation",children:"Consensus rotation"}),"\n",(0,r.jsxs)(s.p,{children:["Every ",(0,r.jsx)(s.strong,{children:"36 block heights"})," constitutes one arbitration cycle. At the start of each cycle, ",(0,r.jsx)(s.strong,{children:"36 nodes"})," are randomly selected from all active validators to serve as arbitrators for that cycle. This random selection gives all active validators equal opportunity to participate in consensus, regardless of their total staking rights."]}),"\n",(0,r.jsxs)(s.p,{children:["As a validator accumulates more staking rights, the per-token yield for its voters ",(0,r.jsx)(s.strong,{children:"decreases"})," \u2014 this natural dilution encourages voters to spread their pledges across validators with lower total rights rather than concentrating on a few popular nodes."]}),"\n",(0,r.jsx)(s.h2,{id:"penalties",children:"Penalties"}),"\n",(0,r.jsx)(s.p,{children:"Validator misbehavior triggers penalties that affect both the node operator and its voters:"}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Violation"}),(0,r.jsx)(s.th,{children:"Description"}),(0,r.jsx)(s.th,{children:"Penalty"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Negligence"})}),(0,r.jsxs)(s.td,{children:["Failing to produce a block for ",(0,r.jsx)(s.strong,{children:"3 consecutive"})," assigned slots"]}),(0,r.jsx)(s.td,{children:"Node and all stakers penalized; reduced future rewards"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Malicious behavior"})}),(0,r.jsx)(s.td,{children:"Double-signing blocks or other provably malicious acts"}),(0,r.jsxs)(s.td,{children:[(0,r.jsx)(s.strong,{children:"2,000 ELA deposit confiscated and burned"}),";
1 node permanently marked invalid"]})]})]})]}),"\n",(0,r.jsxs)(s.p,{children:["Confiscated tokens are sent to the burn address and removed from circulation permanently. When a node's deposit falls below ",(0,r.jsx)(s.strong,{children:"2,000 ELA"})," or its aggregate staking rights drop below ",(0,r.jsx)(s.strong,{children:"80,000"}),", it becomes inactive and stops earning rewards."]}),"\n",(0,r.jsx)(s.admonition,{title:"Validator quality matters",type:"warning",children:(0,r.jsx)(s.p,{children:"As a voter, you share in your validator's penalties. Choose nodes with strong uptime records and avoid validators close to the 80,000 staking rights threshold where a few withdrawals could deactivate the node."})}),"\n",(0,r.jsx)(s.h2,{id:"tips-for-choosing-a-validator",children:"Tips for choosing a validator"}),"\n",(0,r.jsxs)(s.ol,{children:["\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Reward optimization"}),": Validators with relatively ",(0,r.jsx)(s.strong,{children:"lower"})," total staking rights offer higher per-ELA yields due to the dilution effect. Avoid over-concentrated validators."]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Stability margin"}),": If a validator's total staking rights are close to ",(0,r.jsx)(s.strong,{children:"80,000"}),", a few voters withdrawing could deactivate it. Prefer nodes with a comfortable margin above the threshold."]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Pledge time alignment"}),": Check the distribution of pledge times on a validator. Choose nodes where most voters have pledge durations equal to or longer than yours \u2014 a wave of short-term pledge expirations could destabilize the node."]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Operational quality"}),": Mining rewards are not everything. Check the validator's ",(0,r.jsx)(s.strong,{children:"block signature rate"})," and ",(0,r.jsx)(s.strong,{children:"block generation rate"}),". A validator with poor uptime or a history of missed blocks will cost you rewards and may trigger negligence penalties."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(s.h2,{id:"key-parameters-from-code",children:"Key parameters (from code)"}),"\n",(0,r.jsxs)(s.p,{children:["These values come from ",(0,r.jsx)(s.strong,{children:"Elastos.ELA"})," consensus and chain configuration. ",(0,r.jsx)(s.strong,{children:"Heights"})," and ",(0,r.jsx)(s.strong,{children:"block counts"})," are exact on-chain; ",(0,r.jsx)(s.strong,{children:"day"})," estimates assume the ",(0,r.jsx)(s.strong,{children:"~2 minute"})," main-chain block time. Use a block explorer for precise wall-clock estimates around upgrades or variance."]}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Parameter"}),(0,r.jsx)(s.th,{children:"Value"}),(0,r.jsx)(s.th,{children:"Source"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"BPoS activation"}),(0,r.jsxs)(s.td,{children:["Height ",(0,r.jsx)(s.strong,{children:"1,405,000"})]}),(0,r.jsx)(s.td,{children:(0,r.jsx)(s.code,{children:"config.go"})})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"Min pledge duration"}),(0,r.jsxs)(s.td,{children:[(0,r.jsx)(s.strong,{children:"7,200"})," blocks (~",(0,r.jsx)(s.strong,{children:"10"})," days)"]}),(0,r.jsx)(s.td,{children:"Chain params"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"Max pledge duration"}),(0,r.jsxs)(s.td,{children:[(0,r.jsx)(s.strong,{children:"720,000"})," blocks (~",(0,r.jsx)(s.strong,{children:"1,000"})," days)"]}),(0,r.jsx)(s.td,{children:"Chain params"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"Active validators"}),(0,r.jsxs)(s.td,{children:[(0,r.jsx)(s.strong,{children:"69"})," BPoS validators"]}),(0,r.jsx)(s.td,{children:"Consensus params"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"Backup candidates"}),(0,r.jsx)(s.td,{children:"Configurable pool"}),(0,r.jsx)(s.td,{children:"Consensus params"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"Inactive penalty"}),(0,r.jsxs)(s.td,{children:["After ",(0,r.jsx)(s.strong,{children:"1,440"})," rounds (~",(0,r.jsx)(s.strong,{children:"2"})," days)"]}),(0,r.jsx)(s.td,{children:(0,r.jsx)(s.code,{children:"MaxInactiveRounds"})})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"Node reward share"}),(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"25%"})}),(0,r.jsx)(s.td,{children:"Consensus rules"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"Voter (pledged stake) reward share"}),(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"75%"})}),(0,r.jsx)(s.td,{children:"Consensus rules"})]})]})]}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Inactive validators:"})," After ",(0,r.jsx)(s.strong,{children:"MaxInactiveRounds"})," (",(0,r.jsx)(s.strong,{children:"1,440"})," rounds, roughly ",(0,r.jsx)(s.strong,{children:"~2 days"}
1)," at nominal round timing), penalty logic can apply per consensus; favor validators with strong ",(0,r.jsx)(s.strong,{children:"uptime"})," when voting."]}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Backup set:"})," A configurable pool of backup nodes compete for promotion when elected seats turn over; as a voter you still pick among ",(0,r.jsx)(s.strong,{children:"eligible"})," validators presented in the wallet. The protocol manages rotation and arbitration."]}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"BPoS cutover:"})," Before height ",(0,r.jsx)(s.strong,{children:"1,405,000"}),", legacy DPoS rules applied; ",(0,r.jsx)(s.strong,{children:"BPoS"})," behavior and parameters documented here apply ",(0,r.jsx)(s.strong,{children:"at and after"})," that activation height on networks that adopted the release containing BPoS (DPoS v2)."]}),"\n",(0,r.jsxs)(s.p,{children:["For operator setup, ",(0,r.jsx)(s.strong,{children:"supernode"})," deployment, and RPC details, see the docs for ",(0,r.jsx)(s.strong,{children:"BPoS supernodes"}),", ",(0,r.jsx)(s.strong,{children:"full nodes"}),", and main-chain ",(0,r.jsx)(s.strong,{children:"configuration"})," in this site\u2019s ",(0,r.jsx)(s.strong,{children:"Nodes"})," section."]}),"\n",(0,r.jsx)(s.h2,{id:"quick-reference",children:"Quick reference"}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"You want to\u2026"}),(0,r.jsx)(s.th,{children:"Action"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"Start earning BPoS rewards"}),(0,r.jsxs)(s.td,{children:[(0,r.jsx)(s.strong,{children:"Stake"})," (lock ELA), then ",(0,r.jsx)(s.strong,{children:"cast votes"})," (pledge to a validator) with pledge in range"]})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"Keep earning after pledge expires"}),(0,r.jsxs)(s.td,{children:[(0,r.jsx)(s.strong,{children:"Re-vote"})," with a new pledge\u2014locking alone does not restart rewards"]})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"Free ELA for spending"}),(0,r.jsxs)(s.td,{children:["Wait until ",(0,r.jsx)(s.strong,{children:"no active vote lock"}),", then ",(0,r.jsx)(s.strong,{children:"Unstake"})]})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"Choose validators carefully"}),(0,r.jsxs)(s.td,{children:["Review ",(0,r.jsx)(s.strong,{children:"uptime"}),", ",(0,r.jsx)(s.strong,{children:"commission"}),", and ",(0,r.jsx)(s.strong,{children:"total votes"})," in the voting UI before casting"]})]})]})]}),"\n",(0,r.jsxs)(s.p,{children:["Validators should consult operator runbooks for ",(0,r.jsx)(s.strong,{children:"registration"}),", ",(0,r.jsx)(s.strong,{children:"keys"}),", and ",(0,r.jsx)(s.strong,{children:"penalty"})," recovery. End-user wallet steps live in ",(0,r.jsx)(s.a,{href:"../../blockchain/users/stake-ela",children:"Stake ELA"}),"."]}),"\n",(0,r.jsx)(s.h2,{id:"terms-used-on-this-page",children:"Terms used on this page"}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Term"}),(0,r.jsx)(s.th,{children:"Meaning"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"BPoS"})}),(0,r.jsxs)(s.td,{children:["Bonded Proof of Stake: lock ELA (",(0,r.jsx)(s.strong,{children:"stake"}),"), then ",(0,r.jsx)(s.strong,{children:"vote"})," (pledge) for a duration on main chain; rewards follow the vote"]})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Pledge"})}),(0,r.jsx)(s.td,{children:"The period (in blocks/days) your vote commitment stays locked"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Staking rights"})}),(0,r.jsxs)(s.td,{children:["Weighted voting power calculated as ",(0,r.jsx)(s.code,{children:"E \xd7 log(T / 720)"})," from stake amount and pledge duration"]})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Equity token"})}),(0,r.jsx)(s.td,{children:"Purpose-specific voting unit created when ELA is locked (BPoS staking, CR election, proposal opposition, impeachment)"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Supernode"})}),(0,r.jsx)(s.td,{children:"A registered validator eligible to produce blocks when in the active or backup sets"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Arbitration cycle"})}),(0,r.jsx)(s.td,{children:"A 36-block period during which 36 randomly selected validators serve as arbitrators"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"CRC node"})}),(0,r.jsx)(s.td,{children:"One of 12 Council-operated nodes that are always active and cannot accept voter pledges"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Elastos DAO"})}),(0,r.jsx)(s.td,{children:"The governance body funded by the 30% treasury allocation"})]})]})]}),"\n",(0,r.jsxs)(s.p,{children:["Official builds and release notes for ",(0,r.jsx)(s.strong,{children:"Elastos.ELA"})," remain the source of truth if consensus parameters change in a future fork; always verify ",(0,r.jsx)(s.strong,{children:"activation height"})," and ",(0,r.jsx)(s.strong,{children:"params"})," for the network you use."]})]})}function h(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},28453(e,s,n){n.d(s,{R:()=>o,x:()=>d});var t=n(96540);const r={},i=t.createContext(r);function o(e){const s=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),t.createElement(i.Provider,{value:s},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.