# Journaling ZK-Proofs Part 1

By [unintendedcon.eth](https://paragraph.com/@unintendedcon) · 2021-11-01

---

As someone who only got into crypto this year, there’s a bunch of things that I’ve been working on catching up on. I got interested in MEV early on, primarily because the people I work with seem to know MEV really well. I’ve also been super interested in how action forces hierarchy. There is a reason why although businesses and organizations have experimented with flat hierarchies, most of them end up reverting back to a traditional CEO / founder structure. The same goes for search engines. Google has to display the information on it’s page; there has to be a ranking and some items have to go before others. MEV is essentially bribing miners for a higher ranking in the block so you can front-run, arbitrage, liquidate, or sandwich attack some other transaction. It’s pretty interesting because of how unsettled it is. Other stuff like sports and board games feel kinda boring; the nash equilibrium has been reached and it’s really boring optimal stuff for the team suboptimal stuff for the league and fans (i.e. baseball’s three true outcomes, basketball’s three pointer problem). It’s a tragedy of the commons since you clearly want your team to move in such a fashion, but know that doing so is detrimental to everyone.

We can see a pretty clear shift in games. More people are spending more time on games with this ‘fog of war’, where the information is not fully transparent and not all information is known. This isn’t immediately portable to blockchains since blockchains are transparent by design; you can open up a block explorer and see all the network activity going on-- it’s a literal ledger.

This brings up my foray into zk-proofs. From what I’ve gathered so far, zk-proofs are proofs that establish three things:

1.  soundness - if something is true, then there must be an effectively nil probability that it can be shown otherwise.
    
2.  completeness- if something is true, there must be a way to effectively show so.
    
3.  zero-knowledgeness- if something is true, the process by which you obtain such knowledge must not leak any knowledge to the prover.
    

There’s two types: ZK-SNARKs and ZK-STARKs. From what I’ve read, the upside of SNARKs are that they are pretty decently fast, have some zero-knowledge properties, and don’t require a ton of space. The upside of STARKs are that they don’t require a trusted initial setup (unlike SNARKs) and have faster proofs via some ‘moon math’, but require much more memory.

I’m more interested in STARKs at the moment, although, they both are very related. There are a bunch of STARK libraries out there-- Facebook actually released one-- and I think there’s a rust implementation called bellman (Haven't played with either yet). You can find more of this stuff at zkp.science. There’s also Vitalik’s intro series (the probablistic polynomial bounds checking is pretty cool) and an intro to zk proofs from a 2018 episode of the Zero Knowledge podcast.

STARKs are interesting because you can use them to cache long-running computations and prove knowledge. I think they’re very interesting from a data marketplace perspective as well (stuff I’m really excited about) since they solve a major problem in the form of trust and ‘the dark forest’. Proving trust has interesting implications I think for Internet-local communities and solving coordination problems. I’ve started doing the Cairo lang intro challenges, although, I’ve been somewhat stuck and trying to wrap my head around a bunch of the stuff. That’s all for now; intern signing off and will return with a part 2.

---

*Originally published on [unintendedcon.eth](https://paragraph.com/@unintendedcon/journaling-zk-proofs-part-1)*
