You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
2.7 KiB

1 year ago
1 year ago
1 year ago
  1. # eth-kzg-ceremony-alt [![GoDoc](https://godoc.org/github.com/arnaucube/eth-kzg-ceremony-alt?status.svg)](https://godoc.org/github.com/arnaucube/eth-kzg-ceremony-alt) [![Test](https://github.com/arnaucube/eth-kzg-ceremony-alt/workflows/Test/badge.svg)](https://github.com/arnaucube/eth-kzg-ceremony-alt/actions?query=workflow%3ATest)
  2. Alternative (non-official) implementation in Go of the *contributor* for the [Ethereum KZG Trusted Setup Ceremony](https://github.com/ethereum/kzg-ceremony/blob/main/FAQ.md).
  3. The purpose of this repo is to use it to contribute to the upcoming Ethereum KZG Trusted Setup Ceremony, without using the official implementation.
  4. The Ceremony is considered safe as long as there is at least one honest participant, with the idea that if you participate, assuming that you consider yourself honest, you can consider the Ceremony safe.
  5. Ethereum will run the Ceremony which will be used at least in [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844).
  6. Probably most of the contributions will be generated with the same code (official impl, which has been audited). The idea of this repo is to try to bring more diversity to the table with another independent implementation.
  7. This implementation has been done without looking at the other impls code (except for the point parsers test vectors), in order to not be biased by that code.
  8. > This code has not been audited, use it at your own risk.
  9. Why in Go? Ideally would have done this code using Rust & arkworks, but the official impl already uses that. This implementation uses [Kilic's BLS12-381 pairing implementation](https://github.com/kilic/bls12-381).
  10. Documents used for this implementation:
  11. - [KZG10-Ceremony-audit-report.pdf, section *3.1 Overview of PoT ceremonies*](https://github.com/ethereum/kzg-ceremony/blob/main/KZG10-Ceremony-audit-report.pdf)
  12. - [*Why and how zkSNARKs work*, by Maksym Petkus](https://arxiv.org/abs/1906.07221v1)
  13. **You can find more info on the logic behind the powers of tau computation & verification in these notes: http://arnaucube.com/blog/powersoftau.html**
  14. ### Usage
  15. Get the binary from the [releases](https://github.com/arnaucube/eth-kzg-ceremony-alt/releases) (alternative you can compile it from source), and run:
  16. ```
  17. > ./kzgceremony
  18. eth-kzg-ceremony-alt
  19. ====================
  20. Usage of ./kzgceremony:
  21. -u, --url string sequencer url (default "https://seq.ceremony.ethereum.org")
  22. -r, --rand string randomness, needs to be bigger than 64 bytes
  23. -s, --sleeptime uint time (seconds) sleeping before trying again to be the next contributor (default 30)
  24. ```
  25. So for example, run your contribution with:
  26. ```
  27. ./kzgceremony -r "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod"
  28. ```
  29. (where the "Lorem ipsum..." is your source of randomness)