stas: (Default)
stas ([personal profile] stas) wrote2020-04-21 12:46 pm

ethereum

Читаю сейчас книгу про то, как устроен Ethereum VM. Поразительная вещь - разрабатывая систему с нуля во втором десятилетии 21 века, люди умудрились сделать так, что там возможны и integer overflow/underflow, и uninitialized memory reference, и race conditions - в несколько извращённой форме, поскольку система по дизайну однопотоковая, но таки удалось!
Можно говорить, что проблема в компиляторах типа solidity, которые компилируют такой код без всяких проблем, а сама VM не виновата (от чего всё равно не легче, кстати), но хотя бы с overflows можно и на уровне VM бороться.

И, разумеется, все эти проблемы в реальных контрактах могут стоить владельцам реальных - ну т.е. воображаемых, но для них вполне реальных - денежных потерь. И уже стоили. Собственно, мега-форк экосистемы на Ethereum и Ethereum Classic произошёл именно из-за одного такого бага. Там, кажется, попятили виртуальных печенюшек на сумму в 50 млн. Конечно, вряд-ли все 50 млн можно будет обналичить, да и не факт, что вообще что-то можно будет, но сама по себе история впечатляет.

Такое впечатление, что опыт последних 30 лет никого ничему не научил. Т.е. я понимаю, что сделать систему без багов невозможно, все дела, но когда речь идёт о граблях, на которые наступают уже много десятилетий, может можно хотя бы не раскладывать их прямо на дороге?
e2pii1: (Default)

[personal profile] e2pii1 2020-04-22 08:02 am (UTC)(link)
Что хорошо для отсеивания тупых необязательно лучший выбор для финансового софта (если не требуется высочайшей производительности)


cjelli: (hal9000)

[personal profile] cjelli 2020-04-22 04:29 pm (UTC)(link)
Джоэль имеет в виду, что тем, кого ищут писать финансовый софт, не надо идти учиться в университет - достаточно техникумов.

[identity profile] http://users.livejournal.com/sorcerer-/ 2020-04-22 08:15 am (UTC)(link)
Качество дискуссии так себе, особенно позабавил мап-редьюс.
juan_gandhi: (Default)

[personal profile] juan_gandhi 2020-04-22 06:20 am (UTC)(link)
Да, могли бы. Я вообще не понимаю такой херни как "неинициализированная переменная".

[identity profile] http://users.livejournal.com/sorcerer-/ 2020-04-22 08:06 am (UTC)(link)
Для этого надо хорошо разбираться в перформансе.