---
# System prepended metadata

title: Crowdsale referral system

---

# Crowdsale referral system


## User Story

- Пользователь приходит на сайт по реферальной ссылке или без
- Подключает кошелёк Metamask, WalletConnet
- При нажатии кнопки buy происходит проверка allowance адреса токена на адрес контракта
- Если меньше чем 25 * 1018, то создаётся транзакция approve и ожидается выполнение транзакции и переходит к прошлому пункту **BUSDToken.approve(crowdsaleAddress, 25 * 10 ^ 18)**
- Создаётся вторая транзакция на исполнение метода buy контракта crowdsale **crowdsaleContract.buy(refAddress)**
- Может просмотреть свою реферальную ссылку, которая появилась в момент оплаты
- Деньги или отправились целиком на кошелек владельца проекта, или часть ушла реферралу


## Tasks

- [ ] Вёрстка лендинга
- [ ] Подключение кошельков
- [ ] Подключение контракта
- [ ] Генерация реферальной ссылке при условии выполнения транзакции



## Additional information

Библиотеки для фронта: [web3](https://web3js.readthedocs.io/en/v1.7.5/), [ethers](https://docs.ethers.io/v5/)
Библиотека для бека: [web3.py]
(https://web3py.readthedocs.io/en/stable/)
React библиотека для кошельков: [rainbowkit](https://github.com/rainbow-me/rainbowkit)
О создании подписи: [sign](https://hukenneth.medium.com/ethereum-using-web3-js-for-message-signing-7e2935b2958c)
Пример подключения контракта: [alchemy](https://www.web3.university/tracks/create-a-smart-contract/integrate-your-smart-contract-with-a-frontend)
Сканнер блокчейна: [etherscan](https://etherscan.io/)

С блокчейном взаимодействие идёт с помощью rpc нод, которые бывают публичными, оффициальными, сторонними и тд. Пример: [Infura](https://infura.io/), [Alchemy](https://www.alchemy.com/), [Официальные](https://docs.bscscan.com/misc-tools-and-utilities/public-rpc-nodes)

Для непосредственного взаимодействия с контрактами используется abi, берётся со сканера сетей, по сути это json описание методов