# Rescure Prime Optimized RPO is a concrete hash function specified for the Goldilocks field (2^64 – 2^32 + 1). With this hash function, we target two security levels, 128-bits and 160-bits. It is optained from applying the Marvellous design strategy to a specific context - native hashing in the Miden VM. ## Design goals The hash function is defined over the same field that the VM is defined over, which is the above primefield with p = 264 − 2 32 + 1 elements. One of the main use cases is Merkle tree hashing, and so the hash function must support an interface for efficient two-to-one hashing. ## Performance (2-to-1 hashing Rescue Prime Optimized 256 not chached) RPO256 is about 4x slower than the fastest implementation of Poseidon - both outside the proving systems. | Target CPU | Hash Function | Execution Time | |------------|---------------|----------------| | Intel(R) Core(TM) i5-8279U CPU @ 2.40GHz | RPO256 | 8.6618 µs | | ARM Neoverse-V1 | RPO256 | 8.6618 µs | | Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz | RPO256 | 8.2474 µs | | AMD Ryzen 9 5950X | RPO256 | 5.5 µs | | Apple M1 Pro | RPO256 | 5.4 us | | Apple M2 | RPO256 | 5.0 us |