On-Chain Transaction Reference
Elastos DAO Governance Transactions
Every governance action is a specific transaction type on the ELA main chain. These are enforced by consensus; no wallet, application, or node can bypass them.
RegisterCR (0x21): Register as Elastos Council Candidate
Registers a candidate for the Elastos Council election.
Payload: CRInfo
| Field | Type | Size | Description |
|---|---|---|---|
Code | []byte | Variable | P-256 public key redemption script |
CID | Uint168 | 21 bytes | Contract ID derived from code |
DID | Uint168 | 21 bytes | Elastos DID identifier |
NickName | string | ≤ 100 | Display name |
Url | string | ≤ 100 | Information URL |
Location | uint64 | 8 bytes | Country code |
Signature | []byte | Variable | P-256 ECDSA signature |
Validation rules (from blockchain/txvalidator.go):
- CID must match the code's program hash
- DID must be a valid Elastos DID
- Nickname must be unique among active candidates
- Deposit amount must meet the minimum threshold
- Signature must be valid P-256
UnregisterCR (0x22): Withdraw Candidacy
Payload: UnregisterCR
| Field | Type | Description |
|---|---|---|
CID | Uint168 | Contract ID of the candidate |
Signature | []byte | Signature proving ownership |
UpdateCR (0x23): Update Candidate Info
Same payload structure as RegisterCR. Used to update nickname, URL, location, or DID information while keeping the same CID.
ReturnCRDepositCoin (0x24): Reclaim Elastos Council Deposit
Returns the deposit ELA to the former candidate after the required waiting period.
CRCProposal (0x25): Submit Formal Proposal
See Proposal System for the full payload structure.
CRCProposalReview (0x26): Council Member Review
Payload: CRCProposalReview
| Field | Type | Description |
|---|---|---|
ProposalHash | Uint256 | Hash of the proposal |
VoteResult | uint8 | 0 = approve, 1 = reject, 2 = abstain |
OpinionHash | Uint256 | Hash of opinion document |
OpinionData | []byte | Opinion content (≤ 1MB) |
DID | Uint168 | Council member's DID |
Signature | []byte | P-256 signature |
CRCProposalTracking (0x27): Track Proposal Progress
See Proposal System: Milestone Tracking for the full payload structure.
CRCAppropriation (0x28): Treasury Appropriation
Moves 10% of CR Assets to CR Expenses. This is a system transaction generated automatically by the chain; no user can create it manually.
Payload: CRCAppropriation (empty payload; the amount is calculated by the chain)
CRCProposalWithdraw (0x29): Request Fund Withdrawal
Payload: CRCProposalWithdraw
| Field | Type | Description |
|---|---|---|
ProposalHash | Uint256 | Hash of the approved proposal |
OwnerKey | []byte | Proposal owner's public key |
Recipient | Uint168 | Destination address |
Amount | Fixed64 | Amount to withdraw (in Sela) |
Signature | []byte | Owner's signature |
CRCProposalRealWithdraw (0x2a): Execute Withdrawal
Payload: CRCProposalRealWithdraw
| Field | Type | Description |
|---|---|---|
WithdrawTransactionHashes | []Uint256 | References to pending withdrawals |
This is a system transaction that executes approved withdrawals. Fee: 10,000 Sela per withdrawal.
CRAssetsRectify (0x2b): Rectify CR Asset UTXOs
System transaction that consolidates and cleans up the CR Assets address's UTXOs. Fee: 10,000 Sela.
CRCouncilMemberClaimNode (0x31): Claim Validator Node
See Council Member Guide: Claiming a Validator Node for the full payload structure.
BPoS Validator Transactions
RegisterProducer (0x09): Register as BPoS Validator
See BPoS Voting: Validator Registration for the full payload structure.
CancelProducer (0x0a): Deregister Producer
Payload: ProcessProducer
| Field | Type | Description |
|---|---|---|
OwnerKey | []byte | Producer owner's public key |
Signature | []byte | Signature proving ownership |
UpdateProducer (0x0b): Update Producer Info
Same payload as RegisterProducer. Updates any field except the owner key.
ReturnDepositCoin (0x0c): Reclaim Producer Deposit
Returns the producer deposit (2,000 ELA under BPoS; 5,000 ELA under legacy DPoS v1) after the required waiting period post-cancellation.
ActivateProducer (0x0d): Reactivate Producer
Payload: ActivateProducer
| Field | Type | Description |
|---|---|---|
NodePublicKey | []byte | Producer node's public key |
Signature | []byte | Signature proving ownership |
Evidence and Penalty Transactions
| Transaction | Code | Purpose |
|---|---|---|
IllegalProposalEvidence | 0x0e | Report a producer who made conflicting consensus proposals |
IllegalVoteEvidence | 0x0f | Report a producer who cast conflicting consensus votes |
IllegalBlockEvidence | 0x10 | Report a producer who signed conflicting blocks |
IllegalSidechainEvidence | 0x11 | Report sidechain misbehavior by a validator |
InactiveArbitrators | 0x12 | System tx marking inactive validators |
These are permanent on-chain records. A producer found Illegal has 200 ELA deducted from their deposit but can re-register by posting a new one.
System Transactions
| Transaction | Code | Purpose |
|---|---|---|
CoinBase | 0x00 | Block reward distribution (30/35/35 split) |
RevertToPOW | 0x41 | Emergency: revert to pure PoW consensus |
RevertToDPOS | 0x42 | Restore BPoS consensus after PoW fallback |
NextTurnDPOSInfo | 0x14 | Announce next round's validator set |
ProposalResult | 0x15 | Record proposal outcome on-chain |
RecordSponsor | 0x66 | Record block confirm sponsor |
Quick Reference Tables
All Governance Transaction Types (Sorted by Code)
| Code | Name | Category | Initiated By |
|---|---|---|---|
0x00 | CoinBase | System | Chain (auto) |
0x02 | TransferAsset | Transfer | Users (contains vote outputs) |
0x09 | RegisterProducer | BPoS | Producer candidates |
0x0a | CancelProducer | BPoS | Producers |
0x0b | UpdateProducer | BPoS | Producers |
0x0c | ReturnDepositCoin | BPoS | Former producers |
0x0d | ActivateProducer | BPoS | Inactive producers |
0x0e | IllegalProposalEvidence | Penalty | Anyone with evidence |
0x0f | IllegalVoteEvidence | Penalty | Anyone with evidence |
0x10 | IllegalBlockEvidence | Penalty | Anyone with evidence |
0x11 | IllegalSidechainEvidence | Penalty | Anyone with evidence |
0x12 | InactiveArbitrators | System | Chain (auto) |
0x14 | NextTurnDPOSInfo | System | Chain (auto) |
0x15 | ProposalResult | System | Chain (auto) |
0x21 | RegisterCR | Elastos DAO | Elastos Council candidates |
0x22 | UnregisterCR | Elastos DAO | Elastos Council candidates |
0x23 | UpdateCR | Elastos DAO | Elastos Council candidates |
0x24 | ReturnCRDepositCoin | Elastos DAO | Former Elastos Council members |
0x25 | CRCProposal | Elastos DAO | Council members |
0x26 | CRCProposalReview | Elastos DAO | Council members |
0x27 | CRCProposalTracking | Elastos DAO | Proposal owners |
0x28 | CRCAppropriation | System | Chain (auto) |
0x29 | CRCProposalWithdraw | Elastos DAO | Proposal owners |
0x2a | CRCProposalRealWithdraw | System | Chain (auto) |
0x2b | CRAssetsRectify | System | Chain (auto) |
0x31 | CRCouncilMemberClaimNode | Elastos DAO | Council members |
0x41 | RevertToPOW | Emergency | Chain (auto) |
0x42 | RevertToDPOS | Emergency | Chain (auto) |
0x60 | DposV2ClaimReward | BPoS | Voters (pledged stake) |
0x61 | DposV2ClaimRewardRealWithdraw | System | Chain (auto) |
0x62 | ExchangeVotes | BPoS | ELA holders |
0x63 | Voting | BPoS | ELA holders |
0x64 | ReturnVotes | BPoS | Voters |
0x65 | VotesRealWithdraw | System | Chain (auto) |
All Governance RPC Methods
| Method | Category | Description |
|---|---|---|
listcrcandidates | Elastos DAO | All Elastos Council candidates |
listcurrentcrs | Elastos DAO | Current council members |
listnextcrs | Elastos DAO | Next term council members |
listcrproposalbasestate | Elastos DAO | Proposal states |
getcrproposalstate | Elastos DAO | Specific proposal state |
getproposaldraftdata | Elastos DAO | Proposal draft document |
getsecretarygeneral | Elastos DAO | Current secretary general |
getcrrelatedstage | Elastos DAO | Elastos Council voting/election stage |
getcommitteecanuseamount | Elastos DAO | Available Elastos DAO funds |
getcrdepositcoin | Elastos DAO | Elastos Council member deposit info |
listproducers | BPoS | All registered validators |
producerstatus | BPoS | Validator registration status |
getarbitersinfo | BPoS | Current validator details |
getarbiterpeersinfo | BPoS | DPoS P2P peer info |
getarbitratorgroupbyheight | BPoS | Validators at specific height |
votestatus | BPoS | Voting statistics |
getdepositcoin | BPoS | Validator deposit info |
getalldetaileddposv2votes | BPoS | Detailed vote info |
getvoterights | BPoS | Voter's rights by address |
dposv2rewardinfo | BPoS | BPoS voter reward info |
getdposv2info | BPoS | BPoS system info |
sendrawtransaction | General | Broadcast signed transaction |
createrawtransaction | General | Build unsigned transaction |
signrawtransactionwithkey | General | Sign transaction |
listunspent | UTXO | List unspent outputs |
getutxosbyamount | UTXO | Find UTXOs for spending |
Elastos Council Proposal Type Codes
| Code | Type | Description |
|---|---|---|
0x0000 | Normal | Standard funding proposal |
0x0100 | ELIP | Elastos Improvement Proposal |
0x0101 | FLOWELIP | Process ELIP |
0x0102 | INFOELIP | Informational ELIP |
0x0200 | MainChainUpgradeCode | Main chain upgrade |
0x0201 | DIDUpgradeCode | DID chain upgrade |
0x0202 | ETHUpgradeCode | ESC chain upgrade |
0x0400 | SecretaryGeneral | Secretary General election |
0x0401 | ChangeProposalOwner | Transfer proposal ownership |
0x0402 | CloseProposal | Terminate active proposal |
0x0410 | RegisterSideChain | Register new sidechain |
0x0500 | ReserveCustomID | Reserve custom DID name |
0x0501 | ReceiveCustomID | Receive custom DID name |
0x0502 | ChangeCustomIDFee | Change custom ID fee |