///|
fn uint64_array_to_bytes(values : Array[UInt64]) -> Bytes {
Bytes::makei(32, fn(i) {
let value_index = i / 8
let byte_index = i % 8
let value = values[value_index]
match byte_index {
0 => value.to_byte()
1 => (value >> 8).to_byte()
2 => (value >> 16).to_byte()
3 => (value >> 24).to_byte()
4 => (value >> 32).to_byte()
5 => (value >> 40).to_byte()
6 => (value >> 48).to_byte()
7 => (value >> 56).to_byte()
_ => b'\x00'
}
})
}
///|
pub fn generate_normalized_seed(seed : UInt64) -> Bytes {
let part1 = seed - 25
let part2 = seed + 25
let part3 = seed - 41
let part4 = seed + 41
uint64_array_to_bytes([part1, part2, part3, part4])
}
///|
pub fn generate_time_based_seed() -> Bytes {
let timestamp = @env.now()
generate_normalized_seed(timestamp)
}