Zilliqa / zilliqa-bounties

Bounties to work on zilliqa related projects.
2 stars 5 forks source link

ZBounty-2: Create continuous token bonding curve Scilla contracts #2

Closed arnavvohra closed 3 years ago

arnavvohra commented 4 years ago

Bounty task:

Create contracts for continuous token bonding curves - these allow dev teams to launch DAICO type token projects.

A bonding curve contract is one that issues its own tokens through buy and sell functions. To buy tokens, you send a reserve token that can be $zil or a stablecoin to the buy function which calculates the average price of the token in reserve token terms and issues you the correct amount. The sell function works in reverse: first you provide the bonding contract with permission to take the amount of tokens you want to sell and then you trigger the function to take those tokens from you. The contract will calculate the current average selling price and will send you the correct amount of $zil. Ideally, in your bonding curve contract, there should be a spread between buying and selling with the spread amount going to an address owned by the development team.

The bonding curve model ensures that a spooked community can instantly hold the developers to account by selling all their tokens, driving the price to zero. At that point, even if there is a spread between buy and sell, the market has effectively dried up for the team

Deliverables:

1) Main bonding curve contract - calculates purchase and sale returns as well as holds reserve token balance. Reference: https://github.com/AragonBlack/fundraising/blob/master/apps/bancor-formula/contracts/BancorFormula.sol

2) Tap contract - allows the development team to withdraw funds (capped) from the bonding curve contract to sustain the organisation. Reference : https://github.com/AragonBlack/fundraising/blob/master/apps/tap/contracts/Tap.sol

3) Provide documentations for said implementation and its relevant test cases.

Relevant Links: Bonding curve resources exhaustive list: https://discourse.sourcecred.io/t/bonding-curve-references/271

Bonding curves explained : https://medium.com/coinmonks/token-bonding-curves-explained-7a9332198e0e

Bonding curves mathematical overview : https://yos.io/2018/11/10/bonding-curves/

Bounty help list: Getting Started on Zilliqa: https://dev.zilliqa.com/docs/dev/dev-started-introduction

Zilliqa API documentation: https://dev.zilliqa.com/docs/apis/api-introduction

Scilla Language Documentation: https://scilla.readthedocs.io/en/latest/

Zilliqa Developers' Channels:

Discord Group : https://discord.com/invite/XMRE9tt

Telegram Group : https://t.me/ZilliqaDevs

gitcoinbot commented 4 years ago

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


This issue now has a funding of 105049.8984 ZIL (2006.13 USD @ $0.02/ZIL) attached to it.

gitcoinbot commented 3 years ago

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


Work for 105050.0 ZIL (7462.33 USD @ $0.07/ZIL) has been submitted by:


gitcoinbot commented 3 years ago

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


Work has been started.

These users each claimed they can complete the work by 264 years, 5 months from now. Please review their action plans below:

1) jseam2 has started work.

I will be working this project with my spare time, I might not be able to update regularly. I will try to work on this during the weekends. I intend to merge deliverable 1 and 2 in a single DAICO Scilla contract porting BancorFormula.sol as well as the Tap.sol to Scilla where suitable. For deliverable 3, I intend on using Zilliqa's Ceres to perform automated testing on the contract along with a javascript testing suite like Mocha and Chai similar to what is available with Truffle. Relevant documentation will be provided in the README.md found in the repo upon submission. 2) saveascj has started work.

I'd like to give it a try, hope I can finish this job. 3) cjsaveas has started work.

I'd like to give it a try, hope I can finish this job. 4) sjosegarcia has started work.

This is my first expierence working with scilla. I will take a look at the sol examples and see how far I get. 5) gitcoindeveloper has started work.

A bonding curve contract is one that issues its own tokens through buy and sell functions. To buy tokens, you send a reserve token that can be $zil or a stablecoin to the buy function which calculates the average price of the token in reserve token terms and issues you the correct amount. The sell function works in reverse: first you provide the bonding contract with permission to take the amount of tokens you want to sell and then you trigger the function to take those tokens from you. The contract will calculate the current average selling price and will send you the correct amount of $zil. Ideally, in your bonding curve contract, there should be a spread between buying and selling with the spread amount going to an address owned by the development team.

The bonding curve model ensures that a spooked community can instantly hold the developers to account by selling all their tokens, driving the price to zero. At that point, even if there is a spread between buy and sell, the market has effectively dried up for the team 6) mszbednarski has started work.

So I'll build the contract and then I will create an SDK for it in typescript a Higher order SDK from Zilliqa sdk. 7) jakubhajek91 has started work.

Send crypto and casch im happy

Learn more on the Gitcoin Issue Details page.

gitcoinbot commented 3 years ago

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


Work for 105050.0 ZIL (12164.47 USD @ $0.12/ZIL) has been submitted by:

  1. @chethan-4255

@arnavvohra please take a look at the submitted work: