Transaction Types
The ELA main chain supports 40+ transaction types beyond simple transfers. Each type has a unique hex code and carries a type-specific payload.
UTXO Model
The ELA main chain uses the UTXO model (like Bitcoin), not the account model used by Ethereum and ESC.
Base Transactions
| Code | Name | Description |
|---|---|---|
0x00 | CoinBase | Block reward distribution |
0x01 | RegisterAsset | Register a new asset type |
0x02 | TransferAsset | Standard ELA transfer |
0x03 | Record | Data recording on-chain |
0x05 | SideChainPow | Sidechain PoW proof submission |
Cross-Chain Transactions
| Code | Name | Description |
|---|---|---|
0x06 | RechargeToSideChain | Deposit ELA to a sidechain |
0x07 | WithdrawFromSideChain | Withdraw ELA from a sidechain |
0x08 | TransferCrossChainAsset | Cross-chain transfer (user-facing deposit tx) |
0x2c | ReturnCrossChainDepositCoin | Return failed cross-chain deposits |
0x51 | ReturnSideChainDepositCoin | Return failed sidechain deposits |
BPoS Validator Transactions
| Code | Name | Description |
|---|---|---|
0x09 | RegisterProducer | Register as a BPoS validator (requires deposit) |
0x0a | CancelProducer | Cancel producer registration |
0x0b | UpdateProducer | Update producer info (owner key, node key, URL) |
0x0c | ReturnDepositCoin | Reclaim deposit after cancellation |
0x0d | ActivateProducer | Re-activate after inactivity |
Illegal Evidence Transactions
| Code | Name | Description |
|---|---|---|
0x0e | IllegalProposalEvidence | Report conflicting DPoS proposals |
0x0f | IllegalVoteEvidence | Report conflicting DPoS votes |
0x10 | IllegalBlockEvidence | Report conflicting blocks |
0x11 | IllegalSidechainEvidence | Report sidechain misbehavior |
0x12 | InactiveArbitrators | Mark inactive arbiters |
Council (DAO) Transactions
| Code | Name | Description |
|---|---|---|
0x21 | RegisterCR | Register as Council candidate |
0x22 | UnregisterCR | Unregister candidacy |
0x23 | UpdateCR | Update Council member info |
0x24 | ReturnCRDepositCoin | Reclaim Council deposit |
0x25 | CRCProposal | Submit a governance proposal |
0x26 | CRCProposalReview | Council member reviews a proposal |
0x27 | CRCProposalTracking | Track proposal milestone progress |
0x28 | CRCAppropriation | Appropriate funds from treasury |
0x29 | CRCProposalWithdraw | Request fund withdrawal |
0x2a | CRCProposalRealWithdraw | Execute fund transfer |
0x2b | CRAssetsRectify | Rectify CR asset UTXOs |
0x31 | CRCouncilMemberClaimNode | Council member claims DPoS node |
System Transitions
| Code | Name | Description |
|---|---|---|
0x41 | RevertToPOW | Switch consensus to pure PoW |
0x42 | RevertToDPOS | Restore DPoS consensus |
BPoS Staking Transactions
| Code | Name | Description |
|---|---|---|
0x60 | DposV2ClaimReward | Claim BPoS voter rewards |
0x61 | DposV2ClaimRewardRealWithdraw | Execute reward withdrawal |
0x62 | ExchangeVotes | Convert ELA to stake votes |
0x63 | Voting | Cast BPoS votes with lock time |
0x64 | ReturnVotes | Return staked votes |
0x65 | VotesRealWithdraw | Execute vote return |
NFT Transactions
| Code | Name | Description |
|---|---|---|
0x71 | CreateNFT | Create NFT from staking position |
0x72 | NFTDestroyFromSideChain | Destroy NFT returning from sidechain |
Transaction Structure
Every main chain transaction contains:
| Field | Description |
|---|---|
| Version | Transaction format version |
| TxType | Type code from the tables above |
| PayloadVersion | Version of the type-specific payload |
| Payload | Type-specific data |
| Inputs | UTXO references being spent |
| Outputs | New UTXOs being created |
| LockTime | Block height before which the tx cannot be mined |
| Programs | Signature scripts proving input ownership |
Resources
- Main Chain Internals — full architecture reference
- Transaction Reference — governance transaction details
- Main Chain API — RPC methods for submitting transactions