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 лет никого ничему не научил. Т.е. я понимаю, что сделать систему без багов невозможно, все дела, но когда речь идёт о граблях, на которые наступают уже много десятилетий, может можно хотя бы не раскладывать их прямо на дороге?

[identity profile] http://users.livejournal.com/sorcerer-/ 2020-04-22 08:09 am (UTC)(link)
Потому, что везде хуяк-хуяк и в продакшен.
Де факто системы с гарантиями стали делать только недавно. См. го и раст.
Если открыть C++ там все так плохо, что той Солидити срать и срать.
И комитет по C++ прогоняет такую пургу, что стыдно.
Из всех чуваков по VM которых я знаю норм мозги есть только у авторов KVM и Линуса Торвальдса.
Все остальное - ну такое.
e2pii1: (Default)

[personal profile] e2pii1 2020-04-22 08:57 am (UTC)(link)
> Если открыть C++ там все так плохо, что той Солидити срать и срать.

Это бессмысленное утверждение, т.к. цель и смысл C/C++ состоят в возможности написания максимально производительного софта на portable языке высокого уровня.

Это как сказать "в гоночной машине все так плохо - в столб на ней врежешься мало не покажется".

[identity profile] http://users.livejournal.com/sorcerer-/ 2020-04-22 12:29 pm (UTC)(link)
Это очень поверхностное понимание.
Я про тонкости стандарта, написанные астронавтами, которые в жизни не разрабатывали ничего.

[personal profile] arifg 2020-04-23 04:16 pm (UTC)(link)
Знаете, мне тут по долгу службы пришлось окунуться в эппловский Свифт, где все это решено, и обернуто бантиками, так я жду-недождусь, когда, наконец, этот проект закончится и мне удастся вернуться к С/С++ и Винде, где можно наступить на мину, особенно когда пишешь код для ядра, но зато не чувствуешь себя как в концлагере и где все зависит только от тебя, а не от дяди и его понимания "правильного кода". Может, я такой олдтаймер и анархист, но вот.

[personal profile] arifg 2020-04-23 07:30 pm (UTC)(link)
А было ведь такое: Visual Basic 6. Прибили гады... Эх, где те золотые времена...

[identity profile] http://users.livejournal.com/sorcerer-/ 2020-04-23 11:24 pm (UTC)(link)
> все зависит только от тебя, а не от дяди и его понимания "правильного кода"

На петоне попеши, там за тебя даже форматирование язык решает!
Пороха не нюхали!!!
yarpenzigrin: main (Default)

Re:См. го и раст.

[personal profile] yarpenzigrin 2020-04-22 03:06 pm (UTC)(link)
Да-да. Когда-то что-то такое я слышал про джаву.
На моё имхо, язык не только не заменит межушный нервный узел, но и отнюдь наоборот- чем больше будут уповать на то, что вот теперь-то на (D,F, Go...) будет по-другому и всё станет хорошо, тем глубже будет "хотели как лучше, а вышло как всегда" (с).

Re: См. го и раст.

[identity profile] http://users.livejournal.com/sorcerer-/ 2020-04-23 12:28 am (UTC)(link)
Есть очень много менеджеров которые вполне хорошо пишут на sql. И вообще это действительно самый лёгкий и понятный язык из всех.

Re: См. го и раст.

[identity profile] http://users.livejournal.com/sorcerer-/ 2020-04-23 07:58 am (UTC)(link)
Ну. Я знаю точно об одном проекте по анализу сейлзов где два чувака делали примерно одно и то же. На питоне и на сиквеле.
Проект на сиквеле без тестов почти. На питоне как обычно 50% кода тесты. Питонский после этого ломался постоянно (при изменения ессно). А сиквел работал как по рельсам. И кода в нем было в 5 раз меньше.
Т.е. сиквел и легче и более защищен от идиотов.

Или можно смотреть с другой стороны: жабаскрипт на порядок сложнее сиквела, но в среднем на нем пишут такие макаки, что туши свет.
Edited 2020-04-23 08:03 (UTC)
toshick: (Default)

Re: См. го и раст.

[personal profile] toshick 2020-04-23 11:06 am (UTC)(link)
как человек, когда-то написавший проект в 50 000 строк кода на MS TransactSQL, я абсолютно этому не удивлен
e2pii1: (Default)

Re: См. го и раст.

[personal profile] e2pii1 2020-04-23 03:23 am (UTC)(link)
"Израильский SQL-сервер всегда отвечает запросом на запрос"

toshick: (Default)

Re: См. го и раст.

[personal profile] toshick 2020-04-23 11:03 am (UTC)(link)
а-а-а !

made my day

[identity profile] http://users.livejournal.com/sorcerer-/ 2020-04-23 01:56 pm (UTC)(link)
C++ 2017 - это тоже война и немцы.