# Clone-pattern immutable args: reading a calldata offset and shifting to the bytes you want

Mentorship Series #20 · 15 January 2026 · [@0xfirefist](https://x.com/0xFireFist) · Panoptic · Code4rena

Mentorship Series · [The Contest Academy](https://0xsimao.com/the-contest-academy) · 0xSimao

---

We continued the Panoptic [contest](https://code4rena.com/audits/2025-12-panoptic-next-core) on Code4rena.

**Lesson Summary:**

- Offset is the byte position in calldata where immutable arguments start. It's used by the Clone pattern to read immutable args.
- Calldata loads 32 bytes at a time. When you load 32 bytes from an offset, you then shift by whatever amount is needed to isolate the bytes you actually want.
- One epoch is 4 seconds.
- Strengthen your knowledge of bits, bytes and shifting.
- Try to memorise the variables; if it helps, close your eyes and recite them. This matters for holding context.

https://youtu.be/c9xOZoLm_qI

Session video: https://youtu.be/c9xOZoLm_qI

---

Newer: [Uniswap V4 mechanics: unlock callbacks, the sign of a delta, and sync before settle](https://0xsimao.com/the-contest-academy/mentorship-series-21) · Older: [Bit manipulation first: packing layouts, negative rounding, and unchecked blocks](https://0xsimao.com/the-contest-academy/mentorship-series-19)
