Skip to content

Виртуальные операции

Виртуальные операции генерируются самим блокчейном в процессе обработки блоков. Они никогда не транслируются пользователями — они появляются только в истории аккаунта и данных блоков в информационных целях.

Виртуальные операции используют тот же вариант операций, что и обычные, но имеют более высокие type ID. Их можно наблюдать через API account_history или потоковую трансляцию блоков.


Выплаты за контент (устарело)

author_reward_operation (ID 26)

Триггер: Выплата за публикацию контента

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

ПолеТипОписание
authoraccount_name_typeАвтор контента
permlinkstringPermlink контента
token_payoutasset (VIZ)Ликвидная часть VIZ
vesting_payoutasset (SHARES)Вестинговая часть

curation_reward_operation (ID 27)

Триггер: Выплата за публикацию контента

Срабатывает, когда куратор получает вознаграждение за кураторство.

ПолеТипОписание
curatoraccount_name_typeАккаунт куратора
rewardasset (SHARES)Вознаграждение куратора
content_authoraccount_name_typeАвтор куриуемого контента
content_permlinkstringPermlink куриуемого контента

content_reward_operation (ID 28)

Триггер: Выплата за публикацию контента

Срабатывает, когда пост достигает времени выплаты.

ПолеТипОписание
authoraccount_name_typeАвтор контента
permlinkstringPermlink контента
payoutassetОбщая сумма выплаты

content_payout_update_operation (ID 32)

Триггер: Пересчёт выплаты за контент (например, после изменений голосов)

ПолеТипОписание
authoraccount_name_typeАвтор контента
permlinkstringPermlink контента

content_benefactor_reward_operation (ID 33)

Триггер: Выплата за публикацию контента — срабатывает для каждого бенефициара

ПолеТипОписание
benefactoraccount_name_typeАккаунт бенефициара
authoraccount_name_typeАвтор контента
permlinkstringPermlink контента
rewardassetДоля вознаграждения бенефициара

Вывод вестинга

fill_vesting_withdraw_operation (ID 29)

Триггер: Каждый интервал вывода вестинга

Срабатывает один раз за интервал для каждого активного маршрута вывода.

ПолеТипОписание
from_accountaccount_name_typeАккаунт, выводящий средства
to_accountaccount_name_typeЦелевой аккаунт (может отличаться через маршрут вывода)
withdrawnasset (SHARES)Выведенное количество SHARES за интервал
depositedassetЗачислено на to_account (VIZ или SHARES при auto_vest = true)
json
[29, {
  "from_account": "alice",
  "to_account": "alice",
  "withdrawn": "35.714285 SHARES",
  "deposited": "10.000 VIZ"
}]

return_vesting_delegation_operation (ID 34)

Триггер: Окончание 7-дневного периода возврата после delegate_vesting_shares_operation с нулевой суммой

ПолеТипОписание
accountaccount_name_typeАккаунт, получающий возвращённые SHARES
vesting_sharesasset (SHARES)SHARES, возвращённые из лимба

Операции валидатора

shutdown_validator_operation (ID 30)

Триггер: Валидатор деактивирован из-за недостаточного веса голосов

ПолеТипОписание
owneraccount_name_typeДеактивированный валидатор

validator_reward_operation (ID 42)

Триггер: Произведён блок — валидатор получает вознаграждение за блок

ПолеТипОписание
witnessaccount_name_typeАккаунт валидатора
sharesasset (SHARES)Вознаграждение за блок
json
[42, {
  "witness": "alice",
  "shares": "1.234567 SHARES"
}]

Сетевые события

hardfork_operation (ID 31)

Триггер: Активация хардфорка сети

ПолеТипОписание
hardfork_iduint32_tНомер хардфорка

Награды

receive_award_operation (ID 48)

Триггер: award_operation или fixed_award_operation

Срабатывает для основного получателя награды.

ПолеТипОписание
initiatoraccount_name_typeАккаунт, выдавший награду
receiveraccount_name_typeАккаунт, получивший награду
custom_sequenceuint64_tПорядковый номер приложения из операции награды
memostringMemo из операции награды
sharesasset (SHARES)Полученные SHARES
json
[48, {
  "initiator": "alice",
  "receiver": "bob",
  "custom_sequence": 0,
  "memo": "great article!",
  "shares": "5.000000 SHARES"
}]

benefactor_award_operation (ID 49)

Триггер: award_operation или fixed_award_operation с бенефициарами

Срабатывает по одному разу для каждого бенефициара.

ПолеТипОписание
initiatoraccount_name_typeАккаунт, выдавший награду
benefactoraccount_name_typeАккаунт бенефициара
receiveraccount_name_typeОсновной получатель награды
custom_sequenceuint64_tПорядковый номер приложения
memostringMemo из операции награды
sharesasset (SHARES)SHARES, полученные бенефициаром

Комитет

committee_cancel_request_operation (ID 38)

Триггер: Запрос на финансирование комитета истекает, не набрав порог одобрения

ПолеТипОписание
request_iduint32_tID отменённого запроса

committee_approve_request_operation (ID 39)

Триггер: Запрос на финансирование комитета достигает требуемого порога одобрения

ПолеТипОписание
request_iduint32_tID одобренного запроса

committee_payout_request_operation (ID 40)

Триггер: Обработка выплаты по запросу комитета

ПолеТипОписание
request_iduint32_tID выплаченного запроса

committee_pay_request_operation (ID 41)

Триггер: Работник получает выплату из фонда комитета

ПолеТипОписание
workeraccount_name_typeАккаунт работника
request_iduint32_tID запроса комитета
tokensasset (VIZ)Выплаченная сумма
json
[41, {
  "worker": "alice",
  "request_id": 42,
  "tokens": "250.000 VIZ"
}]

