Skip to content

Stanum-CryptoUnit/tokenlock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TOKENLOCK contract

Контракт tokenlock предназначен для передачи токенов CRU пользователю по одному из алгоритмов разморозки. Передаваемые токены могут находиться в трех состояниях: замороженные по алгоритму 1, замороженные по алгоритму 2 или размороженные.

Время абсолютной заморозки для алгоритма 1: 300 дней, для алгоритма 2: 545 дней. Всего 35 циклов распределения. Период между циклами распределения: 30 дней.

Размараживаемая доля зависит от текущего номера цикла распределения: 1-6 цикл: 1%; 7-12 цикл: 1.5%; 13-24 цикл: 2%; 25-35 цикл: 5%.

Каждая разморозка происходит на границе начала следующего цикла распределения (первая через 30 дней после окончания времени абсолютной заморозки). Сумма всех долей распределения во всех циклах равняется 100%.

Контракт задействует аккаунты:

  • _self - собственный аккаунт контракта tokenlock
  • username - аккаунт пользователя
  • eosio.token - контракт токена
  • reserve - аккаунт с токенами распределения. Передает токены контракта eosio.token пользователю username по условиям tokenlock.

Аккаунт reserve должен обладать активным разрешением доступа eosio@code для аккаунта tokenlock.

Таблицы:

  • locks(_self, username) - хранит в области памяти пользователя username все его объекты начисления
  • history(_self, username) - хранит в области памяти пользователя username историю всех вызовов метода add
  • debts(_self, username) - хранит объект долга пользователя, полученный в ходе внутренних покупок.

Объект долга пользователя увеличивается, если необходимо выполнить покупку (перевод на аккаунт reserve) еще не размороженными токенами, и уменьшается в момент миграции или обновления баланса замороженных CRU.

Методы:

  • add (eosio::name username, uint64_t id, uint64_t parent_id, eosio::time_point_sec datetime, uint64_t algorithm, int64_t amount)

    • username - имя пользователя
    • id - идентификатор начисления во внешней базе данных
    • parent_id - идентификатор баланса списания во внешней базе данных. Указывается с отрицательной суммой amount для списания из объекта начисления
    • datetime - дата создания объекта во внешней базе данных в формате "2020-04-08T16:11:22"
    • algorithm - используемый алгоритм разморозки. Принимает значения 0 - размороженные токены, необходимо сразу перечислить; 1 - алгоритм разморозки 1, 2 - алгоритм разморозки 2.
    • amount - целочисленная величина начисления или списания CRU. Может принимать отрицательные знания при списании.
  • migrate(eosio::name username)

    • username - имя аккаунта пользователя
  • withdraw(eosio::name username, uint64_t id)

    • username - пользователь, которому принадлежит выводимый объект начисления
    • id - идентификатор объекта начисления
  • refresh(eosio::name username, uint64_t id)

    • eosio::name username - пользователь, которому принадлежит обновляемый объект начисления
    • uint64_t id - целочисленный идентификатор объекта начисления

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages