Sorry, was typing that on my mobile phone.

The transient key is used symmetrically, once it's been exchanged. That lets us e.g. do the precompute in one place. But the permanent key is used asymmetrically. The client has to know it in advance, and the server has to authenticate it explicitly. Using a single property makes the code obscure. I'd tried that, did not like the results, and switched to separate client_key and server_key, and like that more. I also like having consistent names all through, so e.g. "server_key" is always the server permanent public key.