Meet the Winners
And remember, Part 2 is still ongoing! Congratulations and thank you to everyone that participated thus far!
SWAPR: Trustless token exchange
Overall Winner
SWAPR implements a contract that allows clients to swap a token for an other in a trustless fashion, in a fashion similar to what Uniswap does in the ETH world by having a liquidity pool that earns transaction fees taken on what others exchanges.
When life gives you lemons, make lemonade. When life gives you a smart contract hackathon, make…AN ENTIRE DECENTRALIZED EXCHANGE?! We're fairly certain the username psq means "Pretty Spectacular Qoder", because this project exceeded all our expectations. It's become increasingly clear over the last few years that centralized exchanges present some concerning challenges. Having a single entity escrowing such a multitude of funds can be a security vulnerability. Not to mention the privacy question around KYC requirements to open an account on Binance, Gemini, or other popular exchanges run by a corporation. Decentralized exchanges will be absolutely critical in shifting power away from single points of failure, and giving it back to users. This ambitious submission implemented all of those features and functions needed to perform the trustless swaps, and even included a guides for running on a mocknet and performing the unit tests.

Included in the submission was an entire API for interacting with the project! It outlines all of the functions contained in the contract, with helpful descriptions of the functionality. This hacker also included a phenomenal "Further Thoughts" section of their repository in which they reflect on their experiences, the benefits and shortcomings of Clarity, and other observations on the Blockstack codebase. This type of feedback is so beneficial to our engineering team that is constantly queuing up features & improvements in the pipeline.
Level 2 Winners
Blind Poll
by zexxlin
The Blind Poll smart contract enables users to host anonymous polls, where all submitted answers will be sealed until they're revealed by participants after the poll is closed.
Meanwhile, the contract comes with a fungible token named as BPT (Blind Poll Token) that serves as incentives for users to participate in the poll. Poll creators could choose to put aside some amount of BPT token as rewards for each valid participation, which will get distributed once participants reveal their answers.
Coin Flip
by friedger
Who get's to sit in shotgun? Who gets the last bite of cake? Who gets to start with the ball in overtime? The coin flip is a human legacy. A beautiful physical demonstration of equal probabilities. Unless you are a magician, there is nothing you can do to affect the outcome. It's a no-brainer that this mechanism should be implemented in smart contracts, and Friedger made it happen!
Basically, the contract that implements a read-only function returning a boolean value at random. Each block, a new random true-or-false value is created. It "flips" the coin by looking at the hash of a given block.

The coolest part of this submission, is that included in the documentation are the details for how the contract is used in a betting game. If the user bets on a certain outcome, and another user had already bet on the opposite outcome, the winner is awarded the jackpot!
Property Rental
by hozzjss
This asset rental contract removes the need for trust in a property rental situation. This real-world applicable project solves a tangible problem, and removes the need for intermediaries like a lawyer or bank.
With this contract, negotiation can begin even if the contract is not signed yet. Once both parties agree to terms they can sign the contract. During contract duration, if the renter breaches contract by not paying, the owner is given control to either renew or end the contract. The owner also has the option to extend a grace period, or wave a specific month's fees. However, if the month ends and the owner did not waive payment, the renter would be in debt to the owner.

If the contract duration ended, both parties have the option to renegotiate. Any party can also request the contract be canceled, and would only cancel if both parties agree.

Everyone has that one story about a nightmare landlord. Putting that business logic in a trustless smart contract is the only way to totally avoid sensitive interpersonal, and maybe even legal, complications.
Redistribution
by xmakina
This contract is a pot for redistributing funds. Inspired by the "Mastodon Community Stimulus Redistribution Fund", which aimed at redistributing the US stimulus check to individuals that really need it.
The main issue with the original concept was in sending the donated amounts to the recipients. Centralized services like Paypal didn't like facilitating large amounts of government-distributed funds. This contract would trivialize that issue while still maintaining 100% transparency. This is also an example of cross contract communication with xmakina's Level 1 "endless-list" contract handling adding new recipients to the list.

Also a huge shoutout to this hacker for doing a live demo during our Phase II workshop. Seeing them walk through the code step by step was incredibly educational for beginners, and the real-world applicability helped to convey the potential of smart contracts in general.
Level 1 Winners
Profit Sharing Token
by friedger
This profit-sharing token is a non-fungible token that represents some dividable value into a number of given parts.
The token can be transferred for a price. The price is proposed by a buyer when expressing interest of buying (i.e. creating a call). Then the owner can sell the token to the buyer. When the new owner is re-selling parts of the token the profit will be shared with the previous owner.

Price of tokens or parts of a token, as well as the profit is represented in the contract through the fungible token usdt. The token is minted when creating a call. The amount of tokens show how much many was generated through the sale of the profit-sharing token.
Endless List
by xmakina
This contract allows other contracts to maintain a bottomless, paged, list of items. It's an insanely useful module that can be used by other smart contracts to expand functionality.
It creates a map in clarity which uses page numbers. Each page contains ten items. A certain principal controls the list, and can add new items by calling a specific function. There are numerous other functions that allow you to interact with the list in interesting ways, and even the option to transfer control over to a different principal.