Платные подписки

Триггер: Исполнена paid_subscribe_operation или обработан платёж автопродления

ПолеТипОписание
subscriberaccount_name_typeАккаунт подписчика
accountaccount_name_typeПровайдер подписки
leveluint16_tУровень подписки
amountasset (VIZ)Сумма платежа
perioduint16_tКоличество периодов
summary_duration_secuint64_tСуммарная длительность подписки (секунды)
summary_amountasset (VIZ)Общая выплаченная сумма

cancel_paid_subscription_operation (ID 53)

Триггер: Подписка истекла или недостаточно баланса для автопродления

ПолеТипОписание
subscriberaccount_name_typeАккаунт подписчика
accountaccount_name_typeПровайдер подписки

Рынок аккаунтов

account_sale_operation (ID 57)

Триггер: buy_account_operation успешно завершена

ПолеТипОписание
accountaccount_name_typeПроданный аккаунт
priceasset (VIZ)Цена продажи
buyeraccount_name_typeПокупатель
selleraccount_name_typeПродавец (получатель платежа)
json
[57, {
  "account": "alice",
  "price": "1000.000 VIZ",
  "buyer": "bob",
  "seller": "alice"
}]

bid_operation (ID 62)

Триггер: Новая ставка на аккаунт, выставленный на аукцион

ПолеТипОписание
accountaccount_name_typeАккаунт, на который делается ставка
bidderaccount_name_typeАккаунт, делающий ставку
bidasset (VIZ)Сумма ставки

outbid_operation (ID 63)

Триггер: Предыдущая ставка перебита более высокой

Срабатывает для перебитого аккаунта; предыдущая сумма ставки возвращается.

ПолеТипОписание
accountaccount_name_typeАккаунт, на который делается ставка
bidderaccount_name_typeПеребитый аккаунт
bidasset (VIZ)Возвращённая сумма ставки

##托管 (Escrow)

expire_escrow_ratification_operation (ID 59)

Триггер: Пропущен дедлайн ratification_deadline — ни to, ни agent не дали одобрения вовремя

Все заблокированные средства возвращаются from.

ПолеТипОписание
fromaccount_name_typeИсходный отправитель эскроу
toaccount_name_typeПредполагаемый получатель
agentaccount_name_typeАгент эскроу
escrow_iduint32_tID эскроу
token_amountasset (VIZ)Возвращённая сумма токенов
feeasset (VIZ)Возвращённая комиссия (агент не получает оплату, поскольку эскроу не был ратифицирован)
ratification_deadlinetime_point_secПропущенный дедлайн

Прогнозные рынки (HF14)

Эмитируются логикой консенсуса PM — не кроном по часам. Два источника:

  • Эвалуатор подписанной операции, в момент её применения — pm_market_accepted (при accept / self-oracle / авто-приёме) и pm_leverage_liquidate (при встречной или отменяющей ставке, толкающей плечевую позицию за порог).
  • Обработчик дедлайнов process_pm_markets(), запускаемый каждый блок: рассчитывает рынки, достигшие экспирации / дедлайна / окончания окна спора / границы эпохи (кап pm_processing_cap_per_block, старейший дедлайн первым).

См. Операции прогнозных рынков. (ID 91–93 — это обычные операции pm_leverage_open/pm_leverage_close/pm_leverage_convert, а ID 98–99 — обычные операции pm_dispute_oracle_respond/pm_unban — см. ту страницу.)

IDОперацияТриггер
84pm_batch_settle_operationДостигнута граница эпохи: очередные ставки по снимку начала эпохи
85pm_commit_forfeit_operationreveal_deadline без раскрытия: штраф → forfeit_pool, остаток возвращён
86pm_auto_payout_operationИстекло окно спора (по рынку): паримутюэль-расчёт + возврат принципала LP
87pm_dispute_finalize_operationДостигнут voting_end_time: подсчёт решает; штраф оракулу; пере-разрешение/поддержка
88pm_dispute_auto_close_operationДостигнут auto_close_time, оракул не ответил: анти-фриз возврат, слэш страховки → DAO
89pm_oracle_missed_penalty_operationИстёк result_expiration без разрешения: слэш → DAO, возврат всех ставок
90pm_lazy_recall_operationПростаивающая аллокация lazy-пула достигла шага отзыва: один поэтапный шаг возвращён в пул
94pm_leverage_liquidate_operationЭвалуатор — ликвидация плеча в ходе рынка (встречная 0 / отменяющая 1 ставка, каскад)
95pm_leverage_resolve_operationРасчёт — плечевая позиция принудительно закрыта по cancel_value: outcome_index, won, pool_received/bettor_received, leverage
96pm_market_accepted_operationЭвалуатор — рынок запущен: оракул принял, self-oracle или авто-приём; замороженные условия + флаг self_oracle
97pm_payout_operationРасчёт — на каждую активную ставку: amount (стейк), side/outcome_index, payout (0 при проигрыше); рядом с порыночной pm_auto_payout
100pm_ban_expired_operationВременный бан оракула/создателя истёк на banned_until: крон очистил его (account, oracle, creator). Досрочные ручные снятия используют подписанную pm_unban
101pm_market_expired_operationДедлайн accept_deadline пендинг-рынка прошёл: оракул не принял/отклонил в течение pm_oracle_accept_window_sec — рынок аннулирован (status -1), сид-ликвидность возвращена (refunded_liquidity), комиссия за создание не возвращена (oracle, creator, market_id, refunded_liquidity)

Всё движение средств PM строго zero-sum (без эмиссии); расчёт сохраняет Σ out == Σ ставок + принципал LP + forfeit_pool.


См. также: Обзор операций, Награды, Комитет.