Як відкликати делегування в управлінні

2026-09-03

Як відкликати делегування в управлінні

Ви одного разу делегували свою силу голосу, а тепер хочете повернути її. Окремої команди відкликання в контракті немає, і вона не потрібна: делегування — це одне поле, яке ви перезаписуєте. Чого зробити не можна, так це відкликати його заднім числом.

Як відкликати делегування в управлінні: ключові моменти стисло

Що насправді перемістило делегування

Тримати токен управління — не те саме, що тримати силу голосу. Документація OpenZeppelin щодо управління прямо каже, що силу голосу несуть делегати: власник, який хоче брати участь, призначає своїм делегатом довірену особу або сам стає делегатом, делегуючи собі. Документація Compound описує той самий крок: власники токенів делегують своє право голосу собі або на обрану ними адресу.

Тоді з вашого гаманця нічого не пішло. Compound прямо називає розмір того, що справді переміщується: кількість голосів, доданих до лічильника делегата, дорівнює балансу на рахунку користувача. Ваші токени лишилися там, де були, поруч із ними записали адресу призначення, а лічильник голосів за іншою адресою зріс на величину вашого балансу.

Причина такої конструкції — вартість. OpenZeppelin зазначає, що за замовчуванням баланс токенів не враховується як сила голосу, що здешевлює перекази, а зворотним боком є те, що від користувачів вимагається делегувати собі, щоб узагалі увімкнути відстеження. Сила голосу — це підключуваний механізм збоку від балансу, а не властивість самого балансу.

Отже, ви скасовуєте вказівник, а не переказ. Питання не в тому, як повернути токени, бо вони нікуди не йшли. Питання в тому, що цей вказівник має говорити далі.

Відкликання — це ще одне делегування, а не видалення

У документації Compound сказано, що голоси делегуються з поточного блоку й далі, доки відправник не делегує знову або не перекаже свої токени. Прочитайте цю фразу з кінця — і отримаєте процедуру відкликання: ви делегуєте знову.

Поле містить одну адресу призначення, тож повертатися нікуди й другої команди надсилати не треба. Запис нової адреси перезаписує стару тією самою дією. Інтерфейс, який дає вам кнопку відкликання, та інтерфейс, який дає лише кнопку делегування, роблять під капотом одне й те саме, а підпис, який попросить гаманець, в обох випадках буде про делегування.

Звідси два наслідки. Відкликання коштує транзакції та комісії — так само, як коштувало початкове делегування. І відкликання публічне: нова адреса записана в блокчейні, де її побачить кожен, хто читає реєстр делегатів.

Куди йде вага, коли ви дієте

Скасувати делегування означає обрати адресу призначення, і різні адреси лишають вас у різному становищі.

Що ви робите Лічильник колишнього делегата Ваша власна сила голосу
Делегуєте собі Падає на величину вашого балансу Дорівнює вашому балансу
Делегуєте на іншу адресу Падає на величину вашого балансу Досі нуль, тепер її несе інший
Переказуєте токени Падає на величину переказаного балансу Іде разом із токенами
Не робите нічого Без змін Нуль

Лише перший рядок робить вас голосуючим. Другий — це зміна представника, а не вихід із системи. Третій працює, але це поганий шлях до мети, бо заради правки одного поля ви позбуваєтеся активу. Четвертий варто назвати окремо: власник, який перестав довіряти делегатові й нічого не зробив, не висловив незгоди, адже його вагу далі подають від його імені.

Чому вже відкрита пропозиція не зрушить

Саме тут відкликання здається зламаним, хоча воно не зламане. Розширення OpenZeppelin для управління зберігає історичні баланси, щоб сила голосу бралася з минулих знімків, а не з поточного балансу; документація називає це важливим захистом, що запобігає подвійному голосуванню. Compound читає вагу так само: подавати голоси можуть адреси, які мали вагу голосу на початок пропозиції.

Тому відкликання набуває чинності в тому блоці, у якому його намайнили, і діє з цього моменту й далі. Якщо блок знімка пропозиції вже минув, підрахунок за цією пропозицією читає реєстр таким, яким він був тоді, і ваш колишній делегат усе ще може подати вашу вагу за нею після того, як ви забрали делегування.

Практичне правило — це строк, а не кнопка. Щоб делегат не подав вашу вагу за конкретною пропозицією, відкликання має бути записане до знімка цієї пропозиції. Відкликання, надіслане наступного дня після початку спірного голосування, коректне, вчасне для всього подальшого й нічого не варте для того голосування, на яке ви реагували.

Чого відкликання не робить

