Пост-контент
13 subscribers
10 photos
4 files
86 links
Про блокчейн с тз разработки. Больше всего про Substrate, Ethereum, Rust. Ссылки прилагаю.
Другие темы всплывают, но редко.

@mksem

Ава от @Spokoino
Download Telegram
Пост-контент
#eth Клиент из двух частей - слой консенсуса (beacon chain) и слой исполнения (на базе EIP-3675). И они как-то взаимодействует друг с другом. Алсо на очереди с моей стороны посмотреть реализацию https://github.com/sigp/lighthouse
Первое, что делает лайтхаус на запуске beacon node - конфигурирует аллокатор.

/// The optimal mmap threshold for Lighthouse seems to be around 128KB.
///
/// By default GNU malloc will start with a threshold of 128KB and adjust it upwards, but we've
/// found that the upwards adjustments tend to result in heap fragmentation. Explicitly setting the
/// threshold to 128KB disables the dynamic adjustments and encourages `mmap` usage, which keeps the
/// heap size under control.

Из документации mallopt:

Nowadays, glibc uses a dynamic mmap threshold by
default. The initial value of the threshold is 128*1024,
but when blocks larger than the current threshold and less
than or equal to DEFAULT_MMAP_THRESHOLD_MAX are freed, the
threshold is adjusted upward to the size of the freed
block. When dynamic mmap thresholding is in effect, the
threshold for trimming the heap is also dynamically
adjusted to be twice the dynamic mmap threshold. Dynamic
adjustment of the mmap threshold is disabled if any of the
M_TRIM_THRESHOLD, M_TOP_PAD, M_MMAP_THRESHOLD, or
M_MMAP_MAX parameters is set.

Выключают динамическое изменение размера выделяемого в хипе блока, чтобы избежать фрагментации
Жил себе, поживал, и не знал, что SUT это System Under Test и включает в себя все тестируемые элементы. Век живи, век учись гугли новые термины
#stellar

Выяснил опытным путем, что тесты в соробане считают ресурсы на весь прогон теста, а не за один вызов контракта, поэтому если в тесте есть цикл или делается много вызовов, то тест упадет с ошибкой TrapCpuLimitExceeded.
Но есть метод env.budget().reset_default() чтобы избежать падения.
На сайте ЦБ есть список операторов ЦФА, интересно-интересно
#substrate

Polkadot 2.0
https://www.youtube.com/watch?v=GWPZDB-WsnE

1) Вместо слотов на 24 месяца - рента на 4 недели
2) Снова обещают паратреды, не называя их паратредами (паратреды в польке не работают сейчас)
3) Accords - "контракты" доступные для всех парачейнов
Когда-то делал ораклы - нужна была возможность брать цены от разных источников и хранить медиану от них. Оракл по сути делал запросы, парсил ответы и записывал в чейн. Одна из бирж (возможно, кракен) отдавала символ битка как XBT, и я для них сделал просто отдельный if.
А оказывается, есть стандарт ISO-4217, и по нему токен не принадлежащий стране должен начинаться с X.
#stellar #soroban

Ох уж эти ваши no_std окружения и васмы. Ни тебе print, ни нормальных структур данных.
В соробане реализовали свой вектор - технологичный, классный, чтоб любая операция за logn. А для его конструирования нужно передавать env первым элементом, да. И вот в этом векторе есть встроенный binary_search, но нет сортировки🤷‍♂️
#stellar

Есть такой старый уже формат сериализации XDR, стеллар решила использовать его в качестве формата для своих данных. На случай, если кто-то говорит про перекладывание джсонов, можно аргументировать, что есть еще и другие форматы
Forwarded from Стой под стрелой (Nikita Prokopov)
Любой программист должен уметь менять обходить дерево, поднимать докер, мержить ветки, настраивать принтер, верстать с хуками, верстать без хуков, обучать модель, обновлять драйвера, дебажить сегфолт, линковать статически, линковать динамически, обновлять статус задач в джире, спрашивать почему, объяснять, почему за вчера ничего не сделал, настраивать CI, катить релизы, комментировать упавшие тесты, оценивать сложность задачи, открывать транзакцию, закрывать транзакцию, пинговать ya.ru, продлевать SSL-сертификат, включать VPN, искать лишнюю запятую в JSON-е, ждать компиляции, чинить звук в Линуксе, обновлять OAuth токены, удалять куки, проходить дизайн-интервью, иметь мягкие навыки, иметь жесткие навыки, дропать базу.

Специализация — удел насекомых.
#substrate

У нас было два чейна, десяток паллетов, 5 оффчейн воркеров, раст аналайзер, на 90% нагружающий процессор, и целое море обновлений от польки, а так же бухло в офисе, в баре, на ретро, пинта чистого Ethereum, и один ассет с нулевой ценой. Не то, чтобы всё это было категорически необходимо в разработке, но если уж начал собирать коллекцию, то к делу надо подходить серьёзно.
#stellar

Если bitcoin использует BASE58 для аккаунтов, ethereum берет хэш от публичного ключа и обрезает до последних 20 байт, то stellar иcпользует свою схему strkey, единую для публичного, приватного ключа, а также для всех подписанных данных, айди контрактов и прочих мультиплекс аккаунтов
https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0023.md

https://stellar.github.io/js-stellar-sdk/StrKey.html

https://github.com/stellar/rs-stellar-strkey
#stellar

