---
# System prepended metadata

title: Rescure Prime Optimized

---

# 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 |