---
# System prepended metadata

title: '[asmr.finance](https://asmr.finance) Litepaper'

---

# [asmr.finance](https://asmr.finance) Litepaper

asmr.finance is name of $ASMR token, which aims to be first to implement the proof of donation in a trustless way in blockchain space.

- For smart contracts and other open source components of the project: https://github.com/asmrfinance

## 🎯 Purpose

- Developing a smart contract which donates an amount propotional to purchase amount for charities while purchasing a token.
    - Being first to test this smart contract by deploying the a token with this launch mechanism.
    - Allowing team of new tokens which didn't launch yet to distribute their tokens faily by also contributing to the favourite charity of buyers.
    - Requiring users to donate to a charity during a airdrop process to increase impact of token and grow the community.
- Recently, lots of token projects launched with promising to donate to charities but lots of them were scam. We are trying to solve this issue by creating one trustless smart contract where people can decide which charity to donate themselves.
    - At the same time, we need to protect people from scams by creating a "charity list" so user won't be exposed to fake charities. It is similar to idea of Uniswap but for charities.
        - We are working on another token where $ASMR holders will get through airdrop, this token will make the charity lists completely community-governed and trustless using a simple solution.

## 🛠 Implementation

Both of [smart contracts](#) are written in [Vyper](https://github.com/vyperlang) for complete simplicity of implementation.

- `Sale.vy` is the implementation of "Proof of Donation" trust-minimized as much as possible.
- `Token.vy` is a simple token with burn mechanism and ACL.
    - At this time, token does send to `address(0)` and do not redistribute it to the holders (redistributing it does not make any sense but only consumes gas).

### Sale

Sale contract is earliest implementation of proof of donation. 

1. Admins create a list of accepted charities in the smart contract and users can choose the charity from that list.
2. Users use the `purchase(uint256 _min, address charity)` function, by entering minimum amount they want to receive and address of **allowed charity** which they want to donate.
4. Users receive token amount which is above `_min` and admin receives remaining amount from the `msg.value`, which is `self.balance` at the same time as sale smart contract does not hold any funds.

#### Interesting points
- During purchase process, with the default implementation, liquidity is added to the Uniswap V2 pair of token.

#### Problems
- Admin can add his/her address as charity but as long as buyers do not donate to this address, admin won't get anything. (e.g. admin can **not** maliciously receive donation unless you explicitly send it to them.) 

---

### Token

Token is a basic ERC20 implementation with burn mechanism. 0.3% of every transaction is gone forever for that reason there is a minimum transfer amount of `1e-15`.

#### Problems

- Although **not tested**, tokens with burn mechanism may not work properly with Uniswap V3. This is why Uniswap V2 pair is used with [Sale](#Sale) implementation. 

---

## 💂‍♀️ Security
- *Both smart contracts are tested with 100% test coverage* but there are no formal audits for the smart contracts yet and tests may be misleading. There may be bugs that may lead to loss of funds like any other project.
- If there are bugs, there is no way to fix them as contracts are not upgradeable. Only way to do that would be deploying a new contract with a migration contract.
    - In this case, liquidity will stay on the other token unless 6 months haven't passed and can't recovered by the admin.
- Audits are on our roadmap but we are not in touch with any companies at the writing time of litepaper.

## 🌊 Sustainability

- There is no yield farming program, but liquidity is locked for 6 months on the [sale](#Sale) implementation which means admin can withdraw liquidity after 6 months. 
    - This is not a bug but a feature, admin can also lock the liquidity forever by transferring admin keys to burn address.
    - This feature is put in place to make it possible to upgrade liquidity or move the liquidity to better AMMs.
- If there is a way to implement the token with Uniswap V3, liquidity providers may have better opportunity to earn more money with more fee ratio.
- Meme contests are one of the best ways to market the project and they will be done on [Gitcoin](https://gitcoin.co), every month or week.
- There will be another token launch after this token which will be distributed to holders of this token.
    - This token will have similar purpose with interesting additions to the smart contracts and possibly bigger volume.

### Disclaimer

This is not an investment advice. Do your own research. Smart contracts are not audited. Use at your own risk.