Официальный новостной канал криптобиржи OKX | www.okx.com на русском языке.
💬 Комьюнити: t.me/okx_russian
👨💻 Поддержка: [email protected]
АДМИН: @DaniiOKX
Маркетинг: @CoffeeTrends
Last updated 2 weeks, 4 days ago
Here in simple language about TON and crypto
Founder: @metasalience
contact : @deftalk_bot
Last updated 3 months, 2 weeks ago
Канал о TON и все что с ним связано:
1. Аналитика
2. Инсайды
3. Авторское мнение
Ведро для спама: @ton_telegrambot
Бот с курсами криптовалют: @TonometerBot
Чат: @chaTON_ru
Админ: @filimono
Last updated 2 weeks, 6 days ago
Как я уже говорил, я сейчас немного отошел от солидити так как появились проекты, требующие моей 100% отдачи
Сейчас наткнулся на одну очень интересную тему, которая скорее всего сильно стрельнет в ближайшие пару лет
Тема эта - gRPC (Remote Procedure Calls) - альтернатива REST API
Почему это стрельнет и почему многие сервисы пересядут именно на gRPC?
1) Потому что gRPC использует для передачи данных бинарный формат Protobuf (следовательно можно уменьшить размер сообщения и ускорить передачу данных в 7-10 раз)
2) gRPC использует протокол HTTP 2 вместо HTTP 1.1 (следовательно стримить потоки данных значительно легче)
3) Есть автоматическая генерация кода для популярных ЯПов из простого файла .proto (что позволяет быстро и просто развернуть сервер и клиента)
4) Многие компании, предоставляющие апи, переходят на микросервисную архитектуру, а используя gRPC можно очень легко разрабатывать эти микросервисы с хорошим уровнем абстракции (хоть на разных ЯПах их писать можно)
В любом случае все программисты будут когда-то взаимодействовать с апи, но так как скоро многие сервисы перейдут на gRPC (google, netflix уже перешли, из российских компаний - тинькофф предоставляет OpenAPI через gRPC и я уверен, что кто-то еще есть) поэтому с этой темой нужно хотя бы ознакомиться
Вот есть видео для супер поверхностного понимания
А вот официальная документация от гугл с описанием языка proto3 и с туториалами на основных языках
Вижу тут новые лица и всех рад приветствовать)
Изучение солидити на некоторое время поставлено на паузу так как сейчас появилось несколько проектов проектов, которые требуют моего активного участия чуть ли не 24/7
1 из таких проектов - бесплатные курсы по python (если вы начинающий разработчик, то начинать с солидити - не самая лучшая идея)
А вот в том бесплатном курсе по python мы изучаем не только синтаксис python, но и программирование в целом (на примере языка python) с нуля до парсинга за месяцВ том чате есть теория, практика, разбор практики, а так же я там отвечаю на все вопросы подряд (так что не стесняйтесь задавать ЛЮБЫЕ вопросы)
Welcome!!
Семнадцатый урок (Решение задач Ethernaut)
Урок посвящен практике
Так что решаем её тут
Несколько дней точно уйдёт на это
Во время решения задач пришлось подтянуть эти темы:
1) tx.origin
2) self.destruct()3) Работа со слотами ethers.provider.getStorageAt(...)
4) Байт код (посмотреть длину байт кода можно с помощью
msg.sender.code.length
Если в контракте есть переменные и функции, то длина будет > 0
Но если все действия делаются в конструкторе, то длина байт кода будет = 0
5) Битовые операции (&, |, ^, ~)
6) Фунция abi.encodePacked() для преобразования address->bytes
7) Оказывается, что преобразование типов
uint64->uint32 работает не самым очевидным способом (uint64 переводятся в 16-ую систему счисления и для того, чтобы перевести в uint32, просто обрезается половина битов СЛЕВА и то, что получилось, преобразуется в 10-ую систему счисления. Но когда преобразуем байты bytes2->bytes1 происходит наоборот: обрезаются байты СПРАВА)
8) Следующий момент по поводу преобразования байтов (нашел тут в одном из ответов):
"Thereby if you have something bytes32 and want it to be uint128, you first have to explicitly convert it to bytes16, and therafter can convert it to uint128, via regular solidity. Of course, you'll wish to debug/test to see which parts of that bytes32 may get truncated yourself before proceeding with this, as there's converse cases where it may make more sense to convert it to uint256 first and then cut it down to uint128."
Если коротко: то когда мы хотим преобразовать bytes->uint мы должны это сделать так, чтобы размерность uint была в 8 раз больше или в 8 раз меньше размерности байт
9) All about Bytes
Решение задач, которые не были разобраны на уроке:
Elevator
Gatekeeper One до этого я тут писал, что нихрена не понял. Но в итоге с байтами разобрался (в пунктах 5-9 сверху можно найти всю информацию). В итоге получился вот такой код с решением (решение, которое по ссылке тут - не работает). Ну и еще я не понял пока что как пройти gateTwo (проверка газа)
Семнадцатый урок (Низкоуровненые вызовы и безопасность)
Сразу скажу, что 16 урок я не пропустил
Я его посмотрел и он будет постом ниже. Просто я считаю, что лучше сначала пройти 17 урок и только потом 16 (так как в 16 уроке есть низкоуровненые вызовы и для их понимания нужно обязательно посмотреть урок 17)
На этот урок я потратил больше всего времени (но зато разобрался) так как в видео была небольшая неточность (сообщение с описанием проблемы оставил в чате автора)
Линки, которые помогли разобраться:
1) Delegatecall | Solidity 0.8
2) Unsafe Delegatecall (part 1) | Hack Solidity (0.6)3) Unsafe Delegatecall (part 2) | Hack Solidity (0.6)
Плейлист, который в будущем точно надо будет чекнуть: Hack Solidity (0.6 - 0.7)
Код работы call
Код работы delegatecall
Код с примером небезопасного использования delegatecall (в начале файла написал как работает delegatecall в этом случае)
Оказывается, если текст в телеге преобразовать в моноширинный, он станет синим ?
Пятнадцатый урок (Фронт-энд на Next.js, часть 2)
Устанавливаем set-interval-async в наш проект next.js
Документация по методу componentWillUnmount
Этот урок превратился в настоящую головную боль из-за того, что в ММ ID цепочки был указал 31337 (так по умолчанию hardhat работает)
Я постоянно вылетал на ошибку «cannot estimate gas» когда пытался что-то купить с аукциона
Как лечить:
заходим в файл hardhat.config.js
И туда добавляем настройку:
...
networks: {
hardhat: {
chainId: 1337
}
},
...
Ещё столкнулся с проблемой, что после покупки, на странице постоянно висело сообщение "auction stopped!"
То есть hardhat не очищался
npx hardhat clean не помогал
Вылечилось как-то само после того, как я редактировал контракт (надо будет еще изучить этот вопрос)
Далее я столкнулся с проблемой "Nonce too high. Expected nonce to be 0 but got 2. Note that transactions can't be queued when automining."
Эта проблема решилась с помощью ресета аккаунта (про это я писал тут)
Следующая проблема была: "Transaction ran out of gas"
Ну тут понятно - в мм ставим побольше газа и погнали
Ссылка из урока про обработку старых событий
Гит Ильи (хозяин ютуб канала, по которому я обучаюсь) с кодом для каждого урока
Код компонента TransactionErrorMessage
Код компонента WaitingForTransactionMessage
Код index.js с комментариями
Четырнадцатый урок (Фронт-энд на NextJS, часть 1)
Создаём next приложение с помощью команды
npx create-next-app
Код контракта
Код скрипта для деплоя
Разворачиваем hardhat
npx hardhat node
Деплоим контракт в hardhat:
npx hardhat run scripts/deploy.js --network localhost
Не забываем добавить ethers в зависимости проекта next (файл package.json)
"ethers": "^5.6.4"
Далее создаем внутри проекта next директорию components и внутри неё файл ConnectWallet.js и NetworkErrorMessage.js
Код ConnectWallet.js
Код NetworkErrorMessage.js
В директории pages пишем файл index.js
Код этого файла
Когда всё готово, в директории next запускаем команду:
npm run dev
Если уже что-то делали в мм с аккаунтом в локальной сети, то переходим в мм -> settings -> advanced -> reset account
Чувствую, что придется подтянуть js (опять же по учебнику)
Ссылки на разделы, которые перечитываю по js буду скидывать сюда
Официальный новостной канал криптобиржи OKX | www.okx.com на русском языке.
💬 Комьюнити: t.me/okx_russian
👨💻 Поддержка: [email protected]
АДМИН: @DaniiOKX
Маркетинг: @CoffeeTrends
Last updated 2 weeks, 4 days ago
Here in simple language about TON and crypto
Founder: @metasalience
contact : @deftalk_bot
Last updated 3 months, 2 weeks ago
Канал о TON и все что с ним связано:
1. Аналитика
2. Инсайды
3. Авторское мнение
Ведро для спама: @ton_telegrambot
Бот с курсами криптовалют: @TonometerBot
Чат: @chaTON_ru
Админ: @filimono
Last updated 2 weeks, 6 days ago