Means of transferring privacy (ZKP) artifacts

Hi all!

I’m looking at the baseline privacy branch and it’s not directly obvious to me how the syncing of circuit artifacts is done. Could you guys me a short description of what’s happening?

The thing I often think about is that once a common verifier is shared amongst multiple parties, they must all use the same proving key, correct? ( Hope this isn’t ZoKrates specific, I’m trying to make the switch to the new privacy service as fast and best as I can ). So I presume this proving key is one of the things synced? This question stems from my lack of knowledge on the true use-cases for the messaging systems.

In your eyes, when thinking of NATS ( or NATS-streaming for that matter ), what’s the true purpose of these message systems? Which type of files should we send through NATS and when is it best to use some mutual storage server (I see that Provide Privacy makes use of a shared database, are the shared artifacts stored there?)?

I also see that there’s a new opcode, namely Opcode.sync; could I get a quick rundown of how it’s used?

Sorry for so many questions in a single query!!