Skip to content

KolosDan/worldskills

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 

Repository files navigation

worldskills

Идея: сделать децентрализованное приложение по доставке еды P2P.

Для чего нужно приложение:
1. Человек захотел кушать
2. Человек отправил запрос о том, что он хочет кушать, какую еду он хочет кушать, по какому адресу он проживает и сколько токенов он готов заплатить.
3. Другой человек принял запрос, доставил эту еду к заказчику.
4. Заказщик, получив еду отправил подтверждение, тем самым переведя токены на счет доставщика.
5. Доставщик захотел кушать...

Структура контракта:

Классы:

1. Permissions - класс для построение управленческой структуры.

- Поля
    1. Владелец - инициализируется тем, кто загрузил контракт(owner)
    2. Администратор - назначается владельцем(administrator)
-Функции и модификаторы:
    1. Модификатор - "только владелец". Все функции с этим модификатором исполняются только владельцем контракта.(onlyOwner)
    2. Модификатор - "только администратор". Все функции с этим модификатором могут испольняться администратором и владельцем.(onlyAdmin)
    3. Функция смены владельца - меняет адрес владельца. Исполняется только владельцем. (changeOwner)
    4. Функция добавления админа - меняет адрес админитратора. Исполняется только владельцем (addAdmin)

Для всех арифметических операций используется библиотека SafeMath. Для защиты от переполнения стэка

2. Zharcoin - класс нашего токена. Содержит все основные функции по ERC20.

- Поля
    1. Имя, символ, кол-во знаков после запятой. Основные для ERC20 компоненты.
    2. Две bool переменные - canTransfer. Определяет возможность перевода средств между счетами.
    3. Переменная totalSupply, которая является общим количеством выпущенных токенов. 
    4. Словари:
        - Балансы счетов: ключ - адрес аккаунта, значение ключа - количество токенов на адресе.
        - Словарь т.н. разрешений. Для обозначения того, сколько одному адресу можно снять токенов с другого адреса.
 - Пользовательские функции
    1. Узнать баланс. Принимает на вход адрес, выводит баланс токенов на этом адресе. (balanceOf)
    2. Совершить перевод. Принимает на вход адрес получателя и сумму. Адрес отправителя инциализирует со значением отправителя транзакии. (transfer)
    3. Разрешить снять сумму. Принимает на вход аргументы: адрес, которому разрешено снимать, количество, которое разрешено снимать. (aprove)
    4. Узнать разрешенное количество. Принимает на вход два адреса: владельца суммы и того, кому разрешено снять. (allowance)
    5. Перевести со счета. Аргументы: адрес куда перевести, откуда перевести, сколько перевести. Если есть разрешенное количество для снятие, тот, кому разрешили, может обращаться с ними как угодно.
  - Административные функции:
    1. Начать/остановить передачу токенов. Меняет значение глобальной переменной canTransfer. (startTransfer, stopTransfer)
    2. Чеканить. Выпускаем больше токенов в обращение. Прибавляет значение к totalSupply, отправляет выпущенные токены, на какой-либо счет выбранный администратором.
    3. Сжечь. Убирает какое-то количество токенов со счета, не добавляя их в totalSupply.

3. Sales - класс управления продажами.

    - Поля
        1. Коэффициент - переменная отвечающая за цену токена в Эфирах.
        2. Переменные стадий продаж. Даты начала трех стадий в unixtime.
        3. Бонус - значение множителя. Использована для увеличения получаемых токенов за одну и ту же сумму в разные периоды продаж.
        4. Bool переменная canSale. Относительно её значения определяется возможность покупки токенов.
        5. Переменная coinCount. Определяет количество монет для ограниченного выпуска.
     - Пользовательские функции
        1. fallback функция. Выполняется при переводе эфира на адрес контракта. При переводе эфира на контракт, он принимает его численное значение в wei, для этого коэффициент - это не то, на что умножается количество эфира, а то, на что делится количество wei присланных пользователем. Включены все зависимости от стадии продаж, от текущего бонуса и от ограничений по продажам.
     - Административные функции
        1. Смена коэффициента. Меняет значение коэффициента на заданный администратором или владельцем.(changeCoef)
        2. Начало распродажи токенов. Функция принимающая на вход переменные старта этапов распродажи в unixtime и бонусы на этих этапах. Для третьего этапа бонусов нет.
        3. Функция для старта продаж токенов в ограниченных количествах с определенным коэффициентом. До заданного значения по заданному бонусу, которое принято на вход.
        4. Начало/остановка продаж. Две функции отвечающие за смену глобальной переменной canSale. Для запрета или разрешения покупки токенов.

Дальнейшая реализация

1. Добавить функции в контракт отвечающие за запрос, ответ, подтверждение и хранение данных о заказах.
2. Создать мобильное и веб-приложение на базе Web3.js или Web3.py

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published