Відкликати делегування — не та сама операція, що відкликати схвалення токенів, і спільне дієслово ховає справжню різницю. Схвалення — це постійний дозвіл контракту рухати ваші токени. Делегування такого дозволу не дає: делегат може подати вашу вагу і не може торкнутися вашого балансу. Зніміть усі схвалення в гаманці — делегування лишиться на місці; відкличте делегування — усі схвалення лишаться на місці.

Воно не скасовує того, що делегат уже зробив. Подані голоси лишаються поданими, вирішені пропозиції лишаються вирішеними, а запис про те, як використали вашу вагу, відкликання не редагує.

Воно не звільняє токени, які тримає окремий контракт. Якщо ваш баланс заблокований, застейканий або загорнутий у позицію vote-escrow, делегування при цій позиції підпорядковується правилам того контракту, і відкликання, надіслане в контракт токена, до нього не дотягується.

Делегування поза блокчейном відкликають в іншому місці

Не кожне голосування розраховується в блокчейні, і DAO, яке проводить голосування поза мережею, тримає реєстр делегувань поза контрактом токена. Документація Snapshot описує три шляхи делегування: реєстр делегатів, який використовують, коли простір налаштував власний контракт делегування; власна сторінка делегування Snapshot, яку документація подає як найшвидше рішення, щоб делегувати на відому адресу; і пряма взаємодія з контрактом.

Ця множинність і є тим, що варто перевірити, перш ніж вважати справу зробленою. Документація Snapshot також зазначає, що пряме делегування в обраний простір має пріоритет над делегуванням на всі простори, тож один власник може бути делегованим одразу в кількох місцях, із визначеним порядком між ними.

Перевірка формулюється просто. Перелічіть кожен реєстр, у якому ваша адреса зазначена як делегувальник, у мережі та поза нею, і очистіть їх по одному. Відкликання в контракті токена нічого не каже про запис у реєстрі, який читає інша система.

Розібраний приклад

Припустімо, у вас 10 000 токенів, і ви делегували їх адресі, яка несе 250 000 сили голосу разом, тож ваш баланс — це 4% того, що цей делегат може подати. Пропозиція A відкривається, і її блок знімка минає. Після цього ви делегуєте собі.

З цього блоку й далі одразу два твердження є істинними. За пропозицією A ваш колишній делегат усе ще несе 250 000, бо цей підрахунок читає знімок, а не реєстр у його нинішньому вигляді. За наступною пропозицією той самий делегат несе 240 000, а ви несете 10 000, які можете подати самі.

Другий рядок — це ще й місце, де змінюється звітність. Ваша вага перейшла від делегата до власника, що тягне вниз концентрацію голосів і вгору число учасників, тоді як явка, виміряна від делегованої ваги, покращиться лише тоді, коли ви потім справді проголосуєте. Забрати вагу й ніколи нею не скористатися — те саме, що лишити її делегатові, який утримується.

Підсумок

Делегування — це одне поле з однією адресою призначення, тож відкликати його означає записати нову адресу, а не видалити стару. Делегуйте собі — і ви стаєте голосуючим; делегуйте іншому — і ви змінили представника; не робіть нічого — і вашу вагу далі подаватимуть без вас.

Спотикаються на строках. Сила голосу читається з минулого знімка, тому відкликання зв'язує кожну пропозицію, знімок якої настає після нього, і жодну з уже відкритих. Перевіряйте реєстр делегатів до голосування, яке вам важливе, а не після, і перевіряйте кожен реєстр, яким ваша організація справді користується. Щоб продовжити вивчати основи, читайте інші матеріали Bitbase Academy.

Схожі матеріали

Інші матеріали Bitbase на цю тему:

- Чому міграція токена просить схвалення в гаманці

- Міграція токенів завершена, але нових токенів немає в гаманці

- Як розрахувати фінансовий запас скарбниці токен-проєкту

- Коефіцієнт NVT: вартість мережі до транзакцій

- Шахрайство з аірдропами та контрольний список безпеки перед отриманням

Застереження: Ця стаття є освітнім матеріалом Bitbase Academy і надається лише для інформації. Вона не є інвестиційною, торговою, податковою чи фінансовою порадою. Криптоактиви волатильні — оцінюйте ризики самостійно. Написано станом на вересень 2026 року; орієнтуйтеся на найновішу офіційну інформацію.

Джерела

[1] Документація OpenZeppelin Contracts 5.x, Governance docs.openzeppelin.com

[2] Документація OpenZeppelin Contracts 5.x, API, ERC20 (ERC20Votes) docs.openzeppelin.com

[3] Документація Compound, Governance (Compound v2) docs.compound.finance

[4] Документація Snapshot, посібники користувача, Delegation docs.snapshot.box

Пов'язані статті

Більше