We allow for a more sustainable financing of mission critical open source projects that better aligns depositor's sense of altruism with their profit motives by introducing a new Defi money lego
Bazaar Finance allows developers to capture value for their work in open-source software though decentralized finance (DeFi) protocols. Thanks to lending protocols, users around the globe now have a new avenue to fund the open-source tools they find valuable. Not by dipping into their wallets, but via interest earned on their savings. Instead of having to actively give lump sums or set up recurring monthly donations, people can allocate a portion of interest they earn, passively and transparently, with the ability to withdraw their principle at any time.
Bazaar gives OSS developers a recurring, predictable source of income for their work, and an avenue for depositors to earn yield on their savings after the recipient goals have been met.
Depositors pool their contributions towards an OSS project, and the interest earned on the total of deposits gets allocated to the developer that maintains it. This interest is withdrawable by the developer (the recipient) at any time. Any additional interest that is surplus to the recipient's stated desired salary gets reallocated to depositors.
recipient can decide on the token they want to be paid in, and the goal amount they wish to be paid each month (salary).deposit a specified amount of the project's chosen token, e.g. DAIbToken, redeemable for underlying funds when they withdraw their principal (and any additional interest) from the VaultVault. Every 30 days, the accrued interest gets allocated to be recipient, available to be withdrawn.salary for that month, additional interest earned for the remainder of that month gets allocated to depositors.withdraw a specified amount at any time.withdraw their principal (and any additional interest) at any time.Example scenario:
amount of her funds, earned through interest accrual of deposited funds, at any time.* The 1-1 exchange rate only applies to the initial deposit into the Vault. The exchange rate for a project's bToken is dynamic depending on how much has already been deposited into its Vault, which is why each project necessarily has its own bToken in addition to its own Vault. See the bTokenExchangeRate section for more info.
The smart contract was built on Ethereum using Hardhat Framework, Open Zeppelin, Solidity and TypeScript
The client application was built with React JS, using web3-react, create-eth-app, EthersJS and JavaScript (ES6)
Deposited funds accrue interest through the AAVE Liquidity Protocol
bTokens deployed for each recipient project adhere to the ERC20 Token Standard
Vault and its associated bToken contract. For the MVP, this is done by calling createVault and createBToken in the VaultFactory contract.The project's bToken is deployed first, and then its Vault is deployed with the following parameters
recipient address
salary desired amount the recipient wants to earn each month for working on the project
token address of the ERC20 the recipient wishes to be paid in (e.g. DAI)
aToken address the interest-accruing version of the token, issued through Aave
bToken address of the project's bToken, created through createBToken
Individuals who wish to contribute the interest on their savings to fund the project can deposit a specified amount of the projects token into its Vault.
The deposit gets automatically swapped to the interest-accruing equivalent on Aave, and is stored in the Vault.
The depositor gets minted the project's bToken, redeemable for underlying funds when they withdraw their principal (and any additional interest) from the Vault
Interest on deposits accrues to the project's Vault. Every 30 days, the accrued interest gets allocated to be recipient, available to be withdrawn.
If the interest accrued from the sum of deposited funds exceeds the recipient's desired monthly salary for that month, additional interest earned for the remainder of that month gets allocated to depositors.
Recipients can withdraw a specified amount at any time.
Depositors can withdraw their principal (and any additional interest) at any time.

