Ultimate Ethereum Hackathon Survival Guide for 2021
Everything you need to know for your next Ethereum hackathon: essential developer tools, expert setup tips, and support resources to help you build a winning dapp.
Join our Discord Server to Ask Us Questions in Realtime
Chat with Developers, Ambassadors and Community Members
Benefits of Going to an Ethereum Hackathon
Whether you’re competing virtually or in the real world, Ethereum hackathons are excellent opportunities to get hands-on development training, collaborate with hackers around the world, win cash prizes, and get your name and your project out there. Hackathon challenges range from bug fixes to new features to integrations to research projects. It always pays off to have a detailed work plan so sponsors and teammates can provide specific feedback and know you mean business. This survival guide will run through some key resources and best practices, as well as walk you through the optimal setup for your development environment. Use this survival guide as a quick-reference as you open up tabs for specific repos and technical docs. Happy BUIDLing!
"I dug into the blockchain space like a big puzzle to be figured out. Once you go down the rabbit hole, there's no going back, and who would want to?"
Tom Lindeman - Co-Founder of MythX
What It Takes to Win
Here’s some inspiration before you hit the command line. Below are a few Gitcoin Hackathon winners that solved real pain points for both devs and end users. For a fair number of devs, winning a hackathon is a jumping-off point for them to pursue their dapps full-time. Some pro tips: team up so you can learn from veterans, come in with a plan of what you want to build, divide and conquer, and remember, judges love demos. Show off your submission’s features and explain how it solves a real problem.
Enable – a peer-to-peer stablecoin credit marketplace that received additional funding through a Consensys Labs grant.
gDai – enables gasless DAI transfers by using compound interest on DAI to pay for gas.
SwapForum – a bulletin board for trading that integrates with the AirSwap Trader widget.
Tools and Knowledge Bases You Should Bookmark
The Ethereum community produces content at a rapid clip. Here are a few go-to resources to bookmark that you’ll find yourself revisiting as you become a more experienced builder.
Ethereum Developer Tools List – Expansive GitHub repository of dev tools curated by experts at Consensys.
Ethereum Developer Portal – Consensys’ developer gateway for everything from programming libraries to webinars to job kits.
Blockchain Knowledge Base – Answers to the 40+ most popular questions about blockchain, intros to Ethereum, Ethereum 2.0, and more.
Ethereum Foundation – Overview of Ethereum, as well as getting started guides for devs. Check out their Ethereum Studio for a first dive into a smart contract and to see what Solidity looks like. Here’s a tutorial video on how to use Ethereum Studio.
Kauri’s Getting Started Community – Kauri is an Ethereum-based knowledge network for technical docs that are curated by the community. This collection will provide you with technical tutorials so you can quickly start building blockchain applications. Check out their recent hackathon collection.
Week in Ethereum News – A weekly newsletter for devs about the latest news in the Ethereum ecosystem, from Layer 1 developments to application layer progress.
Pre-Hackathon: What You Need Before You Go
Noobs: Come with questions
If you’re attending a hackathon to learn, it’s a totally fine and good thing if you’re discovering new tools the day of and asking for help with your setup. Hackathons will help you upskill rapidly. Make sure you ask a ton of questions and even prepare some questions in advance to get the most out of your time at the hackathon. Scan the list of workshops and speakers to identify the veteran developers who you feel can best answer your questions and make a plan for approaching them during the event. Remember, it might take two to three hackathons to really understand certain development workflows and to identify the key factors you’re looking for in a team. Before you go, think about the experience you want to have. You don’t want to walk away from the hackathon regretting that you didn’t approach a badass dev. And plan around the basics: coffee, bathrooms, temperature, distractions. Don’t go out too hard the first night if you don’t want your terminal to look blurry the next morning. Or maybe you code better when you’re loose. The hackathon is about your journey as a dev, so make it yours.
Pros: Come with tools
Most in-person hackathons instruct participants to not work on their projects beforehand. However, before the hackathon, you should at least make sure that you can deploy a smart contract to your local blockchain and identify common bugs that could otherwise eat up your time during the event. So have all your tooling ready before the hackathon and get familiar with it. You should install and configure Git, Docker, homebrew, npm, chocolatey, node.js, react.js, and/or angular.js, and other tools you may need before the hackathon, so you don’t spend valuable time on basic setup. You don’t want to be discovering your new favorite tool in the midst of the hackathon if your intention is to win.
Quickstart
The fastest way to get started is to go through the Consensys “Getting Started with Ethereum” three step guide. It will get you set up with all the necessary tools you need to succeed at your hackathon. If you need further details, check out the deep dive into tools we provide below.
Text Editors and Integrated Development Environments (IDEs)
Okay, you’re one week out from the hackathon. Now it’s time to download your tools and ensure that you have everything set up before you get to the hackathon. Start with your text editor or IDE. If you already have one you prefer, start by getting the Solidity linter. If you don’t have a preferred text editor, pick from the options below, and open Remix IDE in your browser. Remix: an in-browser IDE. Whether or not you have a preferred text editor or IDE, you should use Remix at the start of the hackathon, since it’s useful for rapidly writing and testing your smart contract code. Use Remix to start your development—you can move your code over to your favorite IDE/text editor once you feel you have worked out the initial bugs and are thinking about writing tests for your code.
Remix Documentation for answering any questions about how Remix works
Remix GitHub for the source code
Remix GitHub issue explorer for reporting and identifying issues
Remix Gitter is a great place to interact with other users of Remix and ask for help
Visual Studio Code: Microsoft’s code editor. Useful for those who are new to the Ethereum space AND do not already have a preferred text editor or IDE.
Solidity linter. The Solidity linter for VS code is very opinionated, so keep that in mind if you choose VS code.
Vyper linter provides syntax highlighting for Vyper in VS Code.
MythX for VS code is a smart contract security tool
VS Code Extensions add features and tools to VS code, which can be helpful in your development process
VS Code documentation provides answers about how VS Code works, tips, tricks, and instructional videos
VS Code GitHub for the source code
VS Code issue explorer for reporting and identifying issues
VS Code Gitter is a great place to interact with other users of VS Code and ask for help
Atom text editor: a text editor created by GitHub. Useful for those who love the design of GitHub’s products. Has a teletype function, which allows you to collaborate in real-time with your team if you are all using Atom.
Solidity linters will help with the formatting and readability of your Solidity
Atom GitHub for the source code
Atom Documentation for understanding the features of Atom
Atom GitHub issue explorer for reporting and identifying issues
Sublime text editor: text editor with great search functionality (goto is the name of the function).
Syntax highlighting for Ethereum is a GitHub repository that will allow you to add syntax highlighting for Solidity and Vyper to Sublime
Support and Documentation will help answer your questions about how Sublime text works
Forum for asking questions and reporting bugs for Sublime text
How to Run Ethereum on Your Machine: Local Chain, Clients, and APIs
You’ll need to install the software that will allow you to run a blockchain locally on your computer or connect to a blockchain. Our recommendation is that you run a blockchain locally, since this is the easiest way to quickly build and iterate during the hackathon. Download Ganache the week before the hackathon and use that for running a blockchain on your machine. You should be comfortable using Ganache and getting things like account information. Once you do, you can save your workspace to save even more time and effort during the hackathon. Ganache: a one-click blockchain from Truffle. Allows you to create a private Ethereum blockchain on your machine and has both a GUI-based application and a command line interface.
Ganache Quickstart walks through installing and setting up Ganache
Ganache Documentation for understanding the features of Ganache
Ganache GitHub for the source code
Ganache GitHub issue explorer for reporting and identifying issues
Go-Ethereum: an Ethereum client, often called “Geth,” that can create a blockchain locally on your machine, connect to a testnet, create a private network, or connect to mainnet. Geth is the official Golang implementation of the Ethereum protocol. It has had hundreds of contributors since it was started in late 2013. Geth is battle-tested and important for you to know about, even if you do not use it in your hackathon.
Geth Getting Started Guide details account creation, sync instructions, and javascript console interaction
Geth Documentation for understanding the features of Geth
Geth GitHub for the source code
Geth GitHub issue explorer for reporting and identifying issues
Geth Discord Channel is a great place to interact with other users of Geth and ask for help
Ethereum Smart Contract Development Framework
A week prior to the hackathon, you need to make sure that you download and set up your smart contract development framework. We recommend Truffle, which has become devs’ go-to environment, testing framework, and asset pipeline for blockchains using the Ethereum Virtual Machine (EVM). Install using the instructions below, and then follow the Truffle Quickstart to ensure you understand the framework’s functionality. Truffle: a comprehensive suite for writing, compiling, testing, and deploying smart contracts.
Truffle Quickstart gets you using a pre-built smart contract to understand its functionality
Truffle Documentation for understanding the features of Truffle
Truffle Tutorials are walkthroughs of specific uses of Truffle
Truffle boxes are boilerplates that contain pre-written smart contracts, pre-loaded libraries, and pre-built front-ends. Downloading a Truffle box can help you maximize the time you have at your hackathon by building off of the work that has already been done for you by the Truffle box.truffle compile
Truffle Gitter is a great place to interact with other users of Truffle and ask for help
Truffle GitHub for the source code
Truffle GitHub issue explorer for reporting and identifying issues
Also, you don’t have to reinvent the wheel when it comes to basic smart contracts. OpenZeppelin has an open source repository of audited smart contracts that you may find valuable.
OpenZeppelin GitHub for the audited contract repo
OpenZeppelin ERC-20 variants for making your own token
OpenZeppelin ERC-721 interfaces, contracts, and utilities for non-fungible tokens
How to Use Testnets and Get Test Ether
We recommend using Ganache to run a blockchain locally on your machine. Each account in Ganache comes pre-loaded with test Ether, so you’re all set from the start. If you are using a testnet instead of a blockchain deployed locally on your computer (again, for the sake of simplicity, we recommend just running the blockchain locally on your machine), you have to get test Ether beforehand, or else you will not be able to send transactions, which means you can’t deploy your smart contract and you’ll be stuck in limbo during your hackathon. If you’re determined to use a testnet instead of a local deployment, here are a few faucets where you can request testnet Ether:
Also, check out this beginner’s guide from Compound on how to use an Ethereum test network.
How to Connect Your Front-End to the Back-End
So you can read data from and write data to the blockchain, you need to have either Web3.js or Ethers.js as part of your developer workflow before the hackathon. Regardless of whether you use Web3.js or Ethers.js, we highly recommend you set up MetaMask beforehand as well. Web3.js: an Ethereum javascript API that connects to the blockchain on which you’ve chosen to build your decentralized application. Web3.js allows you to read data from and write data to that blockchain.
Web3.js Getting Started shows how to quickly get up and running using Web3.js
Web3.js Documentation for understanding the features of Web3.js
Web3.js Gitter is a great place to interact with other users of Web3.js and ask for help
Web3.js Forum is a great place to ask questions and get answers from users of Web3.js
Web3.js GitHub issue explorer for reporting and identifying issues
Ethers.js: an Ethereum javascript API, similar to Web3.js, but is a smaller library.
Ethers.js Getting Started shows how to quickly get up and running using Ethers.js
Ethers.js Documentation for understanding the features of Ethers.js
Ethers.js Cookbook is a collection of samples to perform certain common tasks
Ethers.js GitHub issue explorer for reporting and identifying issues
Ethers Gitter is a great place to ask questions and get answers from users of Ethers.js
Twitter: @ethersproject
For a comparison of Web3.js and Ethers.js, here’s a helpful Web3.js vs. Ethers.js cheatsheet with some sample front-ends. Infura has a useful two part series – Ethereum JavaScript Libraries: Web3.js vs Ethers.js Part I and Part II (tutorial) MetaMask: allows you to run Ethereum dapps right in your browser without running a full node. MetaMask provides you with a secure identity vault and wallet for managing your identities across different sites and signing blockchain transactions. You can install the MetaMask add-on in Chrome, Firefox, Opera, and Brave.
Getting Started with MetaMask is an overview of how to download and use MetaMask
MetaMask Developer Documentation for understanding the features of MetaMask when using it as part of building a dapp
Getting Started Developing with MetaMask gives you instructions on how to connect MetaMask to your local blockchain (like Ganache)
MetaMask support are articles on how to use MetaMask and FAQs
MetaMask GitHub for the source code
MetaMask GitHub issue explorer for reporting and identifying issues
Connecting It All: Double-check Your Environment
Alright, you’ve downloaded everything you need and feel geared-up to hack. Now it’s time to take your tools for a spin by trying them out with a sample decentralized application. Go through Truffle’s tutorial on building an Ethereum Pet Shop application. This tutorial will ensure that you are able to successfully use your IDE/text editor, Truffle, Ganache, Web3.js, and MetaMask, and it will build your confidence that you can get up and running on the day of the hackathon.
Day of the Hackathon: 4 Pro Tips
It’s officially time to get hacking. You’re excited, a little nervous, and totally prepared. Make sure you arrive at the venue on the earlier side of registration so you can find out where the snacks and drinks are, locate the bathrooms (more important than you think), connect to the Internet, scope out the most comfortable locations to hack, and start meeting your fellow hackers and members of the community. Here are four specific pro tips to guide you on the day of:
Stay lightweight and account for connectivity
If you’re going to an in-person hackathon, think about Internet connectivity and the challenges that hacking over a public WiFi might mean for you. You should have already downloaded and installed all your tools, but if for some reason you need to redownload and install tools like Truffle or Ganache using npm, it will not be a huge issue. Installing an Ethereum client and syncing it with mainnet at a hackathon is a poor choice. We’ve recommended tools and setups that are lightweight and let you focus on building quickly. However, every option has a cost in terms of time to install and usability, so think through the specific parameters of your hackathon and how the tools that you use could impact what you ship.
Keep any documentation you need at the ready
For whatever tools you choose to build with, keep the documentation open on a tab on your web browser. We designed this survival guide to be a quick-reference compilation of some key links you’ll need.
The community is your friend
Can’t say it enough. Make sure you connect to the Discord, Gitter, and/or Slack channels of the tools that you end up using. The community often has helpful answers to any questions that you might have. Meet people on the ground, both to find potential teammates and to identify experts who can help you debug a smart contract when you run into issues. Consensys is running a help desk at ETHDenver, staffed with knowledgeable and friendly technical folks. Join our Discord and say hello before you run into an issue so they know who you are. We might even have a few surprises for you if you come talk to us in person!
Keep it simple
Hackathon winners are often able to create a proof-of-concept during their hackathon and limit themselves to that scope. Time limits mean that you won’t be able to sort out every detail or fix every bug. The simpler you keep the scope of your project, the more likely that you will be able to bring a version of it to life. Remember, for most hackathons, your app does not have to be ready to deploy out to the world.
"I dove deep into Ethereum and loved the elegance of the technology and what it could do. Then I saw the types of problems it could solve, and I was hooked."
Rob Dawson - Product Lead at PegaSys
Post-Hackathon: Taking Your Dapp to Production
Congrats! You just survived an Ethereum hackathon! You’ll probably want to: sleep for two days, show off your work/prizes to your friends and family, retro what you built with your team or on your own. And then it’s time to start thinking, what do you do with what you just built?If you want to turn your proof-of-concept into a fully functional application, you need to think about four things.
Smart Contract Security
Hackathons are about speed and simplicity. But before you even think about deploying your proof-of-concept and onboarding users, you need to scan your smart contracts for vulnerabilities. From static code analysis to input fuzzing to symbolic execution, you want to run multiple analysis processes on your code. To make your smart contract auditing easier, we built a robust API to help you continuously analyze your code throughout the development lifecycle. MythX: a smart contract security analysis service that scans your smart contract and identifies vulnerabilities. It integrates with VS Code, Remix, and Truffle, making it an easy addition to your workflow.
MythX Quickstart is a guide to using MythX with Truffle via a plug-in, allowing you to get started immediately
Remix integration with MythX shows you how to install the MythX plug-in in Remix
MythX User and Developer Guide contains documentation on how to use MythX
MythX Blog is a helpful repository of common smart contract security issues, behind-the-scenes analyses, and methods for continuous testing
MythX Discord is a great place to interact with other users of MythX and ask for help
MythX FAQs for answers to common questions
Scalability
Once you’ve patched any vulnerabilities in your application, it’s time to get it out to users so they can begin using and testing it. Deploy first to a testnet, and when you feel ready, deploy to mainnet. Infura is Ethereum developers’ go-to lightweight option for connecting to mainnet and supports thousands of decentralized applications daily. Infura saves you the hassle of running a full node and they also have excellent user support. Infura: instant, scalable, and reliable API access to Ethereum and IPFS networks. Infura uses HTTPS and WebSockets to provide request response times up to 20x faster than other services and self-hosted solutions. Devs can use Infura’s dashboard to configure, monitor, and analyze their dapps and also add on Ethereum archive node data for a historical view of the network.
Register for an account
Getting Started is a step-by-step tutorial to set up and start using Infura
Infura Documentation for understanding the features of Infura
Community page (Questions, Answers, Bugs) for reporting and identifying issues
Infura Blog for case studies, benchmark analyses, and best practices
Infura GitHub for the source code
Unique Functionalities
Your application may have a specific use case that requires unique features related to your users. For example, you may only want certain users or participants to be able to write data to the blockchain via your application. While you could code up this sort of functionality on your own, PegaSys, the protocol engineering team at Consensys, has already built out these features in an open source Ethereum client called Hyperledger Besu, which provides various options for consensus algorithms and node and account-level permissioning. Hyperledger Besu: an Ethereum client written in Java with advanced permissioning features. Hyperledger Besu can create a blockchain locally on your machine, connect to a testnet, create a private network, and/or connect to mainnet. If you need a specific consensus algorithm beyond PoW, Besu gives you options like IBFT out of the box. If you’re an enterprise developer who’s looking to make in-roads at your company to drive the adoption of a blockchain solution, Hyperledger Besu is a powerful resource to guide your discovery process.
Getting Started with Hyperledger Besu (installation instructions)
Hyperledger Besu Essentials Course (video installation instructions)
Hyperledger Besu Documentation for understanding the features of Hyperledger Besu
Hyperledger Besu GitHub for the source code
Hyperledger Besu issue explorer (Jira-based) for reporting and identifying issues
Hyperledger Besu Wiki contains documentation, information on the roadmap, and recordings of developer community calls
Hyperledger Besu Chat is a great place to interact with other users of Besu and ask for help
Usability
When you were hacking together your application, you probably sacrificed significant time on the user experience in order to simply finish your proof of concept. Now that you’ve audited and deployed your application, you want to ensure that your dapp offers a seamless, simple, and trustworthy user experience so you can keep driving adoption. The Ethereum community has identified some battle-tested components, user flows, and language schemes that can guide your user through the unique experiences of a dapp, from sending a transaction to connecting a wallet. Rimble: an open source design system of React components based on user research and optimized for blockchain-based applications.
Rimble Getting Started walks you through downloading the UI and components
Rimble Components is the component library, organized from A to Z
Rimble Guides are research-led guides for creating user-friendly blockchain experiences, both for patterns of design in the application and the written content
Rimble Design Kit allows you to sketch, design, and prototype using Rimble components in Figma
Rimble Connection Demo and Rimble Transaction Demo are demo applications that show off the Rimble components and design system
Rimble GitHub for the source code
Rimble GitHub issue explorer for reporting and identifying issues
Upcoming Ethereum Hackathons
We hope you found this survival guide useful for both preparing for hackathons and for taking your projects to the next level post-hackathon. We designed this guide to be a go-to resource that you can always return to, so definitely bookmark it for your next hackathon, and share it with any fellow hackers who you think would find it helpful. Also, we’d love to hear from you. Did you hack something awesome together? Stuck in one of these workflows? See anything missing here? Jump into our Discord server to connect with us and the rest of the community. EthDenver Virtual 2021 is February 5 – 12! Make sure you check out current hackathons on Gitcoin so you can skill up, connect with the community, and take the next step in your journey as a blockchain developer. And remember, as Gitcoin founder Kevin Owocki has said: “Every time you build on ETH, you can build on the tools others have built.” Call it composability, shoulders of giants, or money legos. Someday, what you build might just be the legos for someone else. BUIDL on.
"The best thing about building dapps is building on the shoulders of giants. The generations of OSS maintainers who have built the software that comprises our digital infrastructure have enabled us to live, breathe, and work on the Internet of money."
Kevin Owocki - Founder of Gitcoin
Subscribe to Consensys newsletters
Get developer tools, pro tips, and more straight to your inbox. SUBSCRIBE