Контракт на вестинг
Эта страница переведена сообществом на русский язык, но нуждается в улучшениях. Если вы хотите принять участие в переводе свяжитесь с @alexgton.
Этот контракт позволяет вам заблокировать определенное количество Toncoin на определенное время и постепенно разблокировать их.
Параметры вестинга
Параметры вестинга не изменяются и устанавливаются во время развертывания.
vesting_total_amount
- в nanoton, общее количество заблокированных Toncoin.
vesting_start_time
- unixtime, начальная точка периода вестинга, до этого момента vesting_total_amount
заблокирован, после этог о он начинает разблокироваться в соответствии с другими параметрами.
vesting_total_duration
- общая продолжительность вестинга в секундах (например, 31104000
на один год).
unlock_period
- период разблокировки в секундах (например, 2592000
один раз в месяц).
cliff_duration
- начальный период без разблокировки в секундах (например, 5184000
на 2 месяца).
vesting_sender_address
- адрес, на который вы можете вернуть Toncoin (даже если они заблокированы) в любое время; также этот адрес может добавить белый список.
owner_address
- тот, кому был выдан вестинг, с этого адреса он может инициировать отправку Toncoin из контракта вестинга.
Вы можете получить эти параметры с помощью метода get_vesting_data()
get-method.
Параметры должны удовлетворять следующим условиям:
vesting_total_duration > 0
vesting_total_duration <= 135 years (2^32 seconds)
unlock_period > 0
unlock_period <= vesting_total_duration
cliff_duration >= 0
cliff_duration < vesting_total_duration
vesting_total_duration mod unlock_period == 0
cliff_duration mod unlock_period == 0
Хотя смарт-контракт не проверяет соответствие этим условиям, после развертывания контракта и перед отправкой ему Toncoin пользователь может проверить, что все параметры в порядке, с помощью метода get-method.
Блокировка
До vesting_start_time
все vesting_total_amount
заблокированы.
Начиная с vesting_start_time
сумма начинает пропорционально разблокироваться.
Например, если vesting_total_duration
составляет 10 месяцев, а unlock_period
- 1 месяц, а vesting_total_amount
- 500 TON, то каждый месяц будет разблокироваться 500*(10/100)=50 TON, и через 10 месяцев будут разблокированы все 500 TON.
Если есть период без разблокировки, в течение этого периода ничего не разблокируется, а после его окончания сумма разблокируется в соответствии с приведенной выше формулой.
Например, если cliff_period
составляет 3 месяца, а другие параметры такие же, как в предыдущем примере, то первые 3 месяца ничего не будет разблокировано, а через 3 месяца сразу будет разблокировано 150 TON (а затем по 50 TON каждый месяц).
Метод получения get_locked_amount(int at_time)
позволяет рассчитать, сколько будет заблокировано в определенный момент времени.
Вы можете отправлять заблокированные Toncoin только на адреса из белого списка или vesting_sender_address
.
Вы можете отправлять разблокированные Toncoin когда и куда захотите.