Skip to content

Repository files navigation

AmbuyCoin.sol

ERC20-токен, который выпускается за добавление полезных данных в блокчейн и служит для оплаты создания SmartOffer. Полезность данных определяют валидаторы системы ambuy, установленные в смарт контракте Fz54Validators. Размер эмиссии определяется контрактом AmbuyEmissionLogic

AmbuyConsensus.sol

Смарт контракт, который содержит в себе соглашение работы системы ambuy: адреса инвестиционного контракта, ambuy coin, контракта эмиссии и контракта для добавления полезных данных.

AmbuyEmissionLogic.sol

Смарт контракт, который содержит вычислительную логику по выпуску токенов: 70% ambuy coin начисляется пользователю, добавившему данные; 30% ambuy coin начисляется инвесторам.

AmbuyToken.sol

ERC20-токен в блокчейне ambuy, владение которым обеспечивает выплату дивидендов в виде ambuy coin. Максимальное число токенов, которое может быть выпущено данным смарт контрактом, 100 000.

Fz54Creator.sol

Смарт контракт, с помощью которого пользователь добавляет данные, соответствующие 54ФЗ. При добавлении данных в блокчейне создается смарт контракт ShoppingList, который содержит в себе список всех порождённых контрактов.

ShoppingList.sol

Смарт контракт, представляющий из себя данные из qr-кода чека, контент чека (информация о покупках). Содержит в себе метод validate, вызвать который может только валидатор в системе ambuy, тем самым подтвердив, что данные являются корректными. Если все валидаторы в системе ambuy подтвердят валидность, запустится процесс эмиссии ambuy coin

InvestContract.sol

Смарт контракт, который отвечает за выплату дивидендов держателям ambuy token.

InvestBridge.sol

Смарт контракт, в котором находится список адресов мостов для инициализации.

Fz54Validators.sol

Смарт контракт, в котором находится список адресов валидаторов данных (чеков по 54ФЗ).

SmartData.sol

Смарт контракт, который содержит общие поля для контрактов, потребности и смарт-оффера from - инициатор создания потребности или смарт-оффера to - получатель потребности или смарт-оффера (может быть 0x0) startTime - время начала актуальности endTime - время окончания актуальности data - контент в сжатом виде (gzip)

Need.sol

Потребность от пользователя, наследуется от SmartData. Также содержит в себе признак валидности, которую проставляет валидатор контрактов и смарт-офферов.

NeedCreator.sol

Смарт контракт, с помощью которого пользователь помещает свои потребности в систему ambuy. При добавлении данных в блокчейне создается смарт контракт Need, который содержит в себе список всех порожденных контрактов.

SmartDataValidators.sol

Содержит в себе список всех валидаторов данных потребностей и смарт-офферов.

SmartOfferCreator.sol

Смарт контракт, с помощью которого retail добавляет смарт-оффера в систему ambuy. Контракт содержит в себе цену за добавление одного оффера в систему и сжигает монеты со счета retail при опубликовании смарт-оффера. Для сжигания монеты необходимо, чтобы retail задал количество монет, которым контракт SmartOfferCreator может управлять с его счета, в противном случае смарт-оффер создан не будет.

SmartOffer.sol

Предложение от retail пользователю, содержащее в себе поля SmartData, а также: lockCount - количество монет, которые необходимо списать со счета пользователя при принятии смарт-оффера rewardCount - количество монет, которые при создании смарт контракта списываются со счета retail в пользу смарт-оффера и перечисляются на счет пользователя в случае исполнения смарт-оффера parent - адрес потребности, на основании которой создан оффер, или 0х0, если оффер создан не на основании потребности status - 0 - новый, 1 - принят, 2 - исполнен, 3 - отвергнут

Процессы. Смарт оффер создается путем вызова метода addData у смарт контракта SmartOfferCreator.

При создании смарт оффера проверяется, что SmartOfferCreator'у разрешено управлять ambuy coin'ами пользователя на сумму, не меньше чем lockCount + стоимость создания смарт-оффера.

Смарт оффер должен быть провалидирован на корректность контента одним из валидаторов, заданных в списке SmartDataValidators.

При принятии смарт-оффера пользователем должен быть вызван метод accept, который может быть вызван только тем пользователем, которому направлен смарт-оффер. В случае принятия смарт-оффера в его пользу со счета пользователя будет списана сумма, указанная в lockCount.

При исполнении смарт-оффера retail должен вызвать метод executed, который переведет смарт-оффер в состояние «Исполнен», и перечислит lockCount и rewardCount пользователю.

Если смарт-оффер находится в состояние «Принят» и при этом у него истек срок действия, пользователь или retail может вызвать метод reject, который переведет оффер с статус 3 и перечислит lockCount пользователю, а rewardCount в пользу магазина.

Диаграмма связей

Диаграмма связей

Процесс эмиссии

Процесс эмиссии

  1. Пользователь помещает данные в блокчейн вызовом метода addData у смарт контракта Fz54DataCreator
  2. Fz54DataCreator порождает смарт контракт Fz54Data, содержащий данные пользователя
  3. Валидаторы проверяют данные на их полезность и признают их валидность путем вызова метода validate у смарт контракта Fz54Data
  4. Когда данные признаются валидными, Fz54Data вызывает расчет эмиссии у контракта AmbuyEmissionLogic
  5. EmissionLogic рассчитывает количество выпускаемых монет (70% эмиссии идет пользователю, 30% монет начисляется на контракт InvestContract) и дает команду контракту AmbuyCoin выпустить монеты
  6. AmbuyCoin производит начисление монет

Схема инвестиций

Схема инвестиций

  1. Инвестор присылает ETH на смарт контракт в системе ethereum
  2. Мост, представляющий из себя внешний софт, производит проверку количества монет на смарт контракте в ethereum
  3. Мост осуществляет начисление соответствующего количества ambuy token путем вызова метода emission у контракта Ambuy Token

Схема выплаты дивидендов

Схема выплаты дивидендов

  1. Инвестор блокирует свои токены путем вызова метода invest у смарт контракта Ambuy Token
  2. Ambuy Token путем вызова метода lock у контракта InvestContract сообщает количество токенов, заблокированных инвестором
  3. При выплате дивидендов у контракта InvestContract вызывается метод pay, который распределяет ambuy coin, находящийся на балансе адреса контракта InvestContract, между всеми инвесторами

Схема взаимодействия пользователя и retail

Схема взаимодействия пользователя и retail

  1. Пользователь помещает потребность
  2. Retailt опубликовывает предложение (Смарт-оффер)
  3. Пользователь может принять предложение
  4. Retail может подтвердить выполнение или отвергнуть предложение, если его срок истек

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors