This project connects whiskey enthusiasts with craft distilleries. A distillery can post a small batch whiskey onto the platform, specifying the initial price, estimated final selling price, number of bottles offered and, barrel characteristics. In turn, investors can purchase a bottle of whiskey at any stage of the aging process as an ERC115 token. This ties the token to a tangible, naturally appreciating asset managed by craft distilleries who retain 30% ownership of each barrel. The partnership with a small distillery mitigates some of the usual challenges with connecting the digital to the physical as it aims to increase transparency and ensure aligned monetary incentives between the investor and producer. At the end of the aging process, Investors can redeem their tokens for the final matured whiskey.
To integrate with Aave, each the distillery specifies the lifetime storage and maintained fees for each bottle offered. Those fees are added on when and investor purchases a bottle, and they are immediately deposited into an Aave interest bearing account. When the investor redeems their purchase for the bottle, they receive all interest associated with the fees they paid.
Whiskey MarketMaker consists of two main smart contracts: WhiskeyPlatformV1 and BarrelHouse. BarrelHouse inherits from Openzeppelin's ERC1155 and keeps the tokens and ownership data separate from the platform itself. Contracts with the "PLATFORM_ROLE" are allowed to mint new tokens. This way if we create a V2 of the platform we can authorize a new contract to mint new NFTs. The WhiskeyPlatformV1 handles the creation of new listings and payment processing. Maturation and price data are stored here. When a user purchases a bottle, we verify the price with the Chainlink USD/ETH price feed, then the bottle's ETH value is sent to the distillery's registered address, and the fees are wrapped into aWETH tokens. Then, when bottles are redeemed, the user is paid the interest off the fees according to their total share of investment. We used hardhat and ethere.js to build and test contracts.
The frontend is build with react, @web3-react, ethers.js. Currently, we only support web based wallets.