Описание бага в коде HF22, или как не получится разбогатеть @lindsay


Недавно выкатили код HF-22, фичи описаны здесь

В том числе, была реализована плавная автоконвертация GBG в GOLOS если % долга превышает 20%. Я высказывался против данной функциональности, т.к. это просто архитектурно некрасиво. Просматривая код, оказалось, что и при реализации могут возникнуть проблемы. Реализованный код кое-чего не учитывает и таким образом позволяет избежать конвертации GBG.

Итак, следите за руками.

Код конвертации учитывает балансы на аккаунтах, предварительно отменяет ордера на бирже. Но он не учитывает специальные escrow-балансы. Есть такая штука как операция escrow_transfer. Смотреть в libraries/chain/steem_evaluator.cpp в void escrow_transfer_evaluator::do_apply. Там мы видим, что когда она обрабатывается, средства списываются с баланса аккаунта, и зачисляются на специальный промежуточный escrow-баланс.

 _db.adjust_balance(from_account, -steem_spent);
 _db.adjust_balance(from_account, -sbd_spent);

 _db.create<escrow_object>(& {
     esc.escrow_id = o.escrow_id;
     esc.from = o.from;
     esc.to = o.to;
     esc.agent = o.agent;
     esc.ratification_deadline = o.ratification_deadline;
     esc.escrow_expiration = o.escrow_expiration;
     esc.sbd_balance = o.sbd_amount;
     esc.steem_balance = o.steem_amount;
     esc.pending_fee = o.fee;
 });

Таким образом, некто может "закопать" GBG в таком escrow-переводе и спокойно пересидеть принудительную конвертацию. Всех конвертирует а тебя нет, PROFIT!


P.S.

Приходите к нам в троллбокс: https://t.me/upit_trollbox


Мои opensource-проекты на Голосе

  • golos-python - python-библиотека для Голоса.
  • golos-witness-tools - набор скриптов для делегатов.
  • golos-scripts - разные полезные скрипты для Голоса на python

Comments 4


@vvk а это вообще работало кога либо? в смысле эскроу

10.12.2019 20:30
0

@erikkartmen работв

11.12.2019 04:54
0

Join us to mine!

11.12.2019 08:25
446