# Understanding Pickles at #ethamsterdam [Pickles](https://medium.com/minaprotocol/meet-pickles-snark-enabling-smart-contract-on-coda-protocol-7ede3b54c250) is Mina's library for creating recursive snark proofs. It's working well, but it's lacking documentation and a spec. While I'm at [ETHAmsterdam](https://amsterdam.ethglobal.com/), I'll try to * understand the inner workings of Pickles * share my findings and hopefully produce some useful resources for others * start a JS implementation of Pickles, on top of [snarkyjs](https://github.com/o1-labs/snarkyjs) The starting point is [here](https://github.com/MinaProtocol/mina/blob/69ea7a9d712cc59629d9aadd4ebb80dc5a5c169a/src/lib/pickles/pickles.ml#L408) - the OCaml entry point of Pickles' main function, `Pickles.compile`. TODO: explain the amortization strategy for bullet proofs with the product representatino of the G polynomial