Kiln
Oracle Interface (v1)
This interface exposes methods to handle the input from the allowed oracle members.Highly inspired by Lido's implementation.
Adds new address as oracle member, giving the ability to push cl reports.
Only callable by the adminstratorModifying the quorum clears all the reporting data
Retrieve the current cl spec
Retrieve the current epoch id based on block timestamp
Retrieve the current frame details
Retrieve expected epoch id
Retrieve the first epoch id of the frame of the provided epoch id
Retrieve member report status
Retrieve the last completed epoch id
Retrieve member report status
Retrieve the list of oracle members
Retrieve the current quorum
Retrieve the report bounds
Retrieve decoded report at provided index
Retrieve report variants count
Retrieve River address
Retrieve the block timestamp
Initializes the oracle
Returns true if address is member
Performs a naive search, do not call this on-chain, used as an off-chain helper
Removes an address from the oracle members.
Only callable by the adminstratorModifying the quorum clears all the reporting dataRemaining members that have already voted should vote again for the same frame.
Report cl chain data
Only callable by an oracle memberThe epoch id is expected to be >= to the expected epoch id stored in the contractThe epoch id is expected to be the first epoch of its frameThe Consensus Layer Validator count is the amount of running validators managed by River.Until withdrawals are enabled, this count also takes into account any exited and slashed validatoras funds are still locked on the consensus layer.
Edits the cl spec parameters
Only callable by the adminstrator
Changes the address of an oracle member
Only callable by the adminitratorCannot use an address already in useThis call will clear all the reporting data
Edits the quorum required to forward cl data to River
Modifying the quorum clears all the reporting data
Edits the cl bounds parameters
Only callable by the adminstrator
A member has been added to the oracle member list
Consensus Layer data has been reported by an oracle member
The expected epoch id has been changed
The report has been submitted to river
A member has been removed from the oracle member list
The report bounds have been changed
A member address has been edited
The storage quorum value has been changed
The storage river address value has been changed
The consensus layer spec has been changed
The address is already in use by an oracle member
The member already reported on the given epoch id
The provided epoch is too old compared to the expected epoch id
The provided epoch is not at the beginning of its frame
The negative delta in balance is above the allowed lower bound
The delta in balance is above the allowed upper bound
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
_newOracleMember
address
Address of the new member
_newQuorum
uint256
New quorum value
_0
CLSpec.CLSpecStruct
The Consensus Layer Specification
_0
uint256
The current epoch id
_startEpochId
uint256
The epoch at the beginning of the frame
_startTime
uint256
The timestamp of the beginning of the frame in seconds
_endTime
uint256
The timestamp of the end of the frame in seconds
_0
uint256
The current expected epoch id
_epochId
uint256
Epoch id used to get the frame
_0
uint256
The first epoch id of the frame containing the given epoch id
_0
uint256
The raw report status value
_0
uint256
The last completed epoch id
_oracleMember
address
Address of member to check
_0
bool
True if member has reported
_0
address[]
The oracle members
_0
uint256
The current quorum
_0
ReportBounds.ReportBoundsStruct
The report bounds
_idx
uint256
Index of report
_clBalance
uint64
The reported consensus layer balance sum of River's validators
_clValidators
uint32
The reported validator count
_reportCount
uint16
The number of similar reports
_0
uint256
The count of report variants
_0
address
The address of River
_0
uint256
The current timestamp from the EVM context
_river
address
Address of the River contract, able to receive oracle input data after quorum is met
_administratorAddress
address
Address able to call administrative methods
_epochsPerFrame
uint64
CL spec parameter. Number of epochs in a frame.
_slotsPerEpoch
uint64
CL spec parameter. Number of slots in one epoch.
_secondsPerSlot
uint64
CL spec parameter. Number of seconds between slots.
_genesisTime
uint64
CL spec parameter. Timestamp of the genesis slot.
_annualAprUpperBound
uint256
CL bound parameter. Maximum apr allowed for balance increase. Delta between updates is extrapolated on a year time frame.
_relativeLowerBound
uint256
CL bound parameter. Maximum relative balance decrease.
_memberAddress
address
Address of the member
_0
bool
True if address is a member
_oracleMember
address
Address to remove
_newQuorum
uint256
New quorum value
_epochId
uint256
Epoch where the balance and validator count has been computed
_clValidatorsBalance
uint64
Total balance of River validators
_clValidatorCount
uint32
Total River validator count
_epochsPerFrame
uint64
Number of epochs in a frame.
_slotsPerEpoch
uint64
Number of slots in one epoch.
_secondsPerSlot
uint64
Number of seconds between slots.
_genesisTime
uint64
Timestamp of the genesis slot.
_oracleMember
address
Address to change
_newAddress
address
New address for the member
_newQuorum
uint256
New quorum parameter
_annualAprUpperBound
uint256
Maximum apr allowed for balance increase. Delta between updates is extrapolated on a year time frame.
_relativeLowerBound
uint256
Maximum relative balance decrease.
member indexed
address
The address of the member
epochId
uint256
The epoch of the report
newCLBalance
uint128
The new consensus layer balance
newCLValidatorCount
uint32
The new consensus layer validator count
oracleMember
address
The oracle member that reported
epochId
uint256
The new expected epoch id
postTotalEth
uint256
The new total ETH balance
prevTotalEth
uint256
The previous total ETH balance
timeElapsed
uint256
Time since last report
totalShares
uint256
The new total amount of shares
member indexed
address
The address of the member
annualAprUpperBound
uint256
The maximum allowed apr. 10% means increases in balance extrapolated to a year should not exceed 10%.
relativeLowerBound
uint256
The maximum allowed balance decrease as a relative % of the total balance
oldAddress indexed
address
The previous member address
newAddress indexed
address
The new member address
newQuorum
uint256
The new quorum value
_river
address
The new river address
epochsPerFrame
uint64
The number of epochs inside a frame (225 = 24 hours)
slotsPerEpoch
uint64
The number of slots inside an epoch (32 on ethereum mainnet)
secondsPerSlot
uint64
The time between two slots (12 seconds on ethereum mainnet)
genesisTime
uint64
The timestamp of block #0
newAddress
address
The address already in use
epochId
uint256
The epoch id provided as input
member
address
The oracle member
providedEpochId
uint256
The epoch id provided as input
minExpectedEpochId
uint256
The minimum epoch id expected
providedEpochId
uint256
The epoch id provided as input
expectedFrameFirstEpochId
uint256
The frame first epoch id that was expected
prevTotalEth
uint256
The previous total balance
postTotalEth
uint256
The new total balance
timeElapsed
uint256
The time since last report
relativeLowerBound
uint256
The maximum relative decrease allowed
prevTotalEth
uint256
The previous total balance
postTotalEth
uint256
The new total balance
timeElapsed
uint256
The time since last report
annualAprUpperBound
uint256
The maximum apr allowed