Контрактыdocs/contracts/templates.md

Шесть шаблонов и собственные программы

Шаблоны компилируются в одно целочисленное ядро. Имя шаблона удобно для кошелька, но не является списком разрешённых приложений в консенсусе. Все шесть доступны в Create и CLI; собственную программу можно передать через публичный API. Все суммы ниже относятся к одному финансируемому экземпляру.

Шаблон До границы возврата На границе и после неё
Платёж с возвратом Получатель закрывает и забирает баланс за вычетом комиссии Плательщик закрывает и возвращает средства
Сейф с блокировкой Расход запрещён даже владельцу Владелец закрывает и забирает средства
Кошелёк с лимитом Ключ расходов делает ограниченные выплаты с сохранением резерва Ключ возврата закрывает
Бюджет за период Ключ расходов соблюдает бюджет выплат и комиссий за период высот Ключ возврата закрывает
Регулярный платёж Получатель вызывает одну фиксированную выплату при наступлении срока Плательщик возвращает остаток
Постепенное освобождение Получатель забирает один фиксированный транш при наступлении срока Получатель закрывает и забирает остаток

Платёж с возвратом и сейф

refundable_payment задаёт payer, payee, expiry_height и max_fee_micronoid. Получение до срока или возврат начиная с этой высоты закрывают весь экземпляр. Частичного получения нет.

timelocked_vault задаёт owner, unlock_height и потолок комиссии. Обе ветви принадлежат владельцу, но закрытие разрешено только в возвратной. Даже собственный ключ не позволяет обойти блокировку по высоте.

Кошелёк с лимитом

allowance_wallet разделяет spending_key и recovery_key. До recover_at продолжающие вызовы соблюдают max_payout_micronoid, min_retained_micronoid и max_fee_micronoid. Заданный payout_recipient фиксирует получателя, null разрешает произвольного получателя продолжающей выплаты. Ключ расходов не может закрыть контракт. Начиная с границы это может сделать ключ возврата.

Лимит выплаты действует на вызов, не включает комиссию и не ограничивает сумму за сутки. Для этого нужен бюджет за период.

Бюджет за период

period_budget_wallet добавляет start_height, положительный period_blocks и budget_micronoid. Начальные счётчики — [budget, start + period]. До начала расход запрещён. Продолжающий вызов вычитает из бюджета выплату и комиссию; вызов без выплаты всё равно расходует комиссию. Фактический резерв не меньше потолка комиссии.

На сохранённой границе периода или после неё следующий успешный вызов восстанавливает бюджет и задаёт границу высота этого вызова + период. Неиспользованный бюджет не накапливается. Это окно высот, начатое вызовом, а не календарные сутки или непрерывное скользящее окно. Закрытие возвратной ветви не проходит проверки бюджета основной ветви.

Регулярный платёж

recurring_payment фиксирует плательщика, получателя, first_due_height, period_blocks, payment_micronoid, высоту возврата и потолок комиссии. Счётчики — [число успешных получений, следующая высота]. Вызов должен выплатить точную сумму; следующая высота становится высота включения + период.

Пропущенные периоды не накапливаются. Каждый вызов подаёт сторона с полномочиями получателя; баланс должен покрывать резерв и комиссии. Фонового планировщика в консенсусе нет.

Постепенное освобождение

tranche_vesting задаёт получателя, first_unlock_height, положительный период, tranche_micronoid, mature_at и потолок комиссии. Счётчики — [освобождённая сумма, следующая высота]. Каждый вызов выплачивает ровно один транш и сдвигает сохранённую высоту на период от предыдущей высоты.

Пропущенные транши можно получить по одному за вызов. На высоте полного созревания получатель может закрыть контракт и забрать остаток. Это дискретное освобождение, а не непрерывный поток средств по часам.

Выбор параметров

При цели 30 секунд сутки номинально составляют 2 880 блоков; точное время не гарантировано. Учитывайте подтверждения и реорганизации около границ. Потолок 1 NOID разрешает комиссию до этой суммы, а не списывает 1 NOID за создание условий. Недостаточный баланс или потолок ниже требуемой комиссии может помешать вызову. Пополнение — отдельная обычная транзакция кошелька.

Собственная программа комбинирует счётчики, утверждения, проверки получателей и высот в пределах 16 инструкций. Проверьте все режимы ветвей и закрытие. Точные поля конструкторов приведены в API, формы и подтверждение — в руководстве GUI.

Техническая документация ParanO(1)dПоведение консенсуса определяется исходным кодом.