# ETHDenver eth2 hacks The EF eth2 research team is excited to sponsor $5k of bounties at ETHDenver 2020! We want to see teams get their hands dirty with eth2 clients and tools, diving deep into Phase 0 testnets, validator tools, user interfaces, browsers, cell phones, and more! Instead of just targeted "build X" type bounties, we want to see more integrative projects that excite you as developers and future validators. This is a chance to expand upon what is already in place, bring value to the burgeoning eth2 ecosystem, and make your mark. Now that the core of Phase 0 is built in robust client implementations and testnets, the possibilities on extending the work are endless. Eth2 hacks should take a high-level integrative approach, focusing on a goal that will benefit developers, researchers, validators, or users of eth2. Prizes will be awarded to the top 3 eth2 related projects -- $2500 for first place, $1500 for second, and $1000 for third. _Note: Eth2 judges will use their discretion when awarding. Projects must meet a minimum standard in quality and/or effort to qualify._ [toc] ## Example Projects The following are examples of hacks that we think would be fun and approachable. They are not necessarily complete ideas and might in many cases just be an initial kernel to get you started. This list is also not meant to be exhaustive. Winning hacks can just as easily have _nothing_ to do with this list. If you are unsure about your hack idea, reach out to one of the many eth2 researchers/implementers on site. The best hacks are those that excite _you_ -- those that lead you down a rabbit hole for the weekend. ### Testnets Try getting your hands dirty with an Eth2 client. Write scripts to control the behavior of the clients and document the results of nodes and the network as a whole. #### Example hacks * Evil Validators * modify an eth2 validator to add support for malicious activity (e.g. double block proposals, slashable attestations, invalid eth1 votes) * spin up single client testnets, coordinate attacks, document results * Partitioned Networks * write tools to coordinate network partitions in an eth2 network composed of a client of your choice * spin up testnets, coordinate network partitions for some time, then rejoin the partions * observe/document the behavior of the network as a whole as well as specific nodes (e.g. does the network resolve itself, do nodes exbihit high load when partitions rejoin, etc) * bonus points for optimizing a client to better handle these exceptional scenarios * Noisy Network * add the recently specified [noise protocol](https://github.com/libp2p/specs/tree/master/noise) to a libp2p implementation * using an eth2 client of the same language, spin up an eth2 network using the new noise protocol #### Quick testnet resources * [Lighthouse ETHDenver Hacker Guide](https://lighthouse-book.sigmaprime.io/ethdenver.html) * [Prysmatic Sapphire Testnet](https://prylabs.net/) * [Nimbus Public Testnet](https://github.com/status-im/nim-beacon-chain#connecting-to-testnets) ### By language The following are example hacks sorted by potential language. Note that some might be applicable to multiple languages/clients! #### Typescript - Hack ([part of](https://hackmd.io/@wemeetagain/rJTEOdqPS/%2FCcsWTnvRS_eiLUajr3gi9g)) Lodestar into a web-page. - Load beacon state into a web-page and summarize information - Deposit checker: verify deposit proof and signature in a web-page - Deposit contract monitor: show live deposits of e.g. the Prysm testnet #### Rust - Lighthouse exclusive [ETHDenver Hacker Guide](https://lighthouse-book.sigmaprime.io/ethdenver.html) -- Check out hack ideas, an ETHDenver public testnet, and more! #### Go - Use [proto's rumor repl](https://github.com/protolambda/rumor) or [Prysm](https://github.com/prysmaticlabs/prysm) to join a testnet and map out activity and peer connections. - Create a testnet leaderboard: points for validators with the most interactions (slashings, deposits, etc.). A great start for incentivized testnets. #### Java - [Enhance metrics/monitoring in Teku](https://notes.ethereum.org/@djrtwo/teku-metrics) #### Nim - Run a [Nimbus beacon-node](https://github.com/status-im/nim-beacon-chain) within an Android app #### Python - Stateless experiments with [remerkleable](https://github.com/protolambda/remerkleable) - Script an evil validator using the py-spec: try to produce blocks and attestations to corrupt a testnet - [Enhance validator key management in Trinity](https://notes.ethereum.org/@djrtwo/rJCWdrRzU) - Extend [RIG's beacon runner](https://github.com/ethereum/rig#beacon-runner) to model economic attack scenarios and show where rational behavior might deviate from the spec ### Other - Education: write-up and visualize how discv5 works, for non-technical readers - Optimization: speed up clients with a new faster approach for one of their functions - Eth1 contract: extend a multi-wallet to control a validator deposit ## [Eth2 Spec Education Resources](https://twitter.com/dannyryan/status/1217823276652613632) * [Eth2 Specs](https://github.com/ethereum/eth2.0-specs) * [Phase 0 for Humans](https://notes.ethereum.org/@djrtwo/Bkn3zpwxB) * [Serenity Design Rationale](https://notes.ethereum.org/@vbuterin/rkhCgQteN) * [Phase 0 for Humans](https://notes.ethereum.org/EbCbXn_BTuuUYqOaLE3iGA?view) * [Validator Lifecycle](https://notes.ethereum.org/@hww/lifecycle) * [Education resources and diagrams](https://github.com/protolambda/eth2-docs#eth-20-educational-resources)