Semolina Code Solidity

Description
Канал про кодинг и крипту
Advertising
We recommend to visit

Официальный новостной канал криптобиржи OKX | www.okx.com на русском языке.

💬 Комьюнити: t.me/okx_russian

👨‍💻 Поддержка: [email protected]

АДМИН: @DaniiOKX
Маркетинг: @CoffeeTrends

Last updated 4 days, 8 hours ago

Здесь простым языком про TON, DFC и крипту.

Принимаем автоматически.
Ссылка для друзей: https://t.me/+-EOfWx2pRKhmNGE6
Связь: @deftalk_bot

Last updated 1 month ago

#1 канал о блокчейне, криптовалютах и децентрализованных финансах.

🔥 Реклама — @DCTeam

Last updated 8 hours ago

2 years, 1 month ago

Вижу тут новые лица и всех рад приветствовать)
Изучение солидити на некоторое время поставлено на паузу так как сейчас появилось несколько проектов проектов, которые требуют моего активного участия чуть ли не 24/7
1 из таких проектов - бесплатные курсы по python (если вы начинающий разработчик, то начинать с солидити - не самая лучшая идея)
А вот в том бесплатном курсе по python мы изучаем не только синтаксис python, но и программирование в целом (на примере языка python) с нуля до парсинга за месяцВ том чате есть теория, практика, разбор практики, а так же я там отвечаю на все вопросы подряд (так что не стесняйтесь задавать ЛЮБЫЕ вопросы)
Welcome!!

2 years, 2 months ago

Семнадцатый урок (Решение задач 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 (проверка газа)

2 years, 2 months ago

Шестнадцатый урок (Безопасность: Reentrancy, DoS)
Полезный линк из урока:
openzeppelin

Код контракта reentrancy
Код тестов для контракта reentrancy
Код контракта dos
Код тестов для контракта dos

2 years, 2 months ago

Семнадцатый урок (Низкоуровненые вызовы и безопасность)
Сразу скажу, что 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 в этом случае)

2 years, 2 months ago

Оказывается, если текст в телеге преобразовать в моноширинный, он станет синим ?

2 years, 2 months ago

Пятнадцатый урок (Фронт-энд на 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 с комментариями

2 years, 2 months ago

так же для понимания того, что происходит в этом видосе, нужно хотя бы немного почитать документации:
MetaMask
Ethers JS

2 years, 2 months ago

Темы, которые я освежил по js:
Оператор нулевого слияния
Function Expression
Стрелочные функции, основы
Особенности JavaScript
Автоматическое тестирование c использованием фреймворка Mocha
Объекты
Копирование объектов и ссылки
Сборка мусора
Методы объекта, "this"
Конструкторы, создание объектов через "new"
Опциональная цепочка '?.'
Преобразование объектов в примитивы
Методы примитивов
Методы массивов
Деструктурирующее присваивание
Формат JSON, метод toJSON
Остаточные параметры и оператор расширения
Замыкания
Глобальный объект
Планирование: setTimeout и setInterval
Привязка контекста к функции
Повторяем стрелочные функции
Введение: колбэки
Промисы
Цепочка промисов
Async/await
Модули, введение
Экспорт и импорт
Разницаnpm/npxNode JS - Быстрый Курс за 1 час
Полезные команды из видоса:
Запустить программу:
node filepath.js

Инициализация проекта (создание файла package.json):
npm init

Установка пакетов (в проекте создастся папка node_modules и название пакета добавится файл packege.json в поле Dependencies) :
npm install packagename
npm i packagename

Установка пакетов для разработки (тоже загрузит файл, но в файле packege.json будет находиться в поле devDependencies):
npm i packagename -D

Папку node_modules обычно никому не скидывают. Все зависимости устанавливаются автоматически с помощью команды:
npm i

Next JS быстрый курс SSR на React JS с нуля до деплоя
Полезные команды из видоса:
Создание Next приложения:
npx create-next-app

Создание проекта с нуля:
1) Инициализируем проект:
npm init -y
2) Устанавливаем зависимости:
npm i next react react-dom
3) В packege.json можем добавить быстрые команды на вкладке scripts:
"dev": "next dev"
4) создаем папку pages в корне проекта (тут будут все страницы приложения) и обязательно файл pages/index.js
rsc - сниппет для развертывания компонента в index.js
5) Запуск приложения:
npm run dev

Если создать новый файл в pages, то доступ к этому файлу будет осуществляться по пути:
http://domain:port/filename

Чтобы переход между страницами был без обновления браузера, используем компонент
import Link from "next/Link";
...

learn.javascript.ru

Оператор нулевого слияния (??)

Новая возможность

Темы, которые я освежил по js:
2 years, 2 months ago

Четырнадцатый урок (Фронт-энд на 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 буду скидывать сюда

We recommend to visit

Официальный новостной канал криптобиржи OKX | www.okx.com на русском языке.

💬 Комьюнити: t.me/okx_russian

👨‍💻 Поддержка: [email protected]

АДМИН: @DaniiOKX
Маркетинг: @CoffeeTrends

Last updated 4 days, 8 hours ago

Здесь простым языком про TON, DFC и крипту.

Принимаем автоматически.
Ссылка для друзей: https://t.me/+-EOfWx2pRKhmNGE6
Связь: @deftalk_bot

Last updated 1 month ago

#1 канал о блокчейне, криптовалютах и децентрализованных финансах.

🔥 Реклама — @DCTeam

Last updated 8 hours ago