Web3 hackathons are some of the most exciting and rewarding experiences. You are building in uncharted territory with time on the clock, advancing the possibilities of blockchain and decentralized applications. For many who participate, it's the beginning of new products and companies with prize money helping fund new initiatives. Pinata was actually born out of EthBerlin 2018, and recently just passed its 5-year anniversary! We have continued our passion for hacking with our latest entry of Cosmic Cowboys in EthOnline 2023 which was fortunate enough to gain the title of finalist, as well as Swirl from EthGlobal NYC 2023.
Matt Ober and Kyle Tut presenting Pinata at EthBerlin 2018
I had the pleasure of helping build that project on the smart contract side and some of the full-stack apps as well, and one thing I know for sure is that you will want to use the best Web3 tools available. When you’re under a time crunch, speed is everything. The less manual work the better, and since the space is still developing, that can be tricky. Thankfully we got you covered: in this post, we’ll show you a toolkit you can use for your next Web3 hackathon!
Of course, when hacking away you’ll need a few pieces of core software that you’re probably already using, but let's cover the basics and cover a few extras. First, you’re gonna need a solid text editor like VSCode that has good extensions. Often when you’re working in a compiled language like Solidity, having linting and error messages before running code is super helpful, so make sure you look for your appropriate programming language like this one.
You’ll also want to have some core dependencies like Node and NPM to install packages for repos, and package managers Homebrew for MacOS to install other command line tools. I would also recommend something like Raycast which has loads of functionality and a big extension store with plugins made by other devs, like this Pinata one for uploading and managing files on IPFS.
However, Hardhat is not the only option. Another increasingly popular option is Foundry, a Solidity compiler, tester, and deployer written in Rust. It's blazing fast, and has the unique approach of writing both your contracts and your test scripts in Solidity. This helps keep things unified and prevents you from mixing other languages.
One other thing you might need for smart contract development is a blockchain RPC node. These are basically custom URLs you can use to send your compiled byte code to be deployed on a blockchain via an organization-run EVM node. One of the most popular is Alchemy which has generous free offerings, as well as multiple EVM chains to choose from. They’re easy to plug into either Hardhat or Foundry so definitely check them out!
One you have data deployed onchain, the next thing you might need is the ability to get data from it. Whether it's token holds, NFT details, or even raw block info, sometimes getting that info can be a struggle. Thankfully there are some awesome tools out there to handle these requests so you can pass that data to a client-side application. Infrastructure providers will record on-chain transactions and data to populate them into a database, making it easy to fetch anything you can think of.
The first one is —again— Alchemy; they have a plethora of APIs ranging from general chain info to tokens to NFTs, all easy to use with a great developer experience. I would highly recommend this one for NFTs as they even provide things like image thumbnail URLs and different resolutions. The only downside is that they are still in development, so not all chains may be supported. So be sure to check your requirements before starting.
Another power tool in this area is Airstack. Their tools go a bit more in-depth, using GraphQL to create custom on-chain queries. Their app and docs are second to none, making it a breeze to integrate even if you’re not too familiar with GraphQL. Airstack also has a really cool third-party app store-like experience that can index particular information other providers may not access, such as ERC-6551. Give them a look if you only need something basic or if you have advanced needs!
Finally, there is The Graph which is a long-standing protocol that goes deep into chain indexing. They’re a token-powered indexing tool that has multiple layers and levels of ways it indexes and the kind of information it provides, while also using GraphQL as the interface. Certainly worth a look if you have some outer use cases!
Wallet and Auth
Chances are that if you’re building a Web3 application for a hackathon, you’re gonna need the ability to connect a crypto wallet. You could do this work manually, but it can get pretty messy. However, there are now loads of great wallet clients that go above and beyond, giving your dAapp a seamless experience.
First, one you’ll definitely want to check out is Privy; a Web3 wallet and auth service. Unlike just a regular wallet hookup, Privy acts like an auth as a service where people can login with Google or Github, create embedded wallets for them, and even onboard fiat currency in some cases. Not only that but their developer experience is a breeze, which is one reason we use them in Cosmic Cowboys now!
Another fantastic option similar to Privy is Dynamic. They too offer wallets and auth as a service with a great developer experience, with the addition of passkeys into their embedded wallets. One of the difficult things when it comes to managing wallets for non-Web3 users is managing things like a recovery phrase. With passkeys, you can encrypt the data via the device and use that as the recovery. They’re all the rage these days and you should try out their demo to see what is possible and how you could use them in your next app.
Of course, if you don’t need all the auth features and handling, you could also check out some other simple wallet clients. My two favorites would probably be RainbowKit and Family. Both offer customizable chains and styles and a flow for users that is easy to use and understand. You can’t go wrong with either one.
More recent options include libraries like Viem, which is a simple type interfaced library for Ethereum. I’ve personally found myself using this one more and more as other libraries and services use Viem instead of Ethers, and it has been a great experience. Another popular one is Web3.js which is slightly older but still a solid alternative.
When building on blockchains, one of the first problems you’ll encounter is storage. Storing data directly on-chain can get expensive or unattainable depending on how much you’re working with. While you could try a Web2 provider like AWS to store off-chain data, there are some problems with data integrity and decentralization. That’s why the majority of Web3 hackers go with IPFS: the Inter-Planetary File System. It has the unique ability of making your content immutable, content addressable, and portable. Every file uploaded to IPFS gets a Content Identifier (CID) which is cryptographically determined by the contents of that file; you could keep uploading the same file over and over and the CID would be the same. Content is usually fetched from IPFS using IPFS Gateways, however, there has been a history of this being slow.
Thankfully Pinata has worked hard over the last five years making IPFS easy to access and lightning fast. You can upload files or direct JSON objects to IPFS using the Pinata API or SDK, making it easy to integrate into your app flow. Additionally, Pinata makes the retrieval of IPFS content fast with Dedicated IPFS Gateways, which are included in Pinata’s free plan. Definitely sign up for a free account and see how easy it is to use in your next hackathon project!
There are plenty of great Web3 tools and infrastructure out there that we didn’t include here, but hopefully, this list gets you up and running fast for your next hackathon. As some of your small projects start to evolve into larger products with real potential, you’ll be amazed how long some of them stick around and help you scale your business, and that’s exactly what Pinata intends to do :)
Happy hacking and happy pinning!