System Smart Contracts

eRon Blockchain prides itself on its technology-agnostic nature, having the capability to seamlessly integrate or adapt any module within its architecture, while accommodating diverse consensus mechanisms and runtime execution environments. By default, eRon Blockchain has an EVM (Ethereum Virtual Machine) execution environment, complemented by a predefined suite of system smart contracts essential for platform functionality.

The most important eRon Blockchain smart contracts compatible with BNB Smart Chain and Ethereum, are:

Staking contract: Facilitating the management of validator delegations and the active validator set.

SlashingIndicator:Designed to penalize inactive validators through slashing mechanisms.

SystemReward:Serving as the treasury for system rewards, catering to relay fees and other operational expenses.

Moreover, the eRon Blockchain introduces its own set of smart contracts, including:

StakingPool:A specialized staking pool offering cost-effective access to staking functionalities.

Governance:Incorporating the default on-chain governance model inspired by Compound’s Alpha governance.

ChainConfig:Providing configuration parameters essential for consensus mechanisms, governed by on-chain protocols.

RuntimeUpgrade:Enabling seamless upgrades to system contract runtimes.

DeployerProxy:Serving as a proxy for managing smart contract deployment processes.

The adoption of the Parlia consensus engine incentivizes users to actively participate in staking activities and vote for trustworthy validators, thereby enhancing the decentralization and trustlessness of the eRon ecosystem. Additionally, stakeholders benefit from earning rewards on their stakes through fee distributions facilitated by block producers.

For interaction with the Parlia consensus engine, it's imperative that the eRon Blockchain supports a staking contract compatible with the prescribed interface.

                    
                      
                        interface IValidatorSet {
                      
                      
                          function init() external;
                      
                      
                          function getValidators() external view returns (address[] memory);
                      
                      
                            function deposit(address validator) external payable;
                      
                      
                            receive() external payable;
                      
                      
                          };
                      
                      
                          interface ISlashingIndicator {
                      
                      
                            function init() external;
                      
                      
                          function slash(address validator) external;
                      
                      
                        }
                                          
                      
                        interface ISystemReward {
                                          
                      
                          function init() external;
                                          
                      
                          receive() external payable;
                                          
                      
                        }