On Learning zkSNARK
Recently I am picking up the knowledge necessary to understand what is going on in zkSNARK. For those who are not familiar with this term, "zk" stands for zeroknowledge, and "SNARK" stands for succinct, noninteractive, argument of knowledge. What this term means is:

zeroknowledge: this is a way for a prover proving "something" to a verifier in such a way that the verifer will not gain any additional knowledge than before the interaction. We will elaborate the "something" in the following bullet points.

succinct: the proof is going to be short compared to the actual knowledge, and the verifier will be able to perform the verification quite fast. To be more concrete, if the knowledge m has a length of m, the proof may probably be O(log m) or even shorter.

noninteractive: there won't be rounds of back and forth interactions between the prover and verifier. The prover will only send a single message to the verifier.

Argument of Knowledge: This is the "something" mentioned in the first bullet point. Notice that this is not the knowledge itself, but a proof that demonstrate that the prover indeed knows the knowledge.
Yes, this is quite an abstract concept. But what is the most puzzling in this learning journey is that though there are tons of useful online resources, such as:
 zklearning open course that are taught by the topnotch instructors.
 zkhack whiteboard sessions
 MIT IAP Course  Modern Zero Knowledge Cryptography
I CANNOT integrate the theoretical aspect together with its engineering aspect in this domain. For example, the high level concept of a zkSNARK is a combination of one of the functional commitments with one form of interactive oracle proof (IOP). But in implementing a actual zeroknowledge proof project, how do I actually choose a zkSNARK scheme with a particular functional commitment and a particular interactive oracle proof?
So now, my learning approach is as follows:
 Studying indepth about the source code of the Semaphore project.
 Meanwhile continue reading rareskill zkbook
 At the same time, I am also applying for bootcamp program to solidify my understanding and hoping to get handson experience of putting zkp knowledge into engineering practice.
To be continued.