Hord ETH Staking Manager (HETH)
Core contract for Ethereum Staking Platform.
Code
HordETHStakingManager.sol
Address
HordETHStakingManager is deployed at 0x5bBe36152d3CD3eB7183A82470b39b29EedF068B on the Ethereum mainnet.
Overview
HordETHStakingManager(HETH) is upgradeable contract where users can deposit ETH in order to stake and earn validator rewards, redeeming of deposit is not possible yet, but it will be after the Shanghai Hard Fork.
Events
Deposit
event Deposit(address account, uint256 amountDeposited);Emitted each time when someone deposits.
LaunchNewValidator
event LaunchNewValidator(address account, uint256 amountWithdrawn);Emitted each time when a new validator is launched.
HETHMinted
event HETHMinted(address account, uint256 amountHETH);Emitted each time when new HETH tokens are minted.
EtherReceived
event EtherReceived(address account, uint256 amountETH);Emitted each time when contract receives the execution layer rewards.
FeeCollected
event FeeCollected(address account, uint256 amountHETH, uint256 amountETHForMintingCalc, uint256 diffExecLayerRewardsForFeelCalc);Emitted each time when reward fees are collected.
StakingStatsUpdated
event StakingStatsUpdated(uint256 newRewardsAmount, uint256 newTotalETHBalanceInValidators, uint256 newTotalExecutionLayerRewards);Emitted each time when the staking stats are updated.
NewTokensFarmSDKSet
event NewTokensFarmSDKSet(address newAddress);Emitted each time when the
TokensFarmSDKaddress changes.
Transfer
event Transfer(address indexed from, address indexed to, uint256 value);Emitted each time when the someone transfers
HETHtokens.
Approval
event Approval(address indexed owner, address indexed spender, uint256 value);Emitted each time when the someone approves
HETHtokens.
Burn
event Burn(address indexed account, uint256 value);Emitted each time when HordETHStakingManager calls burn function.
Mint
event Mint(address indexed beneficiary, uint256 value);Emitted each time when HordETHStakingManager calls mint function.
Core functions
userDepositETH
function userDepositETH()
payable
isDirectCall
isCorrectAmount
external
whenNotPaused;UserDepositETHfunction allowing user to deposit ETH on contract.Emits
Depositevent.
launchNewValidator
function launchNewValidator(
bytes calldata pubkey,
bytes calldata withdrawal_credentials,
bytes calldata signature,
bytes32 deposit_data_root
)
nonReentrant
external
whenNotPaused
onlyMaintainer;LaunchNewValidatorWithdraws funds for launching new validator, callable only by maintainer.Emits
LaunchNewValidatorevent.
transfer
function transfer(address recipient, uint256 amount) public virtual returns (bool);Transfer HETH from msg.sender to
recipientaddress.Emits
Transferevent.
approve
function approve(address spender, uint256 amount) public virtual returns (bool);Msg.sender approves
spenderto manage his HETH tokens.Emits
Approvalevent.
transferFrom
function transferFrom(address sender, address recipient, uint256 amount) public virtual returns (bool);Transfer this
amountof HETH fromsendertorecipientaddress.Emits
Transferevent.
Read-Only functions
totalETHDeposited
function totalETHDeposited() external view returns(uint256);TotalETHDepositedrepresents total ETH deposited by user.
totalBalanceETHInValidators
function totalBalanceETHInValidators() external view returns(uint256);TotalBalanceETHInValidatorsrepresents total balance ETH in validators includes amount required to launch the validator plus validator rewards.
totalRewardsCollected
function totalRewardsCollected() external view returns(uint256);TotalRewardsCollectedrepresents total rewards collected validator plus execution layer rewards.
totalHETHMinted
function totalHETHMinted() external view returns(uint256);TotalHETHMintedrepresents total HETH minted.
numberOfUsers
function numberOfUsers() external view returns(uint256);NumberOfUsersrepresents total number of users who stake.
lastRewardsForFeeCalc
function lastRewardsForFeeCalc() external view returns(uint256);LastRewardsForFeeCalcrepresents the last amount of total rewards from which fees was taken.
totalFeesAccountedInETH
function totalFeesAccountedInETH() external view returns(uint256);TotalFeesAccountedInETHrepresents total fees accounted in ETH.
totalFeesMintedInHETH
function totalFeesMintedInHETH() external view returns(uint256);TotalFeesMintedInHETHrepresents total fees minted in HETH.
lastExecLayerRewardsForFeeCalc
function lastExecLayerRewardsForFeeCalc() external view returns(uint256);LastExecLayerRewardsForFeeCalcrepresents the last amount of execution layer rewards from which fees was taken.
totalExecLayerRewards
function totalExecLayerRewards() external view returns(uint256);TotalExecLayerRewardsrepresents total total amount of execution layer rewards.
hordCongressMembersRegistry
function hordCongressMembersRegistry() external view returns(address);HordCongressMembersRegistryrepresents instance of HordCongressMembersRegistry contract.
beaconDeposit
function beaconDeposit() external view returns(address);BeaconDepositrepresents instance of BeaconDeposit contract.
stakingConfiguration
function stakingConfiguration() external view returns(address);StakingConfigurationrepresents instance of StakingConfiguration contract.
users
function users() external view returns(User);
struct User {
uint256 amountDeposited;
uint256 rewardsEarned;
}Usersmap user address to his informations.
getAmountOfHETHforETH
function getAmountOfHETHforETH(uint256 amountETH, bool isContractCall, uint256 diffExecLayerRewardsForFeeCalc) external view returns(uint256);GetAmountOfHETHforETHcalculates how much HETH will be minted for certain amount of ETH.
decimals
function decimals(uint256 amountETH, bool isContractCall, uint256 diffExecLayerRewardsForFeeCalc) external view returns(uint256);decimalsreturns the number of decimals used to get its user representation.
totalSupply
function totalSupply(uint256 amountETH, bool isContractCall, uint256 diffExecLayerRewardsForFeeCalc) external view returns(uint256);totalSupllyreturns total supply of HETH token.
balanceOf
function balanceOf(address account) public view virtual returns (uint256)balanceOfbalance of HETH tokens for sepcificaccount.
allowance
function allowance(address owner, address spender) public view virtual returns (uint256);allowancereturns amount of HETH whichownerhas approvedspenderto use.
name
function name(uint256 amountETH, bool isContractCall, uint256 diffExecLayerRewardsForFeeCalc) external view returns(uint256);namereturns name of HETH token.
symbol
function symbol(uint256 amountETH, bool isContractCall, uint256 diffExecLayerRewardsForFeeCalc) external view returns(uint256);symbolreturns symbol of HETH token.
State-Changing Functions
pause
function pause() external onlyHordCongressOrMaintainer;Pausefunction allowing HordCongress or maintainer to pause contract.Emits
Pausedevent.
unpause
function unpause() external onlyHordConngressMember;Unpausefunction allowing HordCongress member to unpause contract.Emits
Unpausedevent.
setTokensfarmSDK
function setTokensFarmSDK(address _tokensFarmSDK) external onlyHordCongress;SetTokensFarmSDKsets address of TokensFarmSDK contract.Emits a
NewTokensFarmSDKSetecent.
setValidatorStats
function setValidatorStats(uint256 newRewardsAmount, uint256 newTotalETHBalanceInValidators, uint256 newTotalExecutionLayerRewards) external onlyMaintainer;SetValidatorStatssets total amount of collected rewards, total balance ETH in validators and total amount of execution layer rewards.Emits a
StakingStatsUpdatedevent.
Last updated
Was this helpful?