OracleHelper

Git Sourcearrow-up-right

Author: Trader Joe

This library contains functions to manage the oracle The oracle samples are stored in a single bytes32 array. Each sample is encoded as follows: 0 - 16: oracle length (16 bits) 16 - 80: cumulative id (64 bits) 80 - 144: cumulative volatility accumulator (64 bits) 144 - 208: cumulative bin crossed (64 bits) 208 - 216: sample lifetime (8 bits) 216 - 256: sample creation timestamp (40 bits)

State Variables

_MAX_SAMPLE_LIFETIME

uint256 internal constant _MAX_SAMPLE_LIFETIME = 120 seconds;

Functions

checkOracleId

Modifier to check that the oracle id is valid

modifier checkOracleId(uint16 oracleId);

Parameters

Name
Type
Description

oracleId

uint16

The oracle id

getSample

Returns the sample at the given oracleId

Parameters

Name
Type
Description

oracle

Oracle

The oracle

oracleId

uint16

The oracle id

Returns

Name
Type
Description

sample

bytes32

The sample

getActiveSampleAndSize

Returns the active sample and the active size of the oracle

Parameters

Name
Type
Description

oracle

Oracle

The oracle

oracleId

uint16

The oracle id

Returns

Name
Type
Description

activeSample

bytes32

The active sample

activeSize

uint16

The active size of the oracle

getSampleAt

Returns the sample at the given timestamp. If the timestamp is not in the oracle, it returns the closest sample

Parameters

Name
Type
Description

oracle

Oracle

The oracle

oracleId

uint16

The oracle id

lookUpTimestamp

uint40

The timestamp to look up

Returns

Name
Type
Description

lastUpdate

uint40

The last update timestamp

cumulativeId

uint64

The cumulative id

cumulativeVolatility

uint64

The cumulative volatility

cumulativeBinCrossed

uint64

The cumulative bin crossed

binarySearch

Binary search to find the 2 samples surrounding the given timestamp

Parameters

Name
Type
Description

oracle

Oracle

The oracle

oracleId

uint16

The oracle id

lookUpTimestamp

uint40

The timestamp to look up

length

uint16

The oracle length

Returns

Name
Type
Description

<none>

bytes32

prevSample The previous sample

<none>

bytes32

nextSample The next sample

setSample

Sets the sample at the given oracleId

Parameters

Name
Type
Description

oracle

Oracle

The oracle

oracleId

uint16

The oracle id

sample

bytes32

The sample

update

Updates the oracle

Parameters

Name
Type
Description

oracle

Oracle

The oracle

parameters

bytes32

The parameters

activeId

uint24

The active id

Returns

Name
Type
Description

<none>

bytes32

The updated parameters

increaseLength

Increases the oracle length

Parameters

Name
Type
Description

oracle

Oracle

The oracle

oracleId

uint16

The oracle id

newLength

uint16

The new length

_checkOracleId

Checks that the oracle id is valid

Parameters

Name
Type
Description

oracleId

uint16

The oracle id

Errors

OracleHelper__InvalidOracleId

OracleHelper__NewLengthTooSmall

OracleHelper__LookUpTimestampTooOld

Structs

Oracle

Last updated