We thought this was an integral building block for smart contract, but also wanted to give a shoutout to this hacker's Advanced submission which built on this and used their Endless List contract in a powerful implementation!
Intermediate Workflow Tasks
by lketchersid
This hacker was thinking big, and built on the project with level of difficulty. The submission was a prototype for tying tasks from multiple blockchains together in a workflow.
Their Level 0 submission is a basic task manager that simulates change in a workflow's task or sub-task status. With their Level 1 submission however, they kicked it up a notch and added status and timestamps from the Stacks blockchain. There are five different types of statuses: not used, not started, in process, completed, and cancelled. Adding timestamps to the status only provides more information to the user, and allows them better decision-making power. This is certainly a real-world applicable project, that would be used in many project management situations.
Election
by elbaruni
This election smart contract is a sample application where an administrator controls adding new candidates, stoping and starting registrations, and stopping and starting voting. Voters are allowed to vote only once if an election is open for voting, and admins can only add new candidates if registration is set to open.
A super useful voting contract with real-world impact. Elections in the real-world are extremely complex and are sometimes biased by intermediaries. Removing the need for trust from the equation, and putting the logic on the blockchain, is a way to increase security and privacy for all participants.
Minting Non-Fungible Collectibles
by radicleart
This contract establishes NFTs in the Clarity language, and implements all the functions needed to interact with them. A digital asset is defined as a space of sha-256 hashes.
It also defines "projects" as spaces of these digital assets. NFTs can then be minted as digital collectibles, and are assigned to an owner address. This allows a platform to charge a small minting fee (business models for the win!). Finally, the contract sets up functionality for marketplaces and auctions. What good is a digital collectible if you can't sell it when it accrues value?!
Room Reservation
by FhilF
Everyone has that one horrible hotel experience. You land after a long flight, haul your suitcase all the way into downtown, and skulk shuffle up to the front desk only to find that the room you reserved months ago has been given away last minute to another party!
Having corporations like AirBnB, Expedia, or Kayak controlling all information around room reservations establishes a single point of failure. Putting this logic on the blockchain would aid in disintermediating the entire hospitality industry, which can be notoriously plagued by process debt.

All the functionality is here. A customer needs to check that they have the right amount of funds for a downpayment. A check is also made to ensure the room is still available for rent. The customers downpayment is then deposited in the owner's account to reserve the room. Finally, the remaining balance is deposited in the owner's account to officially confirm the reservation.
Conference
by antonia-cherednichenko
This is an intriguing project that implements conference ticket sales in a smart contract. A conference owner is designated as a principal, start time and end time is set, and ticket price is calibrated. To buy a ticket for the conference, you call the buy-ticket function, and then "enter" the conference by calling the enter-conference function.
Level 0 Winners
Auction
by Dotrungkien
It is a simple but extremely real-world applicable submission that implements all of the functions needed to facilitate an auction. The contract can create a bid, get a start price, get the highest bid, get the highest bidder, get the latest bid, and get the winner if the max bid count has been reached.
Humans have been transferring value through auctions since the ancient Greek forum. It's a traditional way of giving multiple people a shot to purchase an asset at competitive pricing. It's only natural this mechanism would eventually migrate to the blockchain! This project is a basic smart contract used to buy assets in an auction that follow a certain set of rules. Each auction will be ended after five turns. If five turns is not reached, the asset will remain with the asset owner. However, the fastest bidder with the highest bid will end up being the winner.
Morning Alarm
by sprect8
For all those individuals who aren't exactly "Morning People", this may just be the smart contract for you…
Let's imagine you set up an alarm clock that links to the blockchain. You want to incentivize people to wake you up in the morning! This hacker thought really creatively, and used the blockchain to wakeup bright-eyed and bushy tailed.

The clock uses an oracle to initialize the alarm when the time is right. You don't want users to be able to activate the alarm whenever they want! That then allows users to bid on the wake-up time by sending $STX, and it's winner takes all! However, the sleeper is able to click the snooze button. This gives 10% of the bounty to the person who triggered it. If the sleeper decides to wake up and click an "Awake" button, it awards to full bounty and resets the timer.
High Score
by xmakina
This simple contract implements a high score tracker using branching logic (if statements) and maps in Clarity. First, an initial score is set. The current high score can be queried at any time. When a user submits a new score, the contract checks it against the current high score. If the new score is higher than the current high score, the scoreboard is updated and the new entry becomes the high score. If the new score is lower than the current high score, nothing changes. Intuitively, the contract also has a function for users to change the name associated with their score!
Basic Workflow Tasks
by lketchersid
Project management applications have taken off immensely in the last decade. Apps like Trello, Asana, or Jira allow you to create tasks and track them to completion. This is important, sensitive data though that users would prefer to be in control of. Putting this business logic on the blockchain ensures security and ownership.
This submission did just that, and implemented a basic workflow and sub-task structure into a Clarity smart contract. There are five different types of statuses: not used, not started, in process, completed, and cancelled. A team could use this project during a software development sprint to track feature completion, release versions, task delegation, and much more.
Basic Vote
by betosmith2000
Someone once said: "Elections have consequences." Well then I say they better have the security of the blockchain!
It may seem like a simple mechanism, but it's the beauty of the blockchain that allows something as basic as voting to occur in a trustless manner. This contract sets up the infrastructure for voting between two candidates.

All the functions you would think a voting contract would need are here! You can call get-winner to see the winner of the vote. The get-allow-vote enables voting. There are functions to vote for each of candidate #1 and candidate #2. Finally, the close-vote function ends the round of voting and locks in a winner.
Register
Step-by-step instructions resources will be sent when you register on Gitcoin.


Community Partners