Obelisk Contract

The main protocol contract. Handles LODE minting, staking, burning, fee distribution, and payout claims.

Constructor

constructor(
    address initialOwner,
    address genesisAddress,
    address buyAndBurnAddress
)
ParameterDescription
initialOwnerContract owner (can be multisig, distinct from deployer)
genesisAddressGenesis wallet: receives 3% fees + 8% mint rewards
buyAndBurnAddressBuyAndBurn contract: receives 62% fees
Referral lock is enabled by default. All three addresses must be non-zero.

Mining Functions

startMint

function startMint(uint256 mintPower, uint256 numOfDays) external payable
Create a single mining position. Requires ETH payment. Requires referral if locked. Modifiers: checkReferralLock, nonReentrant, dailyUpdate

batchMint

function batchMint(uint256 mintPower, uint256 numOfDays, uint256 count) external payable
Create up to 100 mining positions with the same parameters.

claimMint

function claimMint(uint256 id) external
Claim a single matured mint. LODE is minted to the caller plus 8% to genesis.

batchClaimMint

function batchClaimMint() external
Claim up to 100 matured mints in one transaction.

Staking Functions

startStake

function startStake(uint256 amount, uint256 numOfDays) external
Lock LODE tokens as a stake. Tokens are burned from the caller’s balance and converted to shares.

endStake

function endStake(uint256 id) external
End your own stake. LODE principal is minted back (minus any penalty).

endStakeForOthers

function endStakeForOthers(address user, uint256 id) external
End a matured stake for another user. LODE goes to the original staker.

Distribution Functions

distributeETH

function distributeETH() external
Split accumulated protocol fees into pools. Caller receives 0.33% incentive.

triggerPayouts

function triggerPayouts() external
Calculate reward-per-share for mature cycles. Auto-distributes first if needed.

Claim Functions

claimUserAvailableETHPayouts

function claimUserAvailableETHPayouts() external
Claim all staker ETH payouts across all four cycles in one transaction.

claimUserAvailableETHBurnPool

function claimUserAvailableETHBurnPool() external
Claim burn pool ETH rewards (28-day cycle only).

Burn Functions

userBurnTokens

function userBurnTokens(uint256 amount) public
Burn liquid LODE from your balance. Updates burn amplifier and cycle burn tracking.

userBurnStake

function userBurnStake(uint256 id) public
Burn an active stake. No penalty regardless of maturity status.

userBurnMint

function userBurnMint(uint256 id) public
Burn an active or matured mint. Bypasses maturity requirement.

burnTokens (Project)

function burnTokens(
    address user, uint256 amount,
    uint256 userRebatePercentage, uint256 rewardPaybackPercentage
) public
Burn user’s LODE via a project contract. Requires ERC-20 approval and IObeliskOnBurn interface.

burnStake / burnMint (Project)

function burnStake(address user, uint256 id, uint256 userRebatePercentage, uint256 rewardPaybackPercentage) public
function burnMint(address user, uint256 id) public
Burn user’s stake or mint via a project contract. Requires dedicated burn allowance.

Approval Functions

approveBurnMints / approveBurnStakes

function approveBurnMints(address spender, uint256 amount) public returns (bool)
function approveBurnStakes(address spender, uint256 amount) public returns (bool)
Approve a project to burn your mints or stakes (separate from ERC-20 allowance).

Admin Functions

FunctionAccessDescription
setBuyAndBurnContractAddress(address)OwnerChange BuyAndBurn contract
enableBurnPoolReward()OwnerEnable burn pool (one-way)
setReferralLocked(bool)OwnerToggle referral lock
renounceOwnership()OwnerRemove owner permanently
transferOwnership(address)OwnerTransfer owner role
setNewGenesisAddress(address)GenesisTransfer genesis role
mintReserve(address, uint256)GenesisOne-shot mint to fund redeemer

Key View Functions

FunctionReturns
getCurrentContractDay()Current protocol day
getCurrentMintCost()Current ETH cost per mint power unit
getCurrentMintableLode()Current daily LODE supply
getCurrentShareRate()Current share rate
getGlobalActiveShares()Total active shares
getUserETHClaimableTotal(address)User’s total claimable staker ETH
getUserBurnPoolETHClaimableTotal(address)User’s claimable burn pool ETH
getUserBurnAmplifierBonus(address)Burn amp bonus (0-8%, 18 decimals)
getUserMints(address)All mint info for a user
getUserStakes(address)All stake info for a user
getUndistributedETH()Accumulated undistributed fees