Подготовка к собеседованию в зарубежную компанию
В этом месяце я решил провести полноценную подготовку к прохождению собеседований в зарубежные компании. И сейчас публикую первую подборку статей, которые крайне рекомендую изучить и понять каждому. Все ресурсы, понятное дело, на английском языке.
Скорее всего, позже в этом месяце будет сделана вторая подборка материалов, так как еще не все изучено из того, что планировал и сохранял.
Итак, сохраняйте себе!
1. Для начала нужно понимать как работает память в Solidity. Вот тут вы найдете одну из лучших статей, которая рассказывает о работе с памятью.
2. Далее следует разобраться как работает EVM во время вызовов между контрактами. Эта серия статей поможет нам.
3. Часто встречал вопросы про опкоды. Вот тут можно потренироваться решать пазлы, а вот тут почитать решения. На самом деле, статья с решениями помогла мне намного больше, чем задачки.
4. Серия статей от Open Zeppelin расскажет как работают смарт контракты.
5. Подборка нюансов о Solidity и EVM, которая недавно уже была на канале, просто обязана быть в этой подборке!
6. Побитовые операции. Простая тема, которая доходила до меня дольше всего. А может все еще и доходит... Но хотя бы базис знать надо.
7. Популярная статья What happens when you send 1 DAI. Просто обязательна к прочтению каждому разработчику и аудитору.
8. Yul и assembly другой камень преткновения многих начинающих свой путь в web3. Тут довольно просто и детально все описано. Лучше практиковаться в своей IDE или Remix.
9. Последняя на сегодня это статья про MEV. Интересная и сложная одновременно. Вопросов по этой теме не так уже много, но лучше бы быть в курсе.
На изучение этой подборки может уйти от пары недель до пары месяцев. После этого изучения вы сможете ответить на многие вопросы на собеседовании, ну или хотя бы показаться человеком знающим.
Приятного обучения!
#interview
В этом месяце я решил провести полноценную подготовку к прохождению собеседований в зарубежные компании. И сейчас публикую первую подборку статей, которые крайне рекомендую изучить и понять каждому. Все ресурсы, понятное дело, на английском языке.
Скорее всего, позже в этом месяце будет сделана вторая подборка материалов, так как еще не все изучено из того, что планировал и сохранял.
Итак, сохраняйте себе!
1. Для начала нужно понимать как работает память в Solidity. Вот тут вы найдете одну из лучших статей, которая рассказывает о работе с памятью.
2. Далее следует разобраться как работает EVM во время вызовов между контрактами. Эта серия статей поможет нам.
3. Часто встречал вопросы про опкоды. Вот тут можно потренироваться решать пазлы, а вот тут почитать решения. На самом деле, статья с решениями помогла мне намного больше, чем задачки.
4. Серия статей от Open Zeppelin расскажет как работают смарт контракты.
5. Подборка нюансов о Solidity и EVM, которая недавно уже была на канале, просто обязана быть в этой подборке!
6. Побитовые операции. Простая тема, которая доходила до меня дольше всего. А может все еще и доходит... Но хотя бы базис знать надо.
7. Популярная статья What happens when you send 1 DAI. Просто обязательна к прочтению каждому разработчику и аудитору.
8. Yul и assembly другой камень преткновения многих начинающих свой путь в web3. Тут довольно просто и детально все описано. Лучше практиковаться в своей IDE или Remix.
9. Последняя на сегодня это статья про MEV. Интересная и сложная одновременно. Вопросов по этой теме не так уже много, но лучше бы быть в курсе.
На изучение этой подборки может уйти от пары недель до пары месяцев. После этого изучения вы сможете ответить на многие вопросы на собеседовании, ну или хотя бы показаться человеком знающим.
Приятного обучения!
#interview
🔥32👍3
Большая заметка по работе с памятью
Несмотря на то, что на канале уже было достаточно материалов по работе с памятью в Solidity, я постоянно путался в некоторых моментах. Поэтому решил объединить все в одном посте-заметке, чтобы иметь быстрый доступ и периодически напоминать себе основные нюансы.
Storage
1. Размер Storage контракта 2**256-1.
2. Слоты в памяти имеют размер в 32 байта. Если переменные меньше 32 байт, то они могут быть "упакованы". Т.е. если есть 4 переменные uint8, то они все будут занимать только один слот.
3. Динамические массивы хранятся следующим образом: сначала определяется слот, в котором массив был обозначен. Там хранится его длина (кол-во элементов), а значение элемента в массиве высчитывается через keccak256(p), где "р" - номер слота инициализации массива. Таким образом, первый элемент массива будет храниться в keccak256(p), второй в keccak256(p)+1, третий в keccak256(p)+2 и т.д.
4. Маппинга хранятся немного по другому. В главном слоте, где был объявлен маппинг, хранится пустое значение (все нули). А значение маппинга находится с помощью keccak256(p CONCAT key), где key - это ключ, к которому нужно найти само значение.
5. Enum, по описанию из комментария на stackexchange: Up to 255 values seems to take up 8 bits of storage, and 256 values seems to take up 16 bits of storage.
Memory
1. Максимальный размер Memory - 2 ** 64 байта.
2. Стоимость хранения считается linearly для первых 724 байтов, и Quadratically - после.
3. Структура памяти:
0x00 - 0x3f (64 bytes): зарезервированное место для хеширования;
0x40 - 0x5f (32 bytes): указатель на свободное место (free memory pointer);
0x60 - 0x7f (32 bytes): пустой слот, который также используется, как изначальное значение для динамических массивов;
Отсчет для хранения новых значений начинается с 128 байта.
4. Слоты всегда по 32 байта.
5. Для динамических массивов в первом слоте хранится его длина, а затем идут сами элементы.
6. Если добавляете значения в Memory через assembly, то также необходимо обновлять и free memory pointer, так как в этом случае он не обновляется автоматически.
7. Все не инициализированные значение будут указывать на слот 0х60 (кроме структур), в то время как строки, байти и динамические массивы будут указывать на следующий free memory location.
Calldata
1. Неизменяемое хранилище данных.
2. Не могут храниться и передаваться маппинги.
3. В отличие от Memory размер не лимитирован.
4. Размер всего calldata можно узнать с помощью опкода CALLDATASIZE.
5. Первые 4 байта всегда занимает селектор функции, который считается через bytes4(keccak256("funcName(args)")).
6. Для динамических массивов и строк сначала идет offset (32 байта), потом длина / размер (32 байта), потом сами значения.
Stack
1. Хранение по принципу LIFO - last in, first out.
2. В стеке доступны только верхние 16 слотов.
3. Базовые опкоды: PUSH, POP, SWAP и DUP.
4. Solidity, как язык, не работает на прямую со стеком.
5. Функции помеченные, как external, занимают два слота в стеке: адрес контракта и селектор вызываемой функции. В этом случае они zero-padded слева, а не справа, как это в других случаях.
6. Для того, чтобы обойти ошибку "stack too deep" можно использовать block scopes {}.
Code
1. Константы и immutable хранятся в байткоде контракта.
2. Если константы на определены по какой-либо причине, то они на попадают в байткод.
3. Immutable нельзя определять в try/catch в версии 0.8.20.
4. Аргументы для конструктора контракта добавляются в конец байтокода самого контракта.
P.S. Можете смело корректировать или добавлять пункты в комментариях.
#storage #memory #calldata #code #stack
Несмотря на то, что на канале уже было достаточно материалов по работе с памятью в Solidity, я постоянно путался в некоторых моментах. Поэтому решил объединить все в одном посте-заметке, чтобы иметь быстрый доступ и периодически напоминать себе основные нюансы.
Storage
1. Размер Storage контракта 2**256-1.
2. Слоты в памяти имеют размер в 32 байта. Если переменные меньше 32 байт, то они могут быть "упакованы". Т.е. если есть 4 переменные uint8, то они все будут занимать только один слот.
3. Динамические массивы хранятся следующим образом: сначала определяется слот, в котором массив был обозначен. Там хранится его длина (кол-во элементов), а значение элемента в массиве высчитывается через keccak256(p), где "р" - номер слота инициализации массива. Таким образом, первый элемент массива будет храниться в keccak256(p), второй в keccak256(p)+1, третий в keccak256(p)+2 и т.д.
4. Маппинга хранятся немного по другому. В главном слоте, где был объявлен маппинг, хранится пустое значение (все нули). А значение маппинга находится с помощью keccak256(p CONCAT key), где key - это ключ, к которому нужно найти само значение.
5. Enum, по описанию из комментария на stackexchange: Up to 255 values seems to take up 8 bits of storage, and 256 values seems to take up 16 bits of storage.
Memory
1. Максимальный размер Memory - 2 ** 64 байта.
2. Стоимость хранения считается linearly для первых 724 байтов, и Quadratically - после.
3. Структура памяти:
0x00 - 0x3f (64 bytes): зарезервированное место для хеширования;
0x40 - 0x5f (32 bytes): указатель на свободное место (free memory pointer);
0x60 - 0x7f (32 bytes): пустой слот, который также используется, как изначальное значение для динамических массивов;
Отсчет для хранения новых значений начинается с 128 байта.
4. Слоты всегда по 32 байта.
5. Для динамических массивов в первом слоте хранится его длина, а затем идут сами элементы.
6. Если добавляете значения в Memory через assembly, то также необходимо обновлять и free memory pointer, так как в этом случае он не обновляется автоматически.
7. Все не инициализированные значение будут указывать на слот 0х60 (кроме структур), в то время как строки, байти и динамические массивы будут указывать на следующий free memory location.
Calldata
1. Неизменяемое хранилище данных.
2. Не могут храниться и передаваться маппинги.
3. В отличие от Memory размер не лимитирован.
4. Размер всего calldata можно узнать с помощью опкода CALLDATASIZE.
5. Первые 4 байта всегда занимает селектор функции, который считается через bytes4(keccak256("funcName(args)")).
6. Для динамических массивов и строк сначала идет offset (32 байта), потом длина / размер (32 байта), потом сами значения.
Stack
1. Хранение по принципу LIFO - last in, first out.
2. В стеке доступны только верхние 16 слотов.
3. Базовые опкоды: PUSH, POP, SWAP и DUP.
4. Solidity, как язык, не работает на прямую со стеком.
5. Функции помеченные, как external, занимают два слота в стеке: адрес контракта и селектор вызываемой функции. В этом случае они zero-padded слева, а не справа, как это в других случаях.
6. Для того, чтобы обойти ошибку "stack too deep" можно использовать block scopes {}.
Code
1. Константы и immutable хранятся в байткоде контракта.
2. Если константы на определены по какой-либо причине, то они на попадают в байткод.
3. Immutable нельзя определять в try/catch в версии 0.8.20.
4. Аргументы для конструктора контракта добавляются в конец байтокода самого контракта.
P.S. Можете смело корректировать или добавлять пункты в комментариях.
#storage #memory #calldata #code #stack
👍11💯3❤2🔥2
Сводный пост про основные DeFi
Решил для себя написать небольшую заметку, к которой мог бы обращаться, чтобы напомнить об основных особенностях какого-либо протокола. Порой на собеседовании могут спросить об этом, поэтому такую напоминалку лучше держать под рукой.
P.S. Если знаете, что можно добавить, смело пишите в комментарии. Пост будет дополняться.
Balancer
1. Один из самых популярных DEX (AMM) протоколов;
2. Есть две версии протокола. Главное отличие V1 от V2 в том, что в V2 существует только один Vault, который держит и управляет всеми активами пулов.
3. V2 также более gas efficient, так как операции происходят в одном Vault, и пользователям не нужно переводить активы с одного пула в другой. Все работает с внутренним балансом.
Инструменты: swaps, weighted pool (like Uniswap), stable pool, boosted pool, bootstrapping pool, linear pool
Governance: BAL token
Uniswap
1. V1 - только пулы токен\эфир;
2. V2 - пулы токен\токен;
3. V3 - концентрированная ликвидность, NFT токен ликвидности, возможность добавить только один токен в пул. Также есть принципы активной ликвидности (при выходе из границ - стоп на проценты), и разные комиссии для разных пулов.
4. Наличие twap oracles в V3.
Инструменты: swaps, flash swaps, flash loan, mine liquidity, oracle
Governance: UNI token
Curve
1. DEX (AMM) для обмена stablecoins.
2. Развернут в 10 сетях: Ethereum, Arbitrum, Aurora, Avalanche, Fantom, Harmony, Optimism, Polygon, xDai и Moonbeam.
3. Смарт контракты пулов могут содержать два и более токенов.
4. В Curve V2 добавили возможность обмена между нескоррелированными активами. В частности, запустили пул WETH/WBTC/USDT.
5. В новой версии также ввели функцию автоматической концентрации ликвидности вокруг текущей цены. За счет этого пользователи смогли обменивать большие суммы с минимальным проскальзыванием.
6. Чтобы предложение было принято, в голосовании должно участвовать не менее 30% существующих veCRV, из которых не менее 51% должны его поддержать.
Инструменты: swaps, farming,
Governance: CRV token
1inch
1. DEX агрегатор.
2. Собирает цены на токены с различных бирж и предоставляет лучшую для обмена.
Инструменты: limit order, swap, farming, wallet
Governance: 1INCH token
dydx
1. DEX базирующаяся на Ethereum layer 2 system StarkWare (ZK).
2. создана для торговли perpetuals. Подобно опционам и фьючерсам, это позволяет спекулировать на будующей цене активов. Однако, в отличие от них же, perpetuals не имеют даты окончания срока действия.
3. dydx работает не как AMM, а по принципу стандартных orderbook.
Инструменты: ордера (perpetuals)
Governance: dydx token
Apollo dex
1. Является первой гибридной биржей CEX-DEX, но с ноября 2022 стала полностью DEX.
Инструменты: обмен и торговля деривативами, staking
Governance: apx token
Compound
1. Работает с переобеспеченными займами.
2. Если у вас есть Эфир на протоколе, то он конвертируется в cETH.
Инструменты: lending & borrowing
Governance: COMP token
Aave
1. Работает с переобеспеченными займами.
2. Предлагает пулы для активов off-chain: недвижимость, cargo and freight invoices.
3. В V3 версии появился Portal, который позволяет работать между сетями блокчейна.
Инструменты: lending & borrowing, flash loan
Governance: aave token
MakerDAO
1. Позволяет закладывать Эфир, чтобы получить токен DAI.
2. Своя система ликвидации и поддержания стабильной цены DAI.
3.В ноябре 2019 года сообщество проекта решило перейти к мультизалоговой системе — то есть позволить пользователям использовать для залога разные криптовалюты.
4. MakerDAO стал первым DeFi-протоколом, который стал принимать в залог акции публичных компаний.
5. Работает смарт-контракт под названием DAI Savings Rate (DSR) — это переменная ставка начислений от токенов DAI, заблокированных в смарт-контракте DSR.
6. Действует особый стабилизационный сбор (Stability Fee).
Инструменты: lending
Governance: mkr token
#dex #defi
Решил для себя написать небольшую заметку, к которой мог бы обращаться, чтобы напомнить об основных особенностях какого-либо протокола. Порой на собеседовании могут спросить об этом, поэтому такую напоминалку лучше держать под рукой.
P.S. Если знаете, что можно добавить, смело пишите в комментарии. Пост будет дополняться.
Balancer
1. Один из самых популярных DEX (AMM) протоколов;
2. Есть две версии протокола. Главное отличие V1 от V2 в том, что в V2 существует только один Vault, который держит и управляет всеми активами пулов.
3. V2 также более gas efficient, так как операции происходят в одном Vault, и пользователям не нужно переводить активы с одного пула в другой. Все работает с внутренним балансом.
Инструменты: swaps, weighted pool (like Uniswap), stable pool, boosted pool, bootstrapping pool, linear pool
Governance: BAL token
Uniswap
1. V1 - только пулы токен\эфир;
2. V2 - пулы токен\токен;
3. V3 - концентрированная ликвидность, NFT токен ликвидности, возможность добавить только один токен в пул. Также есть принципы активной ликвидности (при выходе из границ - стоп на проценты), и разные комиссии для разных пулов.
4. Наличие twap oracles в V3.
Инструменты: swaps, flash swaps, flash loan, mine liquidity, oracle
Governance: UNI token
Curve
1. DEX (AMM) для обмена stablecoins.
2. Развернут в 10 сетях: Ethereum, Arbitrum, Aurora, Avalanche, Fantom, Harmony, Optimism, Polygon, xDai и Moonbeam.
3. Смарт контракты пулов могут содержать два и более токенов.
4. В Curve V2 добавили возможность обмена между нескоррелированными активами. В частности, запустили пул WETH/WBTC/USDT.
5. В новой версии также ввели функцию автоматической концентрации ликвидности вокруг текущей цены. За счет этого пользователи смогли обменивать большие суммы с минимальным проскальзыванием.
6. Чтобы предложение было принято, в голосовании должно участвовать не менее 30% существующих veCRV, из которых не менее 51% должны его поддержать.
Инструменты: swaps, farming,
Governance: CRV token
1inch
1. DEX агрегатор.
2. Собирает цены на токены с различных бирж и предоставляет лучшую для обмена.
Инструменты: limit order, swap, farming, wallet
Governance: 1INCH token
dydx
1. DEX базирующаяся на Ethereum layer 2 system StarkWare (ZK).
2. создана для торговли perpetuals. Подобно опционам и фьючерсам, это позволяет спекулировать на будующей цене активов. Однако, в отличие от них же, perpetuals не имеют даты окончания срока действия.
3. dydx работает не как AMM, а по принципу стандартных orderbook.
Инструменты: ордера (perpetuals)
Governance: dydx token
Apollo dex
1. Является первой гибридной биржей CEX-DEX, но с ноября 2022 стала полностью DEX.
Инструменты: обмен и торговля деривативами, staking
Governance: apx token
Compound
1. Работает с переобеспеченными займами.
2. Если у вас есть Эфир на протоколе, то он конвертируется в cETH.
Инструменты: lending & borrowing
Governance: COMP token
Aave
1. Работает с переобеспеченными займами.
2. Предлагает пулы для активов off-chain: недвижимость, cargo and freight invoices.
3. В V3 версии появился Portal, который позволяет работать между сетями блокчейна.
Инструменты: lending & borrowing, flash loan
Governance: aave token
MakerDAO
1. Позволяет закладывать Эфир, чтобы получить токен DAI.
2. Своя система ликвидации и поддержания стабильной цены DAI.
3.В ноябре 2019 года сообщество проекта решило перейти к мультизалоговой системе — то есть позволить пользователям использовать для залога разные криптовалюты.
4. MakerDAO стал первым DeFi-протоколом, который стал принимать в залог акции публичных компаний.
5. Работает смарт-контракт под названием DAI Savings Rate (DSR) — это переменная ставка начислений от токенов DAI, заблокированных в смарт-контракте DSR.
6. Действует особый стабилизационный сбор (Stability Fee).
Инструменты: lending
Governance: mkr token
#dex #defi
🔥19❤3👍1
Отпуск на канале
В общем пару дней назад у меня появилась хорошая возможность уйти в отпуск и немного отдохнуть от аудитов и Solidity. Поначалу думал, что смогу делать посты в пути, но на деле, нахожусь постоянно в дороге.
Поэтому до 5 июня постов не будет. Единственное, может чуть позже сделаю ретроспективу постов и тем на канале, для более удобной навигации.
Всем приятного обучения и до скорой встречи!
#timeout
В общем пару дней назад у меня появилась хорошая возможность уйти в отпуск и немного отдохнуть от аудитов и Solidity. Поначалу думал, что смогу делать посты в пути, но на деле, нахожусь постоянно в дороге.
Поэтому до 5 июня постов не будет. Единственное, может чуть позже сделаю ретроспективу постов и тем на канале, для более удобной навигации.
Всем приятного обучения и до скорой встречи!
#timeout
❤22
Ретроспектива материалов на канале
Прошло практически 3 месяца с последнего сводного поста на канале. Теперь, на вопрос "Как стать Solidity разработчиком и аудитором?", можно смело отвечать: "Изучите все закрепы на канале!".
Итак, поехали:
Для разработчиков
The File Pattern
Storage Structs
Block scoping
Пример упаковки структур в маппинге
Один нюанс про библиотеки
Интересная библиотека SSTORE2
Необычная функция
Foundry
Foundry для продвинутых
Hardhat + Foundry
Шаблон для форка и тестов в Foundry
Foundry Safer Log
Аудит
Шаблон для аудиторского отчета
Ошибки в смарт контрактах
Странные ERC20
Немного о фантомных функциях
Аудит вне рамок (15 постов с тегом #outofbox)
Как проводить аудит в коопе
По следам аудита zkSync Era (3 поста)
Not So-Famous Solidity Attack Vectors
5 стадий обучения аудитора
Как читать аудиторские отчеты
DeFi
Сводный пост про биржи
Сводный пост про основные DeFi
Подготовка к собеседованиям
Подготовка к собеседованию в зарубежную компанию
Большая заметка по работе с памятью
Немного чисел EVM и Solidity
Сборник заметок по Solidity
Подборка статей для самообучения (2 поста)
Немного нового для общего развития
Уроки и другое
Новые задачи (5 штук)
Немного о EIP-1967
ERC2612, ERC20Permit, аппрув без газа, EIP712
ReentrancyGuard в прокси?
Больше о побитовых операциях
ERC4626: Tokenized vaults
Заметка по Access List и Transaction types
Приятного обучения! Как обычно, буду рад репостам.
#all
Прошло практически 3 месяца с последнего сводного поста на канале. Теперь, на вопрос "Как стать Solidity разработчиком и аудитором?", можно смело отвечать: "Изучите все закрепы на канале!".
Итак, поехали:
Для разработчиков
The File Pattern
Storage Structs
Block scoping
Пример упаковки структур в маппинге
Один нюанс про библиотеки
Интересная библиотека SSTORE2
Необычная функция
Foundry
Foundry для продвинутых
Hardhat + Foundry
Шаблон для форка и тестов в Foundry
Foundry Safer Log
Аудит
Шаблон для аудиторского отчета
Ошибки в смарт контрактах
Странные ERC20
Немного о фантомных функциях
Аудит вне рамок (15 постов с тегом #outofbox)
Как проводить аудит в коопе
По следам аудита zkSync Era (3 поста)
Not So-Famous Solidity Attack Vectors
5 стадий обучения аудитора
Как читать аудиторские отчеты
DeFi
Сводный пост про биржи
Сводный пост про основные DeFi
Подготовка к собеседованиям
Подготовка к собеседованию в зарубежную компанию
Большая заметка по работе с памятью
Немного чисел EVM и Solidity
Сборник заметок по Solidity
Подборка статей для самообучения (2 поста)
Немного нового для общего развития
Уроки и другое
Новые задачи (5 штук)
Немного о EIP-1967
ERC2612, ERC20Permit, аппрув без газа, EIP712
ReentrancyGuard в прокси?
Больше о побитовых операциях
ERC4626: Tokenized vaults
Заметка по Access List и Transaction types
Приятного обучения! Как обычно, буду рад репостам.
#all
👍20🔥8
Возвращаемся к работе и обучению
Фух, две активных недели отпуска пролетели, как один день. Это было весьма необычно для меня не думать о конкурсах или Solidity, учитывая то, что практически весь год я каждый день что-то читал, изучал или проводил аудит. А тут только еда, море, дорога, горы и солнце! В целом, голова разгрузилась и можно снова в бой.
Вчера я думал, как лучше организовать свою работу и участие в конкурсных аудитах. В том плане, что порой бывает сложно уследить за сроками их проведения и правильно распределить свое время.
Календари типа гугл или яндекса мне не совсем подходят, так как не дают мне общей картины загруженности. Jira, Trello и другие продукты Atlassian слишком нагруженные и больше подходят для нагруженных проектов и работы с командой.
По сути, мне просто нужен был сервис с формированием диаграммы Ганта. Выходом для меня стал проект ClickUp.
Хоть там и присутствуют дополнительные фичи, но отслеживание сроков конкурсов удобнее всего.
Более того, он бесплатный, если вы будете пользоваться им сами.
Другой крутой проект, который я решил использовать при проведении аудита - это Whim. Он позволяет создавать визуальные графики и майндкарты. Порой бывает полезно представить визуально, как функции взаимодействуют друг с другом или как перекликаются контракты.
В общем, понемногу вливаемся в рабочий ритм, строим планы и формируем базу для продвижения.
Всем приятной недели и легкого обучения!
#all
Фух, две активных недели отпуска пролетели, как один день. Это было весьма необычно для меня не думать о конкурсах или Solidity, учитывая то, что практически весь год я каждый день что-то читал, изучал или проводил аудит. А тут только еда, море, дорога, горы и солнце! В целом, голова разгрузилась и можно снова в бой.
Вчера я думал, как лучше организовать свою работу и участие в конкурсных аудитах. В том плане, что порой бывает сложно уследить за сроками их проведения и правильно распределить свое время.
Календари типа гугл или яндекса мне не совсем подходят, так как не дают мне общей картины загруженности. Jira, Trello и другие продукты Atlassian слишком нагруженные и больше подходят для нагруженных проектов и работы с командой.
По сути, мне просто нужен был сервис с формированием диаграммы Ганта. Выходом для меня стал проект ClickUp.
Хоть там и присутствуют дополнительные фичи, но отслеживание сроков конкурсов удобнее всего.
Более того, он бесплатный, если вы будете пользоваться им сами.
Другой крутой проект, который я решил использовать при проведении аудита - это Whim. Он позволяет создавать визуальные графики и майндкарты. Порой бывает полезно представить визуально, как функции взаимодействуют друг с другом или как перекликаются контракты.
В общем, понемногу вливаемся в рабочий ритм, строим планы и формируем базу для продвижения.
Всем приятной недели и легкого обучения!
#all
👍16❤🔥1
Необычный require и работа с ошибками
Иногда я писал про интересные моменты в коде, которые встречаю в процессе аудита. Вот и сейчас хочу поделиться одной очень занимательной реализацией кода.
В протоколе Unitas сформирована не совсем стандартная работа с отслеживанием возникающих ошибок в функциях по типу тех, что мы обычно пишем в require. Напомню, что условия для проверки пишутся так:
require(condition, "Error message...");
Можно создавать свои кастомные ошибки, типа "error Unauthorized();", но тогда нам придется использовать if/else вместо require.
В данном протоколе команда пошла дальше. Они создали отдельную библиотеку, где обозначили все возможные ошибки для своего проекта, и записали из в простые uint, например:
uint256 internal constant ADDRESS_ZERO = 1000;
1000 - это код ошибки, а само ее описание сделано комментарием выше.
Далее они написали свою реализацию функции require:
function _require(bool condition, uint256 errorCode) pure {
if (!condition) {
_revert(errorCode);
}
}
И свою реализацию функции revert. Она достаточно длинная, поэтому ее можно будет посмотреть по ссылке ниже на файл протокола.
Теперь в рабочих контрактах протокола можно использовать свой require для вывода ошибок:
_require(amount <= portfolio, Errors.AMOUNT_INVALID);
На самом деле, очень удобная система, когда все ошибки находятся в одном файле под своим кодом.
Саму реализацию файла можно посмотреть тут.
Надеюсь и вам понравится эта система так же, как и мне.
#error #require
Иногда я писал про интересные моменты в коде, которые встречаю в процессе аудита. Вот и сейчас хочу поделиться одной очень занимательной реализацией кода.
В протоколе Unitas сформирована не совсем стандартная работа с отслеживанием возникающих ошибок в функциях по типу тех, что мы обычно пишем в require. Напомню, что условия для проверки пишутся так:
require(condition, "Error message...");
Можно создавать свои кастомные ошибки, типа "error Unauthorized();", но тогда нам придется использовать if/else вместо require.
В данном протоколе команда пошла дальше. Они создали отдельную библиотеку, где обозначили все возможные ошибки для своего проекта, и записали из в простые uint, например:
uint256 internal constant ADDRESS_ZERO = 1000;
1000 - это код ошибки, а само ее описание сделано комментарием выше.
Далее они написали свою реализацию функции require:
function _require(bool condition, uint256 errorCode) pure {
if (!condition) {
_revert(errorCode);
}
}
И свою реализацию функции revert. Она достаточно длинная, поэтому ее можно будет посмотреть по ссылке ниже на файл протокола.
Теперь в рабочих контрактах протокола можно использовать свой require для вывода ошибок:
_require(amount <= portfolio, Errors.AMOUNT_INVALID);
На самом деле, очень удобная система, когда все ошибки находятся в одном файле под своим кодом.
Саму реализацию файла можно посмотреть тут.
Надеюсь и вам понравится эта система так же, как и мне.
#error #require
👍22
Новые видео от Патрика Коллинса
Возможно, вы пропустили, но тот самый Патрик Коллинс, который выпустил 32 часовой курс на ютуб по Solidity, пошел дальше и выпустил крутой 27 часовой курс по Foundry! Машина!
Также в этом посте хочу рассказать про другое его видео, посвященное созданию StableCoin. Примечательно то, что помимо написания самого контракта, в первой половине видео Патрик рассказывает теорию о том, что такое вообще это стейблы и как они ранжируются сегодня.
Курс по Foundry в трех видео
Первое, второе и третье.
Видео про стейблкоины
Уверен, теперь вы знаете, чем занять свой июнь!
Приятного обучения!
#stablecoin #foundry #patrick
Возможно, вы пропустили, но тот самый Патрик Коллинс, который выпустил 32 часовой курс на ютуб по Solidity, пошел дальше и выпустил крутой 27 часовой курс по Foundry! Машина!
Также в этом посте хочу рассказать про другое его видео, посвященное созданию StableCoin. Примечательно то, что помимо написания самого контракта, в первой половине видео Патрик рассказывает теорию о том, что такое вообще это стейблы и как они ранжируются сегодня.
Курс по Foundry в трех видео
Первое, второе и третье.
Видео про стейблкоины
Уверен, теперь вы знаете, чем занять свой июнь!
Приятного обучения!
#stablecoin #foundry #patrick
🔥11👍4❤1
Держим руку на пульсе
Давно не было материалов на канале. Начало лета выдалось какое-то слишком активное. Даже на конкурсные аудиты пока не получается выделять достаточно времени.
При этом на канале уже 878 участников! Это огромное количество для меня! Хочу узнать немного про ваш уровень и планы с Solidity.
Поэтому буду благодарен, если пройдете опрос ниже. Интересно, сколько у нас новичков:
Давно не было материалов на канале. Начало лета выдалось какое-то слишком активное. Даже на конкурсные аудиты пока не получается выделять достаточно времени.
При этом на канале уже 878 участников! Это огромное количество для меня! Хочу узнать немного про ваш уровень и планы с Solidity.
Поэтому буду благодарен, если пройдете опрос ниже. Интересно, сколько у нас новичков:
👍9
Мини курс для начинающих?
Вчера в опросе поучаствовало 180 человек, из которых около 100 участников находятся в начале пути: хотят начать или уже понемногу обучаются.
Я подумал, а что если запустить небольшой интенсив для вас?
Я сам прошел этот путь с нуля до аудитора, выложил на канале кучу полезного материала, продолжаю постоянно обучаться и прекрасно представляю проблемы, которые встречаются у тех, кто впервые столкнулся с Solidity.
Также понимаю, что не все готовы отдавать 100к - 150к+ за курсы, но желание учиться есть. Поэтому такое предложение:
- Небольшой интенсив для старта на месяц-два;
- Участники на отдельном канале с групповым чатом;
- Я буду отвечать на ваши вопросы и проведу по базе Solidity;
- После нескольких тем - тесты с вопросами, которые я встречал на собеседованиях;
- По ходу курса также буду акцентировать внимание на безопасности кода, чтобы вы начали понимать, где в языке есть слабые моменты;
- В начале уроки будут выходить через день, позже раз в 3-5 дней;
- Материалы будут из открытых источников, я буду давать комментарии к ним и указывать на нюансы;
По цене, думаю, около 2000 рублей в месяц. Сможете сами остановиться, когда захотите.
По итогу у вас появятся базовые знания Solidity, сможете писать смарт контракты, работать с библиотеками, будете понимать основы безопасности, научитесь искать нужную информацию и работать с официальной документацией.
В конце вы поймете, хотите ли расти дальше и проходить более продвинутые курсы в профессиональных онлайн университетах, или, возможно, захотите дальше учится самостоятельно.
Ниже будет еще опрос. Если соберем хорошую группу, то сможем начать уже в июле, и до конца лета вы получите достойные базовые знания.
#интенсив
Вчера в опросе поучаствовало 180 человек, из которых около 100 участников находятся в начале пути: хотят начать или уже понемногу обучаются.
Я подумал, а что если запустить небольшой интенсив для вас?
Я сам прошел этот путь с нуля до аудитора, выложил на канале кучу полезного материала, продолжаю постоянно обучаться и прекрасно представляю проблемы, которые встречаются у тех, кто впервые столкнулся с Solidity.
Также понимаю, что не все готовы отдавать 100к - 150к+ за курсы, но желание учиться есть. Поэтому такое предложение:
- Небольшой интенсив для старта на месяц-два;
- Участники на отдельном канале с групповым чатом;
- Я буду отвечать на ваши вопросы и проведу по базе Solidity;
- После нескольких тем - тесты с вопросами, которые я встречал на собеседованиях;
- По ходу курса также буду акцентировать внимание на безопасности кода, чтобы вы начали понимать, где в языке есть слабые моменты;
- В начале уроки будут выходить через день, позже раз в 3-5 дней;
- Материалы будут из открытых источников, я буду давать комментарии к ним и указывать на нюансы;
По цене, думаю, около 2000 рублей в месяц. Сможете сами остановиться, когда захотите.
По итогу у вас появятся базовые знания Solidity, сможете писать смарт контракты, работать с библиотеками, будете понимать основы безопасности, научитесь искать нужную информацию и работать с официальной документацией.
В конце вы поймете, хотите ли расти дальше и проходить более продвинутые курсы в профессиональных онлайн университетах, или, возможно, захотите дальше учится самостоятельно.
Ниже будет еще опрос. Если соберем хорошую группу, то сможем начать уже в июле, и до конца лета вы получите достойные базовые знания.
#интенсив
🔥15
🔥7❤1
Курс для начинающих разработчиков
Еще минут 15 и выложу программу и описание курса, каким его вижу я и хотел бы проходить изначально.
При том, что сейчас достаточно много различный источников и других курсов, большинство из них могут быть достаточно сложными для начинающих. Многие из них предполагают какой-никакой опыт в программировании. Да и написан, зачастую, программистами с большим опытом, которые не понимают, что даже слово "переменная" может вызывать вопросы.
Я постарался написать программу, которая повышает сложность изучения от модуля к модулю. Вы не начнете писать смарт контракты со второго занятия или продумывать тесты с пятого. Вместо этого, ученик будет набираться опыта понемногу. В итоге вы будете знать не только как это написать, но еще и "зачем" это именно так.
В общем, обратный отсчет до программы пошел. Еще 15 минут и будет выложена!
#курс
Еще минут 15 и выложу программу и описание курса, каким его вижу я и хотел бы проходить изначально.
При том, что сейчас достаточно много различный источников и других курсов, большинство из них могут быть достаточно сложными для начинающих. Многие из них предполагают какой-никакой опыт в программировании. Да и написан, зачастую, программистами с большим опытом, которые не понимают, что даже слово "переменная" может вызывать вопросы.
Я постарался написать программу, которая повышает сложность изучения от модуля к модулю. Вы не начнете писать смарт контракты со второго занятия или продумывать тесты с пятого. Вместо этого, ученик будет набираться опыта понемногу. В итоге вы будете знать не только как это написать, но еще и "зачем" это именно так.
В общем, обратный отсчет до программы пошел. Еще 15 минут и будет выложена!
#курс
🔥10👍3❤1
План курса "Начинающий разработчик Solidity"
Модуль 1
Неделя 1
0. Введение в Solidity: что такое смарт контракты, на чем их пишут и в каких блокчейнах.
1. Блокчейн, сайдчейн, l2, плазма. Общее
2. Для чего нужны смарт контракты в текущих реалиях: основные сферы применения;
3. Remix IDE. Из чего состоит смарт контракт.
Неделя 2
4. Типы данных. bool
5. Типы данных: uint, int
6. Типы данных: string, address
7. Типы данных: mapping
Неделя 3
8. Типы данных: array
9. Типы данных: bytes
10. Типы данных: struct
11. Типы данных: Enum.
12. Области видимости переменных
Неделя 4
13. Events, Errors.
14. Модификаторы
15. Функции. Общее
16. Функции: аргументы и block scope
17. Функции: возвращаемые значения
18. Арифметические операции, циклы и условия
Итог обучения: вы узнаете больше о блокчейн сетях и смарт контрактах, сможете разбираться в них на базовом уровне, поймете разнообразные типы данных языка, особенности их использования, а также базовые аспекты безопасности, которые упускаются на других курсах.
Знания из этого модуля - это необходимая основа для понимания работы языка Solidity в целом, а также более быстрого и легкого воприятия информации из последующих модулей.
Модуль 2
Неделя 5
19. Транзакции: общее.
20. Глобальные переменные msg
21. Низкоуровневые вызовы: call, staticcall
22. Низкоуровневые вызовы: delegatecall
Неделя 6
23. Наследование
24. Интерфейсы
25. Библиотеки
26. Библиотеки openzeppelin и solmate
Неделя 7
27. Работа с памятью: code
28. Работа с памятью: storage
29. Работа с памятью: memory
30. Работа с памятью: calldata
31. Работа с памятью: stack
Неделя 8
32. Опкоды: общее
33. Древо Меркла: общее
34. ERC20: общее
35. ERC721: общее
36. Другие ERC: общее
Итог обучения: вы разберетесь, как происходит транзакция и вызовы в ней, как взаимодействуют контракты друг с другом в профессиональных проектах, а также будете прекрасно понимать, как работает память, одна из самых сложных тем в обучении. Более того, вы получите основные знания о популярных стандартах.
Модуль 3
Неделя 9
37. Стандарт ERC20. Общее
38. ERC20. Разбор кода и EIP
39. ERC20. Особенности и разнообразие
40. ERC20. Проблемы безопасности
41. ERC20 от Open Zeppelin
Неделя 10
42. ERC721. Общее
43. ERC721. Разбор кода и EIP
44. ERC721. Использование в проектах
45. ERC721. Проблемы безопасности
Неделя 11
46. Подписи и стандарты
47. ecrecover и ECDSA
48. Безопасность подписей
49. Популярные паттерны. Общее
Неделя 12
50. Голландский аукцион
51. MultiSig и Timelock
52. Commit/reveal
53. DAO и governance
Итог обучения: вы будете уверенно знать, как работают стандарты ERC20 и ERC721, получите примеры их использования и основы безопасности работы с ними. Также поймете принципы работы подписей в блокчейне и популярные паттерны.
Модуль 4
Неделя 13
54. Подготовка и настройка IDE
55. Терминал, Node js, NPM
56. Начало работы с Git и GitHub
Неделя 14
57. Hardhat. Общее
58. Foundry. Общее
59. Плагины для IDE
Неделя 15
60. Прокси. Общее
61. Transparent proxy
62. UUPS proxy
63. Beacon proxy
Неделя 16
64. Diamond proxy
65. Обновляемые прокси
66. Безопасность прокси
Итог обучения: вы узнаете, как работать с IDE (средой разработки) и популярными фреймворками (дополнениями) для тестирования смарт контрактов. Получите твердые навыки работы с прокси контрактами - другой очень важной и сложной темой в Solidity.
Модуль 5
Неделя 17
67. Оракулы. Общее
68. Оракулы Chainlink
69. Оракулы Uniswap
70. Безопасность работы с оракулами
Неделя 18
71. Введение в DeFi
72. Uniswap. Общее
73. Balancer. Общее
74. Compound. Общее
Неделя 19
75. Aave. Общее
76. Curve. Общее
77. MakerDAO. Общее
Неделя 20
78. Мосты и безопасность. Общее
79. l2 и роллапы. Общее
80. Yul и assembly
81. Побитовые операции
Итоги обучения: вы узнаете, как работают оракулы, начнете разбираться в популярных DeFi проектах и их кодовой базе, а также поймете более продвинутые аспекты разработки.
Планы на 6-7 модули:
Модуль 1
Неделя 1
0. Введение в Solidity: что такое смарт контракты, на чем их пишут и в каких блокчейнах.
1. Блокчейн, сайдчейн, l2, плазма. Общее
2. Для чего нужны смарт контракты в текущих реалиях: основные сферы применения;
3. Remix IDE. Из чего состоит смарт контракт.
Неделя 2
4. Типы данных. bool
5. Типы данных: uint, int
6. Типы данных: string, address
7. Типы данных: mapping
Неделя 3
8. Типы данных: array
9. Типы данных: bytes
10. Типы данных: struct
11. Типы данных: Enum.
12. Области видимости переменных
Неделя 4
13. Events, Errors.
14. Модификаторы
15. Функции. Общее
16. Функции: аргументы и block scope
17. Функции: возвращаемые значения
18. Арифметические операции, циклы и условия
Итог обучения: вы узнаете больше о блокчейн сетях и смарт контрактах, сможете разбираться в них на базовом уровне, поймете разнообразные типы данных языка, особенности их использования, а также базовые аспекты безопасности, которые упускаются на других курсах.
Знания из этого модуля - это необходимая основа для понимания работы языка Solidity в целом, а также более быстрого и легкого воприятия информации из последующих модулей.
Модуль 2
Неделя 5
19. Транзакции: общее.
20. Глобальные переменные msg
21. Низкоуровневые вызовы: call, staticcall
22. Низкоуровневые вызовы: delegatecall
Неделя 6
23. Наследование
24. Интерфейсы
25. Библиотеки
26. Библиотеки openzeppelin и solmate
Неделя 7
27. Работа с памятью: code
28. Работа с памятью: storage
29. Работа с памятью: memory
30. Работа с памятью: calldata
31. Работа с памятью: stack
Неделя 8
32. Опкоды: общее
33. Древо Меркла: общее
34. ERC20: общее
35. ERC721: общее
36. Другие ERC: общее
Итог обучения: вы разберетесь, как происходит транзакция и вызовы в ней, как взаимодействуют контракты друг с другом в профессиональных проектах, а также будете прекрасно понимать, как работает память, одна из самых сложных тем в обучении. Более того, вы получите основные знания о популярных стандартах.
Модуль 3
Неделя 9
37. Стандарт ERC20. Общее
38. ERC20. Разбор кода и EIP
39. ERC20. Особенности и разнообразие
40. ERC20. Проблемы безопасности
41. ERC20 от Open Zeppelin
Неделя 10
42. ERC721. Общее
43. ERC721. Разбор кода и EIP
44. ERC721. Использование в проектах
45. ERC721. Проблемы безопасности
Неделя 11
46. Подписи и стандарты
47. ecrecover и ECDSA
48. Безопасность подписей
49. Популярные паттерны. Общее
Неделя 12
50. Голландский аукцион
51. MultiSig и Timelock
52. Commit/reveal
53. DAO и governance
Итог обучения: вы будете уверенно знать, как работают стандарты ERC20 и ERC721, получите примеры их использования и основы безопасности работы с ними. Также поймете принципы работы подписей в блокчейне и популярные паттерны.
Модуль 4
Неделя 13
54. Подготовка и настройка IDE
55. Терминал, Node js, NPM
56. Начало работы с Git и GitHub
Неделя 14
57. Hardhat. Общее
58. Foundry. Общее
59. Плагины для IDE
Неделя 15
60. Прокси. Общее
61. Transparent proxy
62. UUPS proxy
63. Beacon proxy
Неделя 16
64. Diamond proxy
65. Обновляемые прокси
66. Безопасность прокси
Итог обучения: вы узнаете, как работать с IDE (средой разработки) и популярными фреймворками (дополнениями) для тестирования смарт контрактов. Получите твердые навыки работы с прокси контрактами - другой очень важной и сложной темой в Solidity.
Модуль 5
Неделя 17
67. Оракулы. Общее
68. Оракулы Chainlink
69. Оракулы Uniswap
70. Безопасность работы с оракулами
Неделя 18
71. Введение в DeFi
72. Uniswap. Общее
73. Balancer. Общее
74. Compound. Общее
Неделя 19
75. Aave. Общее
76. Curve. Общее
77. MakerDAO. Общее
Неделя 20
78. Мосты и безопасность. Общее
79. l2 и роллапы. Общее
80. Yul и assembly
81. Побитовые операции
Итоги обучения: вы узнаете, как работают оракулы, начнете разбираться в популярных DeFi проектах и их кодовой базе, а также поймете более продвинутые аспекты разработки.
Планы на 6-7 модули:
🔥9👍1
1. Проведение тестов
2. Подключение Uniswap к своим проектам
3. Использование Chainlink в проектах
4. Работа MEV
5. Нюансы VM и безопасности
6. ERC4626, ERC2612, ERC1967, ERC1155 и другие
7. Деплой контрактов в другие сети
8. Дебаггинг
9. NatSpec и комментарии
10. Решение задач
11. Работа со Slither
12. Проведение аудита
13. Работа с газом
14. Сложные паттерны (file pattern, bitmap)
Есть вероятность, что после старта базового курса, я буду приглашать партнеров для написания материалов для последующих модулей. Например, в своей практике я больше использую Foundry, но Hardhat и ethers.js также желательно знать и уметь читать тесты, поэтому для этого будет приглашен гостевой преподаватель, который сможет донести материал гораздо лучше, чем я. То же самое с MEV, Yul, дебаггером и сложными паттернами разработки.
#курс
2. Подключение Uniswap к своим проектам
3. Использование Chainlink в проектах
4. Работа MEV
5. Нюансы VM и безопасности
6. ERC4626, ERC2612, ERC1967, ERC1155 и другие
7. Деплой контрактов в другие сети
8. Дебаггинг
9. NatSpec и комментарии
10. Решение задач
11. Работа со Slither
12. Проведение аудита
13. Работа с газом
14. Сложные паттерны (file pattern, bitmap)
Есть вероятность, что после старта базового курса, я буду приглашать партнеров для написания материалов для последующих модулей. Например, в своей практике я больше использую Foundry, но Hardhat и ethers.js также желательно знать и уметь читать тесты, поэтому для этого будет приглашен гостевой преподаватель, который сможет донести материал гораздо лучше, чем я. То же самое с MEV, Yul, дебаггером и сложными паттернами разработки.
#курс
❤8🔥5
Курс Solidity разработчик с нуля. Описание и условия
Для кого: подходит для всех, кто ни разу не работал с кодом и не знает, что такое программирование
Курс рассчитан на НЕСПЕШНОЕ прохождение каждой темы и времени на ее освоение, поэтому он длится 5+ месяцев. Сложность повышается с каждым модулем, по мере вашей готовности к новым темам, во избежание путаницы в голове из-за большого объема информации.
Задача: курс нацелен на плавное изучение языка Solidity и освоение новой профессии разработчика смарт контрактов. По окончанию всех модулей вы будете иметь достаточно знаний и сформированные скилы, чтобы претендовать на работу в зарубежных компаниях.
Особенности курса:
- Уроки с акцентами на безопасности кода;
- Тестовые вопросы, собранные из реальных собеседований;
- Написан простым языком, без технических усложнений;
- Основной принцип: регулярность лучше интенсивности;
- Основная цель: сформировать понимание языка Solidity, его характеристик и особенностей;
Количество уроков: 80+ в 5 модулях. После каждого модуля есть перерыв, чтобы повторить и закрепить пройденый материал, или завершить пропущенные задания.
Что входит в урок: Объяснение материала, описание проблем безопасности (если требуется), дополнительные источники для самообучения, практическое задание. Тестовое задание по окончанию модуля. Весь материал будет из открытых источников. Выполнение заданий проверяться не будет.
Проведение: Закрытый Телеграм канал на каждый модуль, плюс общий групповой чат
Формат: Текстовые уроки - посты, скриншоты, записи экрана по необходимости.
Условие: 1-2 часа на каждый урок.
Продолжительность: 1 модуль - 1 месяц. На данный момент всего 5 модулей.
Периодичность: 3-4 урока в неделю. Фокус на теме позволит проще и быстрее освоить материал.
Стоимость: 1 и 2 модуля - 2000 рублей, 3 и 4 - 3000 рублей, 5 - 5000 рублей. Оплата в начале каждого модуля. Можно остановиться в любой момент.
Оплата: варианты оплаты будут объявлены позже. Есть возможность оплаты криптой.
Вход на модуль: зайти в новый модуль можно не позднее первой недели. Если вы опоздаете, то пропустите его.
Открытие курса и набор группы: после 26 июня.
Программа курса.
Ориентировочный старт: 3 июля
#курс
Для кого: подходит для всех, кто ни разу не работал с кодом и не знает, что такое программирование
Курс рассчитан на НЕСПЕШНОЕ прохождение каждой темы и времени на ее освоение, поэтому он длится 5+ месяцев. Сложность повышается с каждым модулем, по мере вашей готовности к новым темам, во избежание путаницы в голове из-за большого объема информации.
Задача: курс нацелен на плавное изучение языка Solidity и освоение новой профессии разработчика смарт контрактов. По окончанию всех модулей вы будете иметь достаточно знаний и сформированные скилы, чтобы претендовать на работу в зарубежных компаниях.
Особенности курса:
- Уроки с акцентами на безопасности кода;
- Тестовые вопросы, собранные из реальных собеседований;
- Написан простым языком, без технических усложнений;
- Основной принцип: регулярность лучше интенсивности;
- Основная цель: сформировать понимание языка Solidity, его характеристик и особенностей;
Количество уроков: 80+ в 5 модулях. После каждого модуля есть перерыв, чтобы повторить и закрепить пройденый материал, или завершить пропущенные задания.
Что входит в урок: Объяснение материала, описание проблем безопасности (если требуется), дополнительные источники для самообучения, практическое задание. Тестовое задание по окончанию модуля. Весь материал будет из открытых источников. Выполнение заданий проверяться не будет.
Проведение: Закрытый Телеграм канал на каждый модуль, плюс общий групповой чат
Формат: Текстовые уроки - посты, скриншоты, записи экрана по необходимости.
Условие: 1-2 часа на каждый урок.
Продолжительность: 1 модуль - 1 месяц. На данный момент всего 5 модулей.
Периодичность: 3-4 урока в неделю. Фокус на теме позволит проще и быстрее освоить материал.
Стоимость: 1 и 2 модуля - 2000 рублей, 3 и 4 - 3000 рублей, 5 - 5000 рублей. Оплата в начале каждого модуля. Можно остановиться в любой момент.
Оплата: варианты оплаты будут объявлены позже. Есть возможность оплаты криптой.
Вход на модуль: зайти в новый модуль можно не позднее первой недели. Если вы опоздаете, то пропустите его.
Открытие курса и набор группы: после 26 июня.
Программа курса.
Ориентировочный старт: 3 июля
#курс
👍30
Простота и легкость. Курс для разработчиков
Я уже не раз писал на канале и в чате, что современные курсы и гайды создаются разработчиками для разработчиков. В том смысле, что вы уже должны понимать базис программирования, чтобы схватывать информацию и продвигаться в обучении. Однако, не у всех в школе было программирование.
Когда, около 10 лет назад, я стал учить php, свой первый язык, даже банальное слово "переменная" было не так уж и понятно, не говоря о других, более серьезных определениях.
И даже с хорошим опытом работы фулстек программистом, с хорошими знаниями javasript\typenoscript, Solidity порой вызывал некоторое недоумение.
Я прекрасно понимаю людей, которые хотят освоить новую профессию с нуля, но "стопоряться" на некоторых элементах и забрасывают все. Порой ты просто не понимаешь, у кого можно спросить.
И когда за месяц - два тебе предлагают выучить Solidity, да еще с элементами Javanoscript... Каша в голове просто обеспечена!
Я писал программу именно для тех, кто никогда ранее не сталкивался с программированием. Тут нет js в первых модулях, тут нет даже IDE до 4 модуля, так как нужно будет понять работу с терминалом, node.js и npm до этого.
Каждый урок - это маленькая деталь, которая расписана понятным языком, и простое упражнение для закрепления понимания.
Одна из целей у меня была избежать путаницы в голове из-за большого количества информации. Вы научитесь работать с языком постепенно. Легко и с пониманием "зачем вы это делаете".
Если вы думали начать изучение сами, то попробуйте хотя бы месяц на курсе в группе. Вы всегда сможете остановиться в любой момент. А если вам зайдет такой формат, то продолжить учиться и дальше.
Начинаем уже скоро!
#курс
Я уже не раз писал на канале и в чате, что современные курсы и гайды создаются разработчиками для разработчиков. В том смысле, что вы уже должны понимать базис программирования, чтобы схватывать информацию и продвигаться в обучении. Однако, не у всех в школе было программирование.
Когда, около 10 лет назад, я стал учить php, свой первый язык, даже банальное слово "переменная" было не так уж и понятно, не говоря о других, более серьезных определениях.
И даже с хорошим опытом работы фулстек программистом, с хорошими знаниями javasript\typenoscript, Solidity порой вызывал некоторое недоумение.
Я прекрасно понимаю людей, которые хотят освоить новую профессию с нуля, но "стопоряться" на некоторых элементах и забрасывают все. Порой ты просто не понимаешь, у кого можно спросить.
И когда за месяц - два тебе предлагают выучить Solidity, да еще с элементами Javanoscript... Каша в голове просто обеспечена!
Я писал программу именно для тех, кто никогда ранее не сталкивался с программированием. Тут нет js в первых модулях, тут нет даже IDE до 4 модуля, так как нужно будет понять работу с терминалом, node.js и npm до этого.
Каждый урок - это маленькая деталь, которая расписана понятным языком, и простое упражнение для закрепления понимания.
Одна из целей у меня была избежать путаницы в голове из-за большого количества информации. Вы научитесь работать с языком постепенно. Легко и с пониманием "зачем вы это делаете".
Если вы думали начать изучение сами, то попробуйте хотя бы месяц на курсе в группе. Вы всегда сможете остановиться в любой момент. А если вам зайдет такой формат, то продолжить учиться и дальше.
Начинаем уже скоро!
#курс
👍31❤1🔥1
Небольшое объявление
Понимаю, что некоторых участников на канале куча постов про курс может напрягать, так как вы пришли сюда за "мясом".
Я еще недельку порассказываю про него, может получится смотивировать других участников попробовать свои силы в Solidity.
А после запуска, вернемся к обычному режиму. Я как раз успею собрать кучу крутого материала к тому моменту.
Думал, что курс пройдет в более легком формате, но уже чувствую, что вкладываю туда много сил, и на переработку сложного материала для постов, подготовку к курсу и участие в конкурсном аудите меня немного не хватает.
#offtop
Понимаю, что некоторых участников на канале куча постов про курс может напрягать, так как вы пришли сюда за "мясом".
Я еще недельку порассказываю про него, может получится смотивировать других участников попробовать свои силы в Solidity.
А после запуска, вернемся к обычному режиму. Я как раз успею собрать кучу крутого материала к тому моменту.
Думал, что курс пройдет в более легком формате, но уже чувствую, что вкладываю туда много сил, и на переработку сложного материала для постов, подготовку к курсу и участие в конкурсном аудите меня немного не хватает.
#offtop
❤22👍3
5+ месяцев - это долго? Курс для разработчиков
Научиться писать смарт контракт и создавать свой токен \ NFT можно и за неделю, так зачем же учиться так долго?
Здесь опять же вопрос в том, а какие цели вы преследуете? Написать NFT и закинуть ее на маркетплейс или же создать свой полноценный проект в DeFi и получить высокооплачиваемую работу? Или, например, понимать как там все устроено и научиться обходить скамные проекты?
Да, практически каждый язык программирования можно выучить за неделю. Вот тип данных, вот переменная, вот массив и цикл. При этом научиться работать с ним, узнать обо всех тонкостях и писать красивый код - вот на что уходит все время.
Смотрите, написать контракт токена - это одно, сделать его безопасным - это уже другое, а внедрить его в архитектуру своего проекта - совсем третье!
Кстати, именно понимания "а для чего это?" мне порой сильно не хватало в своем обучении. Вот ты видишь, например, что в Solidity есть такой тип данных как uint8 и uint256, а в чем разница и в какой момент они используются - не понятно.
Посмотрите программу этого курса и сравните ее с любым другим гайдом или программой в онлайн университете. То, что дается там в одном занятии, тут может быть разложено на неделю или даже модуль!
Здесь важно научиться оперировать деталями языка, чтобы не напортачить со своим проектом.
Время обучение окупается твердыми знаниями.
Программа курса. Описание курса.
Старт уже скоро!
#курс
Научиться писать смарт контракт и создавать свой токен \ NFT можно и за неделю, так зачем же учиться так долго?
Здесь опять же вопрос в том, а какие цели вы преследуете? Написать NFT и закинуть ее на маркетплейс или же создать свой полноценный проект в DeFi и получить высокооплачиваемую работу? Или, например, понимать как там все устроено и научиться обходить скамные проекты?
Да, практически каждый язык программирования можно выучить за неделю. Вот тип данных, вот переменная, вот массив и цикл. При этом научиться работать с ним, узнать обо всех тонкостях и писать красивый код - вот на что уходит все время.
Смотрите, написать контракт токена - это одно, сделать его безопасным - это уже другое, а внедрить его в архитектуру своего проекта - совсем третье!
Кстати, именно понимания "а для чего это?" мне порой сильно не хватало в своем обучении. Вот ты видишь, например, что в Solidity есть такой тип данных как uint8 и uint256, а в чем разница и в какой момент они используются - не понятно.
Посмотрите программу этого курса и сравните ее с любым другим гайдом или программой в онлайн университете. То, что дается там в одном занятии, тут может быть разложено на неделю или даже модуль!
Здесь важно научиться оперировать деталями языка, чтобы не напортачить со своим проектом.
Время обучение окупается твердыми знаниями.
Программа курса. Описание курса.
Старт уже скоро!
#курс
❤14👍6
Нет видео уроков? Курс для разработчиков
Да, этот курс сделан в формате текстовых уроков, куда по необходимости будут включаться скриншоты и записи экрана. И этому есть пара причин.
Во-первых, я никогда ранее не делал видео уроки и не сильно разбираюсь в программах для этого, в том числе для монтажа. Можно было бы посоветоваться с сообществом, попробовать разные варианты, но это сильно бы увеличило время запуска курса. И начали бы мы только осенью.
Во-вторых, профессия разработчика предполагает, что вы будете очень много читать. Например, в проекте вам нужно будет подключить сторонний сервис, и первым делом вы будете искать официальную документацию, чтобы разобраться, как это сделать. а она порой бывает не самая понятная...
К тому же, работа с самим кодом подразумевает построчное, внимательное чтение.
С текстовым форматом уроков вам будет проще в дальнейшем в работе. Вы привыкните читать объяснение и следовать инструкциям в нем.
Да, и искать в нужном уроке нюансы кода будет намного проще и быстрее, чем перематывать видео на нужный момент.
Надеюсь, вы оцените такой подход в скором будущем!
Программа курса. Описание курса.
Старт уже скоро!
#курс
Да, этот курс сделан в формате текстовых уроков, куда по необходимости будут включаться скриншоты и записи экрана. И этому есть пара причин.
Во-первых, я никогда ранее не делал видео уроки и не сильно разбираюсь в программах для этого, в том числе для монтажа. Можно было бы посоветоваться с сообществом, попробовать разные варианты, но это сильно бы увеличило время запуска курса. И начали бы мы только осенью.
Во-вторых, профессия разработчика предполагает, что вы будете очень много читать. Например, в проекте вам нужно будет подключить сторонний сервис, и первым делом вы будете искать официальную документацию, чтобы разобраться, как это сделать. а она порой бывает не самая понятная...
К тому же, работа с самим кодом подразумевает построчное, внимательное чтение.
С текстовым форматом уроков вам будет проще в дальнейшем в работе. Вы привыкните читать объяснение и следовать инструкциям в нем.
Да, и искать в нужном уроке нюансы кода будет намного проще и быстрее, чем перематывать видео на нужный момент.
Надеюсь, вы оцените такой подход в скором будущем!
Программа курса. Описание курса.
Старт уже скоро!
#курс
👍25🔥8
Кто идет на 1 модуль курса?
Ниже опрос, прошу ответить всех, кто уже 100% идет на курс. Хочу немного понять, какая нагрузка будет у меня на следующие пять месяцев. Возможно, потребуется помощь куратора для ответов на вопросы.
#курс
Ниже опрос, прошу ответить всех, кто уже 100% идет на курс. Хочу немного понять, какая нагрузка будет у меня на следующие пять месяцев. Возможно, потребуется помощь куратора для ответов на вопросы.
#курс
👍7