SampleMath
Author: Trader Joe
This library contains functions to encode and decode a sample into a single bytes32 and interact with the encoded bytes32 The 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
OFFSET_ORACLE_LENGTH
OFFSET_CUMULATIVE_ID
OFFSET_CUMULATIVE_VOLATILITY
OFFSET_CUMULATIVE_BIN_CROSSED
OFFSET_SAMPLE_LIFETIME
OFFSET_SAMPLE_CREATION
Functions
encode
Encodes a sample
Parameters
oracleLength
uint16
The oracle length
cumulativeId
uint64
The cumulative id
cumulativeVolatility
uint64
The cumulative volatility
cumulativeBinCrossed
uint64
The cumulative bin crossed
sampleLifetime
uint8
The sample lifetime
createdAt
uint40
The sample creation timestamp
Returns
sample
bytes32
The encoded sample
getOracleLength
Gets the oracle length from an encoded sample
Parameters
sample
bytes32
The encoded sample as follows: [0 - 16[: oracle length (16 bits) [16 - 256[: any (240 bits)
Returns
length
uint16
The oracle length
getCumulativeId
Gets the cumulative id from an encoded sample
Parameters
sample
bytes32
The encoded sample as follows: [0 - 16[: any (16 bits) [16 - 80[: cumulative id (64 bits) [80 - 256[: any (176 bits)
Returns
id
uint64
The cumulative id
getCumulativeVolatility
Gets the cumulative volatility accumulator from an encoded sample
Parameters
sample
bytes32
The encoded sample as follows: [0 - 80[: any (80 bits) [80 - 144[: cumulative volatility accumulator (64 bits) [144 - 256[: any (112 bits)
Returns
volatilityAccumulator
uint64
The cumulative volatility
getCumulativeBinCrossed
Gets the cumulative bin crossed from an encoded sample
Parameters
sample
bytes32
The encoded sample as follows: [0 - 144[: any (144 bits) [144 - 208[: cumulative bin crossed (64 bits) [208 - 256[: any (48 bits)
Returns
binCrossed
uint64
The cumulative bin crossed
getSampleLifetime
Gets the sample lifetime from an encoded sample
Parameters
sample
bytes32
The encoded sample as follows: [0 - 208[: any (208 bits) [208 - 216[: sample lifetime (8 bits) [216 - 256[: any (40 bits)
Returns
lifetime
uint8
The sample lifetime
getSampleCreation
Gets the sample creation timestamp from an encoded sample
Parameters
sample
bytes32
The encoded sample as follows: [0 - 216[: any (216 bits) [216 - 256[: sample creation timestamp (40 bits)
Returns
creation
uint40
The sample creation timestamp
getSampleLastUpdate
Gets the sample last update timestamp from an encoded sample
Parameters
sample
bytes32
The encoded sample as follows: [0 - 216[: any (216 bits) [216 - 256[: sample creation timestamp (40 bits)
Returns
lastUpdate
uint40
The sample last update timestamp
getWeightedAverage
Gets the weighted average of two samples and their respective weights
Parameters
sample1
bytes32
The first encoded sample
sample2
bytes32
The second encoded sample
weight1
uint40
The weight of the first sample
weight2
uint40
The weight of the second sample
Returns
weightedAverageId
uint64
The weighted average id
weightedAverageVolatility
uint64
The weighted average volatility
weightedAverageBinCrossed
uint64
The weighted average bin crossed
update
Updates a sample with the given values
Parameters
sample
bytes32
The encoded sample
deltaTime
uint40
The time elapsed since the last update
activeId
uint24
The active id
volatilityAccumulator
uint24
The volatility accumulator
binCrossed
uint24
The bin crossed
Returns
cumulativeId
uint64
The cumulative id
cumulativeVolatility
uint64
The cumulative volatility
cumulativeBinCrossed
uint64
The cumulative bin crossed
Last updated