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 Vault
Vault
. 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.