SampleMath
Last updated
Last updated
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)
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
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
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
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
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
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
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
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
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
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