ERC20-токен, который выпускается за добавление полезных данных в блокчейн и служит для оплаты создания SmartOffer. Полезность данных определяют валидаторы системы ambuy, установленные в смарт контракте Fz54Validators. Размер эмиссии определяется контрактом AmbuyEmissionLogic
Смарт контракт, который содержит в себе соглашение работы системы ambuy: адреса инвестиционного контракта, ambuy coin, контракта эмиссии и контракта для добавления полезных данных.
Смарт контракт, который содержит вычислительную логику по выпуску токенов: 70% ambuy coin начисляется пользователю, добавившему данные; 30% ambuy coin начисляется инвесторам.
ERC20-токен в блокчейне ambuy, владение которым обеспечивает выплату дивидендов в виде ambuy coin. Максимальное число токенов, которое может быть выпущено данным смарт контрактом, 100 000.
Смарт контракт, с помощью которого пользователь добавляет данные, соответствующие 54ФЗ. При добавлении данных в блокчейне создается смарт контракт ShoppingList, который содержит в себе список всех порождённых контрактов.
Смарт контракт, представляющий из себя данные из qr-кода чека, контент чека (информация о покупках). Содержит в себе метод validate, вызвать который может только валидатор в системе ambuy, тем самым подтвердив, что данные являются корректными. Если все валидаторы в системе ambuy подтвердят валидность, запустится процесс эмиссии ambuy coin
Смарт контракт, который отвечает за выплату дивидендов держателям ambuy token.
Смарт контракт, в котором находится список адресов мостов для инициализации.
Смарт контракт, в котором находится список адресов валидаторов данных (чеков по 54ФЗ).
Смарт контракт, который содержит общие поля для контрактов, потребности и смарт-оффера from - инициатор создания потребности или смарт-оффера to - получатель потребности или смарт-оффера (может быть 0x0) startTime - время начала актуальности endTime - время окончания актуальности data - контент в сжатом виде (gzip)
Потребность от пользователя, наследуется от SmartData. Также содержит в себе признак валидности, которую проставляет валидатор контрактов и смарт-офферов.
Смарт контракт, с помощью которого пользователь помещает свои потребности в систему ambuy. При добавлении данных в блокчейне создается смарт контракт Need, который содержит в себе список всех порожденных контрактов.
Содержит в себе список всех валидаторов данных потребностей и смарт-офферов.
Смарт контракт, с помощью которого retail добавляет смарт-оффера в систему ambuy. Контракт содержит в себе цену за добавление одного оффера в систему и сжигает монеты со счета retail при опубликовании смарт-оффера. Для сжигания монеты необходимо, чтобы retail задал количество монет, которым контракт SmartOfferCreator может управлять с его счета, в противном случае смарт-оффер создан не будет.
Предложение от 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 в пользу магазина.
- Пользователь помещает данные в блокчейн вызовом метода addData у смарт контракта Fz54DataCreator
- Fz54DataCreator порождает смарт контракт Fz54Data, содержащий данные пользователя
- Валидаторы проверяют данные на их полезность и признают их валидность путем вызова метода validate у смарт контракта Fz54Data
- Когда данные признаются валидными, Fz54Data вызывает расчет эмиссии у контракта AmbuyEmissionLogic
- EmissionLogic рассчитывает количество выпускаемых монет (70% эмиссии идет пользователю, 30% монет начисляется на контракт InvestContract) и дает команду контракту AmbuyCoin выпустить монеты
- AmbuyCoin производит начисление монет
- Инвестор присылает ETH на смарт контракт в системе ethereum
- Мост, представляющий из себя внешний софт, производит проверку количества монет на смарт контракте в ethereum
- Мост осуществляет начисление соответствующего количества ambuy token путем вызова метода emission у контракта Ambuy Token
- Инвестор блокирует свои токены путем вызова метода invest у смарт контракта Ambuy Token
- Ambuy Token путем вызова метода lock у контракта InvestContract сообщает количество токенов, заблокированных инвестором
- При выплате дивидендов у контракта InvestContract вызывается метод pay, который распределяет ambuy coin, находящийся на балансе адреса контракта InvestContract, между всеми инвесторами
- Пользователь помещает потребность
- Retailt опубликовывает предложение (Смарт-оффер)
- Пользователь может принять предложение
- Retail может подтвердить выполнение или отвергнуть предложение, если его срок истек




