Check out the Issue Explorer
Looking to fund some work? You can submit a new Funded Issue here.
What is a token buybacks? In traditional finance it relates to share repurchases. Similarly, here a buyback is when a projects (or actually anyone) would like to commit to buying a specific token [let’s call it SpecificToken] to reduce the available number of tokens in the market.
Buybacks are indeed very common, many companies perform buybacks for various reasons. One would be to control the value of their token. By buying back tokens, it increases the value of the remaining tokens.
Check out this Aragon research paper for one specific example of a buyback (and burn in this case) and why a project might want to do this:
There are various difficulties a project could encounter when performing a buyback, such as:
- Through which exchange should the buy back take place?
- How would it publicly announce it?
- Would it be binding?
- How to move funds between exchanges?
The DutchX would be particularly suited for tackling these challenges because it is an open platform for all participants. No funds are accumulated to one particular exchange and no bias towards such may happen. Furthermore, there can be full trustless commitment by the project by pre-committing funds to a smart contract.
**How would a buyback be performed on the DutchX?**
A project would take part as the seller in an auction, most commonly WETH (but could be any ERC20 such as DAI). The auction the project would take part with to buy back their SpecificToken would be WETH-SpecificToken (e.g. WETH as sellToken and SpecificToken as the BidToken).
The project would pre-submit a WETH (or other ERC20) as the sellVolume to a smart contract, which executes the buybacks on its own.
The difference in the process to maybe more traditional buybacks would be that rather than committing to a fixed amount of token that are being bought back, the project would commit to be spending an amount X to buy these tokens back.
Please write a smart contract that easily enables projects to perform token buybacks via the DutchX trading protocol.
### Acceptance criteria
- The smart contract should have customizable parameters to enable projects to easily change these to perform the token buyback through the DutchX
- The smart contract should allow the specification of the the following parameters:
- ERC20 Token used as sellToken (deposited into the auction)
- ERC20 Token that is bought back (the token the buyback is performed for)
- In which specific auction(s) (by index) the buy back should take place (the amount of auctions should be modifiable)
- How much sell funds are committed in which auction index (amounts should be modifiable and not necessarily the same amounts through each auction).
- Optional, but consider adding a burn possibility to the receipt token (once it’s claimed and withdrawn).
- Optional but highly recommended to include how the smart contract is triggered to perform the needed transaction:
- Deposit the sellVolume in the correct indices. This can only happen once the prior auction is ongoing. Include the possibiltiy for any party to trigger this function (anyone who has an incentive may then do so and will have to spend the gas)
- For claim and withdraw, the contract also has to be triggered.
- Consider within your implementation of the “poke method” to give Ether to the one who pokes to compensate for gas cost spent.
- All smart contracts have 100% test coverage with solidity-coverage
- All public methods have netspecs
- Linters are applied (Solium or Solhint)
- Readme with setup instructions and explanations for implementation details
- All code (Variables, function names, comments) is in English
- Use only open source
Additional GNO can be tipped according to the level of technical implementation
Read our [documentation](https://dutchx.readthedocs.io/en/latest/) to get started.
Contact us via [Gitter](https://gitter.im/gnosis/DutchX) in case you need support or have questions.