I was curious about the implementation of MCPhase/MCU1Gate and how it works without ancilla qubits. I ended up checking the code of the some auxiliary (?) function _gray_code_chain()
but I couldn't understand much of it.
update: it seems that MCU1Gate is deprecated and MCPhase will substitute it - the code is the same anyway.