Перед тем, как отправить транзакцию с вызовом метода в соробане, нужно получить footprint через механизм preflight. Footprint будет содержать все ключи стораджа, которые будут задействованы в этой транзакции. Preflight (в js sdk называется simulateTransaction) выполняет транзу, не записывая изменения в сторадж. Странное поведение, не так ли? А делается это для того, чтобы стелларовский/соробановский диспетчер транзакций мог понять, какие транзы можно исполнять параллельно, то бишь, не пересекаются по данным!
Сейчас во futurenet есть такая бага - preflight имеет ограничение в 40М инструкций, а непосредственно соробан 100М инструкций. Так что если твоя транза даже попадает под лимиты соробана - префлайт ее отсечет. А собирать руками префлайт дикий гемор. Обещают поправить в скором времени
#substrate

01.09.2023 все парачейны в Кусаме встали, из-за начавшегося диспута - это такой "протокол", с помощью которого валидаторы в польке решают, а че, нормальный ли был блок, который мы уже включили в цепочку. Так получилось, что включенный ненормальный блок был уже финализирован, поэтому, после того, как диспут решил его убрать из истории, включился такой типа шатдаун - все блоки во всех парачейнах остановились, выключить этот режим можно только через голосование, которое в тот же день и произошло, к концу дня блоки пошли.
А вот тут фикс баги, которая привела к диспуту
#stellar #soroban

Для ясности - стеллар это блокчейн, соробан - платформа, которая встраивается в чейн.

stellar-core - p2p нода, отвечающая за прием транзакций, формирование блоков и их отправку/прием (блоки у стеллара называются ledger), написана на cpp

rs-soroban-env - соробан-хост, встраиваемый в ноду, отвечает за исполнение контрактов и включение их в транзакции, написан на rust. Нода вызывает хост через FFI, хост создает васм инстанс и вызывает метод контракта

rs-soroban-sdk - для создания контрактов, rust билдится в wasm
#eth #defi
Среди репозиториев балансера есть один с оффчейн роутингом - "an off-chain linear optimization of routing orders across pools for best price execution".
А для решения задач линейного программирования оказывается есть целая утилита lp_solve, ей на вход даешь текстовый файлик с уравнениями, а она на выход решение, пример.
Давно ничего сюда не писал, не потому что нечего, а потому, что впадлу много всякого, не сразу понимаешь, что стоит поста, а что нет.

Напишу кратко, без ссылок, типа бриф:

Соробан ввел, а потом еще раз ввел время жизни стораджа, да причем еще и по типам - разные протухают по разному. Про это были обсуждения в эфире и вроде как в следующем обновлении добавят дешевый сторадж, который будет жить только во время транзакции.

Просматривая пропоузалы инча наткнулся на забавный пропоузал NFT маркета, коряво написанный и анонсирующий сотрудничество с инчом. В комментарии набежали держатели токенов и аж кофаундеры, указали на дублирование с другим, менее корявым пропоузалом, сказали, что никакого такого сотрудничества нет, и вообще текст нейронкой написан, айяйяй.

Юнисвап в4 теперь моноконтракт, все свапы считаются внутри, в конце надо дернуть ввод/вывод по результатам расчета. Если в конце транзакции дельта не нулевая, то все упадет. Планируется для дельты использовать как раз временный сторадж из первого абзаца.

Есть такой трейдер джо, первая версия это копия юнисвап в2, а версии 2 и 2.1 это тщательно переписанный юнисвап в3 с небольшими отклонениями, в частности, чуть по-другом считаются тики, у них они называются бинами (bin).

Арбитрум раздал ARB работающим проектам в арбитруме, чтобы те в свою очередь раздали их другим через всякие активности и интеграции, называется эта инициатива STIP. Прикольно, неуверен, есть ли примеры такого "фандинга" в других сетях.

В польке 24.10.2023 случится анлок дотов из первого краудлоана, а первые парачейны должны будут либо арендовать новый слот, либо уйти в небытие.
Также полька тестирует асинк бэкинг в рококо (так тестнет называется) скоро-скоро обещают кусаму, затем польку. Говорили, что парачейнам ничего отдельно делать не надо, но это ложь - как минимум, нужно обновится до актуальной версии, я уже это сделал в виде драфта - до состояния компиляции, и это боль. Впрочем, как всегда.
🔥1
Одна из фич юнисвап в4 - хуки на действия с пулом (свап, депозит, вывод). Забавно, что в балансере уже примерно как год есть хуки, да и токены они все тоже хранят в одном vault-контракте, как и новый юнисвап.
Да, Брайан, это то, чем мы все занимаемся, но тем не менее, спасибо тебе за chopstick, без него было бы хуже

https://twitter.com/XiliangChen/status/1722546359071609103
Долго ли, коротко ли - кажется весь дефай так или иначе напарывается на уязвимости, чем меньше проект, тем как будто выше вероятность напороться. Уже вроде и статьи есть с типикал уязвимостями, на что внимание обратить, и вроде насмотренность есть, и аудиты заказывают - и все равно напарываются.
Вот, например, еще одна - округление. Иногда, например если у вас лендинг протокол, правильно округлять не просто в меньшую сторону, а по-разному в разных местах - в меньшую при deposit и в большую при borrow (речь от минте LP токена). Казалось бы такая мелочь, да вот жеж нет. При стечении обстоятельств: стоимости актива и стоимости транзакции, атакующий будет в плюсе.

https://neodyme.io/blog/lending_disclosure/

А пост появился потому, что один из активных участников дискорда Стеллара указал мне нам команде Slender, на такую уязвимость и что бы вы думали - да, можно было брать в долг маленькими кусочками бесплатно! Уже пофиксил, скоро залью в девелоп.
Ситуация подтверждает - базовые уязвимости, связанные с математикой, надо проверять максимально тщательно.
Forwarded from Евгений
простите