Delegate Hackathon
Hackathon voting is live until 12:00 EDT on July 21st: vote on Snapshot. Voting power has been given to BuidlGuidl project supporters, Buidl Guidl/JuiceboxDAO members, and last hackathon's voters. Vote for your favorite submissions to give them ETH. To ask questions or see updates, visit the #🏰|delegate-hackathon
channel.
Build a Juicebox Delegate (and/or data source) for the Buidl Guidl Juicebox project or somebody else to use. Open to teams and individuals.
The Summer 2023 Hackathon collection.
- Starts at 18:00 EDT on June 28th and ends at 12:00 EDT on July 18th.
- Over $16k in rewards.
- Anyone can pay the @buidlguidl Juicebox project to receive hackathon NFTs – half of the funds in the project will be distributed according to hackathon NFT voting once submissions are closed – the remainder will be used for Buidl Guidl streams and future events.
- Send a message in the
#🏰|delegate-hackathon
channel of the JuiceboxDAO Discord if you're looking for teammates or have questions. - Use the
juice-delegate-template
repository to get going. - Submit your project by sharing its name, a brief description, a repo URL, your team's Juicebox project (to receive payouts), and a demo URL in the
#🏰|delegate-hackathon
channel of the JuiceboxDAO Discord. - Facilitated with love by Buidl Guidl and JuiceboxDAO.
Timeline
18:00 EDT, June 28th: the hackathon begins with a Twitter Spaces featuring JuiceboxDAO + Buidl Guidl members.
12:00 EDT, July 18th: submissions close, and voting opens. All contestants can join the showcase call in the JuiceboxDAO Discord and demo their project to voters.
12:00 EDT, July 21st: voting closes. Rewards are distributed according to the proportion of votes received by each submission.
The Hackathon is being extended to 12:00 EDT on July 18th, and we're accepting more types of projects:
- Ballots are smart contracts which can approve or deny attempts to reconfigure a Juicebox project's funding cycle.
- Split allocators can automate the routing of funds and reserved tokens to and from Juicebox projects.
We're looking for creative and useful extensions to the core Juicebox protocol: data sources, delegates, integrations with other Ethereum protocols, one of the extension types mentioned above, or something else.
If you're interested but haven't started a project yet, now is a great time – if you need help getting started, ask us in the #🏰|delegate-hackathon
channel in the JuiceboxDAO Discord.
Cool interfaces are also highly encouraged: Scaffold-ETH 2 is an open-source toolkit which makes it easier for developers to create and deploy smart contracts and build user interfaces that interact with those smart contracts – feel free to make an interface for your extension or somebody else's, or even for an existing part of the protocol which isn't exposed in other frontends (like the operator permission system).
What's a Delegate?
By default, payments to (and redemptions from) Juicebox projects are handled by the project's payment terminal – a contract which manages token inflows/outflows and accounting for one or more projects.
A delegate contract allows you to extend the default payment/redemption behavior by defining custom post-pay/post-redeem hooks. Delegates (and other customized information) can be passed to the payment terminal's pay/redeem functions by a data source.
- Payment terminal functionality is implemented across several contracts and interfaces.
- Juicebox projects can use multiple payment terminals.
- Project payments and redemptions happen via the
pay(...)
andredeemTokensOf(...)
functions, which invoke theIJBPayDelegate.didPay(...)
andIJBRedemptionDelegate.didRedeem(...)
functions after the default pay/redeem logic has been executed in the terminal contract. - The active pay/redemption delegates are defined by a project's data source.
Criteria
Make an interesting and useful project – criteria is subjective and up to voters!
Our wishlist:
- A data source which functions as a whitelist, allowing the project owner to upload new merkle roots over time.
- A data source aggregator – a contract which allows a project to use more than one data source.
- A Variable Rate GDA data source.
- An NFT collection floor sweeper delegate.
- A nouns.wtf bidder delegate.
For more inspiration, take a look at JuiceboxDAO's contract work backlog or existing delegates: juice-721-delegate
and juice-buyback
.
Extensions to other parts of the Juicebox protocol, unique frontends, and other ideas are all fair game – no hard rules.
Rules
All projects must be open source and use an open source license.
Resources
- Use the
juice-delegate-template
repository to set up your dev environment. If you're not building a delegate, the more genericjuice-contract-template
may be useful. - Watch the delegate contract demo on YouTube.
- Read through the glossary to refresh on or become acquainted with Juicebox terminology.
- If looking for tips to start out, take a look at our guides on building a data source, building a pay delegate, and building a redemption delegate.
- To learn more about payment terminals, read our payment terminal architecture doc.
- To see a sophisticated delegate implementation, read through our documentation for
juice-721-delegate
(which is the most popular delegate thus far).
If the resources above don't answer your questions, send a message in the #🏰|delegate-hackathon
channel of the JuiceboxDAO Discord.