OracleV1
Last updated
Last updated
Kiln
Oracle (v1)
This contract handles the input from the allowed oracle members. Highly inspired by Lido's implementation.
Accept the transfer of ownership
Only callable by the pending admin. Resets the pending admin if succesful.
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
Name | Type | Description |
---|---|---|
Retrieves the current admin address
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 pending admin address
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
Proposes a new address as admin
This security prevents setting an invalid address as an admin. The pendingadmin has to claim its ownership of the contract, and prove that the newaddress is able to perform regular transactions.
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
Emitted when the contract is properly initialized
The report has been submitted to river
A member has been removed from the oracle member list
The admin address changed
The report bounds have been changed
A member address has been edited
The pending admin address changed
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 argument was invalid
The call was invalid
An error occured during the initialization
The address is zero
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
The operator is unauthorized for the caller
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 |
---|---|---|
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
address
The admin address
_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
address
The pending admin address
_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
_newAdmin
address
New admin address
_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
undefined
epochId
uint256
undefined
newCLBalance
uint128
undefined
newCLValidatorCount
uint32
undefined
oracleMember
address
undefined
epochId
uint256
undefined
version
uint256
undefined
cdata
bytes
undefined
postTotalEth
uint256
undefined
prevTotalEth
uint256
undefined
timeElapsed
uint256
undefined
totalShares
uint256
undefined
member indexed
address
undefined
admin indexed
address
undefined
annualAprUpperBound
uint256
undefined
relativeLowerBound
uint256
undefined
oldAddress indexed
address
undefined
newAddress indexed
address
undefined
pendingAdmin indexed
address
undefined
newQuorum
uint256
undefined
_river
address
undefined
epochsPerFrame
uint64
undefined
slotsPerEpoch
uint64
undefined
secondsPerSlot
uint64
undefined
genesisTime
uint64
undefined
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
version
uint256
The version that was attempting to be initialized
expectedVersion
uint256
The version that was 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
caller
address
Address performing the call