//! Pre-computed Hemera round constants.
//!
//! 192 Goldilocks field elements self-bootstrapped from genesis seed
//! `[0x63, 0x79, 0x62, 0x65, 0x72]` ("cyber") via Hemeraβ (zero-constant
//! Poseidon2 sponge). See `bootstrap.rs` for the derivation algorithm.
//!
//! Layout: 128 external (8 full rounds Γ 16 elements) followed by
//! 64 internal (partial round) constants β the exact order consumed
//! by Plonky3's `new_from_rng`.
use crate::field::Goldilocks;
use crate::params::{ROUNDS_F, ROUNDS_P, WIDTH};
/// Total number of round constants.
pub const NUM_CONSTANTS: usize = ROUNDS_F * WIDTH + ROUNDS_P; // 192
/// Round constants as raw u64 values (used by bootstrap verification and GPU).
pub const ROUND_CONSTANTS_U64: [u64; NUM_CONSTANTS] = [
// ββ External round 0 (16 elements) ββββββββββββββββββββββββββββ
0xD5CCEAC23026433F, 0xE3578901A12C12D8, 0xF69C218E10D83177, 0x580252688A8C5A9D,
0x8999AFADA4E74D8D, 0x3A2986E4C8DF69F6, 0x0EBFA3B512BC1EC0, 0xAF162E8CDB5C5623,
0xE54C582CAC713C96, 0x1315A26ADDD52EA8, 0x3F25886824102630, 0x9609688FDB08100D,
0xDE8A94BAA77948E8, 0x3F1FD8F452908B58, 0x2AAE2B41B6077AC0, 0xB4A485338025F44F,
// ββ External round 1 ββββββββββββββββββββββββββββββββββββββββββ
0xCD18F0ACD84C0EEF, 0xD2CE5135B673FBBE, 0x914D073BC9BBE383, 0x2826B3047F095DF8,
0x56AEF8D57FEA34F2, 0x7EC90485940AD963, 0xFB789EBBDB30148B, 0x76EEADEDF60E077E,
0x542E0A6DCDDD2086, 0x664E1F25561B629C, 0x60D6F6D18B216806, 0xAAC73D2DAC4DA2B8,
0x9C0DEB970BCABF0E, 0x9541543C548F6AFC, 0x3C948BE6275C0983, 0xE4C5D4D43422F0A4,
// ββ External round 2 ββββββββββββββββββββββββββββββββββββββββββ
0xD5A49B121F4976E4, 0x51F536D940E58FF8, 0xE227580FAE99E0B7, 0x9051ACDF94C83017,
0x7A03F3F60AB89AC5, 0xC30EB0CE37C6FF7B, 0x99565812FC6879F5, 0x1B5919AD633AC835,
0x6E387DA77D36855A, 0xE7F108962DB39112, 0xBD5ED6526E19F143, 0x02F37EC89CBBF9CA,
0x4F2AFEF8A60F7648, 0x92073A4D954A0CE8, 0x086721740F66CD47, 0xFF21BBC9843474CF,
// ββ External round 3 ββββββββββββββββββββββββββββββββββββββββββ
0x5432FF4DC29FFA86, 0x3545EF171C39F663, 0x77B99EBB4AAD5D83, 0x84A4868DD6D6633D,
0xFDD268BFCB1CC81B, 0x10FF93EE7699D69E, 0xB45C530AFFB9087A, 0x6637E6403268B78C,
0xB30E74F61EDFDA60, 0x86D732A43435D83F, 0xFA88770BD6C92812, 0x95D57C718FA631E8,
0x661D2145E899982D, 0x06458EB77BDAEC84, 0xAC5E268E58525ECE, 0xA234D1A33A75BEFD,
// ββ External round 4 ββββββββββββββββββββββββββββββββββββββββββ
0x24E9696F740F24D9, 0x632C53F7C3C31CE9, 0x4EC8EC7074ACF53B, 0xF153D18F4116F1BE,
0xE55D87672B4447E9, 0x1B536BBBEA29BC5D, 0x064FA5B24A94E367, 0x99E86B6CE58589BE,
0xD78E8FF6FA7C446F, 0x26DC0C0278E7B74B, 0xB603FFAE4CBDC2EE, 0xB8C2A07F7258C118,
0x75850DEFB9C91BE8, 0xEDC67DE6CA914A05, 0xC242735E64F81C97, 0xDEC20D2942EBB607,
// ββ External round 5 ββββββββββββββββββββββββββββββββββββββββββ
0xE5525BD6C1F65B65, 0xF48DB1E5FDA0176E, 0x64EC11E470F5D158, 0x9FDFE61922628C9A,
0x63364D568A43A56D, 0x74D9CB38F6E49130, 0x1D407D6681A77A00, 0x4C29F27B847828F1,
0xD032BD5C54F6D9A8, 0xCD182FAF42568134, 0xF1A38914210A1DED, 0x8C62C1EDF8AA43BB,
0xD948E7C1359B6812, 0xCB56477F8762C218, 0xA607ACD0DABF616F, 0x5AF7ECC8CC7358C8,
// ββ External round 6 ββββββββββββββββββββββββββββββββββββββββββ
0x88A8A0EF484D3E97, 0xDE6C0BE57F5757A2, 0x6EB62FDC6B8D02EA, 0x99B1BB56096FFAD6,
0xDEACFFCFA94CB72C, 0xE3A75889FDA6FFC3, 0x938A417DB1B283CC, 0x947B438A83A2311D,
0x0FBC91A69FE32B0C, 0xFA56D3AEE09CC571, 0xCDACBA4AA8500229, 0x5EF5CCF955F5CA56,
0x965085B4E9EEF0B7, 0x7340F975CB869707, 0x510A32FF6311C65F, 0xDE14B97DCE6DB04E,
// ββ External round 7 ββββββββββββββββββββββββββββββββββββββββββ
0xE4A67862BAA30FDE, 0x9332AD038E1F8C27, 0xC64493389B918794, 0xA96D8E273AFF45EB,
0x143A4BB343B33BA2, 0x2515A9FE8F39F795, 0xD05D9C3BFC3E857B, 0xB78E2961052468E2,
0x7DF16657BD5B42D6, 0x279311212173D900, 0xC9E5FD0828D8007E, 0x9A8F04EA65E31466,
0xB18A04DDC473F891, 0x4F436C22F47AF6BC, 0x3E70EA68CA962CF6, 0x178EC9C512384268,
// ββ Internal (partial) rounds 0β63 ββββββββββββββββββββββββββββ
0x51CF92D329EC3F2D, 0x60B6D7977812ED41, 0x6ACA07D4FDD7ED7C, 0x7C39D4A5A0B398CF,
0x390818DE0BB16A9C, 0x6786D9CF32F70018, 0xD718F771C0BDCBC1, 0xE90565D5D30F4ECA,
0x0FEABF48AAC74E6A, 0x65E5626024EBCAE3, 0x7DB692749E936229, 0xFCDC183BF5BD57B5,
0x6D057F8998AB265A, 0x76705CB4AE3F709A, 0xD2CAD0EDA18FD3D8, 0xE93D7D6EB7C9AF97,
0x233DA3D2EC2B80D5, 0x6D178C93326CC6B6, 0x1C20468A4D8B7402, 0xB671C139E8B6E2BA,
0x7ECA2BCC79071CCA, 0xC2FC84B3EFC56511, 0x7580C24D979CA785, 0xACD9FF6657F2F3A7,
0x29EE050F1AECCD3E, 0xA0A0C535D56660F7, 0x1E1C7288266EFBC6, 0x3657F0AAE405CAF8,
0xC5B32A96AB3C183E, 0x1C8544088CF67554, 0x4DA438FF08852EFA, 0x67F51030C8A0D0AD,
0x3C751159A6FAECC4, 0xC5C96984382FE04C, 0x0D03479BC357608F, 0xF60676EFFEE14C7E,
0x0FE6DCA69075F651, 0x51E1D7E129446BC7, 0x83ADC0E21710FAF2, 0x4BCB628B56BF16D6,
0x31F1BE11F970AEE0, 0x6DBC366A88EB038C, 0xACB8739854C398FC, 0xC5B435AB81CCE187,
0x2BEEC5F7778B82A0, 0x8828C1377245EFA2, 0xF93D62C62CA251D9, 0x7D692B4430D2084D,
0x6F32DA6982A590FE, 0x07D29ED4B3D5D546, 0x62A4F6330E551702, 0x90222BD8553246FA,
0x6029C89F65F3E698, 0xE00D2F88EF558834, 0xF70A3203E3423B53, 0x2AE38946987AFC5D,
0x533B661DC0B5ED5A, 0xE603FF406197C4AB, 0x0A0D305612C952EC, 0x2787565AECFC7757,
0x19E0568BC04A175C, 0xE8396B888F868B3B, 0x5FC8A9C367AEF0EB, 0x347B267CA3DD22AD,
];
/// Round constants as Goldilocks field elements (used by the permutation).
pub const ROUND_CONSTANTS: [Goldilocks; NUM_CONSTANTS] = {
let mut out = [Goldilocks::ZERO; NUM_CONSTANTS];
let mut i = 0;
while i < NUM_CONSTANTS {
out[i] = Goldilocks::new(ROUND_CONSTANTS_U64[i]);
i += 1;
}
out
};
hemera/rs/src/constants.rs
Ο 0.0%
//! Pre-computed Hemera round constants.
//!
//! 192 Goldilocks field elements self-bootstrapped from genesis seed
//! `[0x63, 0x79, 0x62, 0x65, 0x72]` ("cyber") via Hemeraβ (zero-constant
//! Poseidon2 sponge). See `bootstrap.rs` for the derivation algorithm.
//!
//! Layout: 128 external (8 full rounds Γ 16 elements) followed by
//! 64 internal (partial round) constants β the exact order consumed
//! by Plonky3's `new_from_rng`.
use crateGoldilocks;
use crate;
/// Total number of round constants.
pub const NUM_CONSTANTS: usize = ROUNDS_F * WIDTH + ROUNDS_P; // 192
/// Round constants as raw u64 values (used by bootstrap verification and GPU).
pub const ROUND_CONSTANTS_U64: = ;
/// Round constants as Goldilocks field elements (used by the permutation).
pub const ROUND_CONSTANTS: = ;