# 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