When I first looked at Dusk’s engineering updates, I initially thought Moonlight and Phoenix were two separate account systems going their own way. It wasn’t until I dug into the "convert" function that I realized Dusk’s cleverness lies in this: the two models do not coexist side by side; they can be atomically swapped. @Dusk

Assets in a Phoenix account are encrypted notes. When moving into a Moonlight account, the Transfer Contract first processes these notes, then adds the equivalent value to the public balance; in the opposite direction, when transferring out of Moonlight, the Transfer Contract first deducts the balance, then generates notes of the corresponding denomination and sends them to a hidden address. Users do not need to prove their identity; they only need to prove ownership of the account or address being converted. The whole process completes atomically and never gets stuck in an intermediate state.

But when I checked again, I found that I had previously mixed up this mechanism with the XSC securities standard, which was not rigorous. convert handles the conversion of DUSK’s native token between the two models; XSC securities truly rely on Zedger, a model that combines UTXO and account capabilities and is specifically designed to handle compliance details such as eligibility checks, transfer limits, and dividends. The two share Phoenix’s zero-knowledge underlying layer, but they are not the same logic, and I should not have conflated them.

Dusk separates these two layers very clearly: the underlying conversion mechanism handles token circulation, while the upper-layer Zedger handles securities compliance. That is also why, the more I look at it, the more I feel it is not simply building a privacy chain.

$DUSK supports the Gas costs for this entire conversion and settlement setup.

#dusk $DUSK @Dusk