хуйу нас не матерятся
Вот уже пол года мы интегрируем EOS блокчейн в наш IOT проектик. Мы насобирали пачку граблей о которых я собираюсь Вам поведать.
Мы пилим универсальный транспорт для пересылки данных от IOT девайсов к их получателю. Блокчейн нам нужен для того, что бы гарантировать прозрачность взаиморасчётов. Например, что бы гарантировать, что владелец проксей, не выставил счёт на больше денег, чем реально транзакций через него прошло, или владелец девайсов не занизил количество бабла которое он должен оплатить проксям.
Итак, приступим.
На оф сайте дофига документации, но вся она устаревшая, либо не полная. Нам пришлось потратить прилично времени и граблей, прежде чем смогли поднять свою приватную сетку.
Так же нужно внимательно читать релизноуты на гите, ибо специфические версии EOSIO нуждаются в определённых версиях контрактов, а контракты в определённых версиях CDT, а цдт ... ну Вы поняли.
Контракты хоть и пишутся на C++, но на кастрированном C++, например, у вас не будет cpp hashmap по этому мы юзаем просто map, нет поддержки try-catch, и все либы что их юзают, не работают.
Частенько компилятор не может докомпилировать контракт, из-за бага связанного с виртуализацией, почитайте эту эпическую веточку: https://github.com/EOSIO/eosio.cdt/issues/288, нам просто предлагают не использовать виртуализацию.
Поверх блокчейн ноды лежит пачка плагинов, всё бы хорошо, но часть из них работает криво, например, плагин history, на запрос блока, иногда может отвечать пустыми данными, а не ошибкой, в итоге получаешь неверные данные. Адругой плагин, chain, если не путаю, ваще не работает по запросам транзакций по ID.
Судя по всему, мы первые, кто решил запилить на ЕОСе что-то действительно серьёзное, а не очередную лохотрон рулеточку.
Нащупали мы лимит на размер wasm+abi в районе 550кб. И внезапно об этом лимите сами разработчики нифига не знают.
Проявляется эта проблема при попытки залить контракт юзеру. Вываливается вот такая ошибка:
Если уменьшить общий размер wasm+abi то всё пролазит нормально.