Semolina Code Solidity – Telegram
Semolina Code Solidity
549 subscribers
27 links
Канал про кодинг и крипту
Download Telegram
Channel created
Первое сообщение в канал)
• Я кодер
• В программировании около 5-ти лет
• Пишу на C, C++, Python, JS, PHP, SQL, BASH ну и остальное по мелочи
• Учился в академии ФСБ на специалиста по защите информации, но ушел через 2 года так как служба не совпадала с планами на жизнь
• Учился в "школе 21" два года
• Преподавал несколько лет языки программирования
• Позже начал писать кучу софта под фондовую биржу - различные сканеры, расширения итд

С помощью этого софта заработал деньги на несколько лет вперед
Но СПБ биржа не работает и вот уже пол года я смотрю в сторону крипты и наконец-то нашел то, чем мне было бы интересно заниматься
А именно - работа с DEX, смарт контрактами, solidity, абуз

Канал создаю чтобы писать отчеты для себя, но кому-то может быть это тоже будет полезно
Первое, с чем я буду разбираться - solidity + смарт контракты

С этого дня буду уделять минимум 2 часа изучению
Всю информацию, по которой обучаюсь сам, буду скидывать сюда
👍6
Я начинаю не с нуля
Вот гемная инфа, которую было бы неплохо знать, чтобы двигаться вместе со мной

1) Язык python
Мой первый язык программирования был C++
Я полностью перешел с C++ на python примерно за 2 недели с помощью этой книги (если не знаете других ЯПов, то будет тяжеловато её читать)

2) Язык JS
Я начал изучать этот язык, когда проходил курс по Django
В курсе был кусочек кода на JS и описание кода в стиле "просто запомните этот код. Он работает вот так..."
Мне нравится разбираться со всем фундаментально и после этих слов я потратил ~пол года на изучение JS (я изучал неторопливо и бОльшая часть того, что я знаю по JS по сути пока не пригодилась)

3) Вводная инфа по смарт контрактам и работе блокчейна (автору канала огромный респект и благодарность за такую инфу)
👍3
Я буду начинать изучения solidity с ютуба (потому что мне так удобно. До официальной документации тоже обязательно доберемся):

Лично я смотрю видос и записываю в тетрадь всю основную информацию оттуда
Для меня это самый продуктивный способ изучения нового языка
👍3
Первый урок (Введение, Remix IDE, аккаунты, газ, первый контракт)

Код с первого урока с комментариями:

Полезные ссылки из первого урока:
remix ide онлайн
скачать remix ide
язык solidity
документация ethereum
цены на газ
👍3🔥1
Второй урок (Типы данных bool, uint, int)

Код со второго урока с комментариями (комментарии супер краткие. Если солидити - ваш первый язык программировния, то лучше смотрите видео самостоятельно)
👍1🔥1
Третий урок (Типы данных string, address, mapping)

Не уверен на 100%, но вроде нашёл баг Remix IDE
если в функцию, которая принимает строку, передать параметр типа:
"parametr""
то IDE умрет

код с комментариями:

Кусочек документации по типам данных
👍2🔥1
Четвертый урок (Типы данных array, bytes, enum, struct)
Код с комментариями
👍1
Пятый урок (Тестирование, Hardhat, Waffle, Ethers, Mocha, Chai)

Установочник NodeJS

Где-то может потребоваться установка с sudo

Node-gyp
Я устанавливал на мак с помощью
npm install --location=global node-gyp

Hardhat
В директории создаем новый проект:
npm init -y

Устанавливаем hardhat (quick start):
npm install --save-dev hardhat

Заходим в мастер:
npx hardhat
Create a JavaScript project

Устанавливаем нужные библиотеки
npm install --save-dev "hardhat@^2.10.0" "@nomicfoundation/hardhat-toolbox@^1.0.1"

Будем использовать библиотеки (установятся сами как hardhat-toolbox):
EthersJS (для взаимодействия со смарт контрактами)
MochaJS (для написания тестов)
ChaiJS (для написания ожиданий)
WaffleJS (Надстройка над MochaJS для тестирования смарт контрактов)

Буду работать через VS Code + консоль
В VS Code можно установить расширение "Solidity"

Компиляция проектов:
npx hardhat compile

Удаление скомпилированных контрактов:
npx hardhat clean

Для тех, кто как и я не работали с nodeJS и не знаю как работают импорты/експорты

Запустить все тесты:
npx hardhat test

Проверки через to для эфира находятся в библиотеке waffle

Код контракта
Код тестов
👍1🔥1
Шестой урок (Функции, транзакции, pure, view, payable, fallback)

Запустить hardhad
npx hardhat node

Плагин я не устанавливал. У меня hardhat по-умолчанию стоял в ремиксе

Код контракта
👍1
Седьмой урок (События, модификаторы, require/revert и тесты)

Мой код на гите - код с супер развернутыми комментариями
По сути даже урок на ютубе смотреть не надо чтобы понять что к чему

Код контракта
Код тестов
Судя по описанию - норм гайд
После окончания своего обучения по ютубу обязательно прочитаю этот
Если не понравится, удалю с канала
Forwarded from Max Wayld Dev (Max Wayld マキシ)
Статья с роадмапом по изучению Solidity за 30 дней.

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

Как тебе пригодится этот навык? Вариантов огромное множество: от реального вклада в эту сферу и разработки любых интересующих тебя продуктов, до выноса тех же NFT-сейлов.

Welcome к разбору:

>
https://teletype.in/@maxycrypto/solidity_30days

Я уже давно считаю что кодеры это самые важные люди в нашей сфере и толковых девов всегда будет недостаточно, поэтому пилить такие гайды на бесплатной основе - моя отдушина. Буду рад любому фидбеку с твоей стороны!

P.S: также, к концу этой недели выйдет моя ретроспектива по всем материалам для Solidity.
Восьмой урок (Древо Меркла, хэши, encode, циклы)

немного оптимизировал код, который заполняет хеши с индекса 4 (для начальной коллекции в 4 элемента)

То, что было:
uint offset = 0;
while (count > 0) {
for (uint i = 0; i < count - 1; i += 2) {
hashes.push(keccak256(
abi.encodePacked(
hashes[offset + i], hashes[offset
+ i + 1]
)
));
}
offset += count;
count /= 2;
}


То, что стало:
for (uint i = 0; i <= count + 1; i += 2) {
hashes.push(keccak256(
abi.encodePacked(
hashes[i], hashes[i + 1]
)
));
}

Убрал 1 цикл, убрал создание дополнительной переменной
Возможно для понимания проще код с урока, но мой будет работать быстрее и эффективней

Так же из функции verify убрал параметр index так как он там никак функционально не задействован

Мой код с комментариями
Гемная инфа на будущее
Тоже надо будет со всем этим ознокомиться после ютуба
Forwarded from Ortomich
Ретроспектива!

———————

EVM для задротов, часть 1 - https://teletype.in/@ortomich/EVM_Advanced_1

EVM для задротов, часть 2 - https://teletype.in/@ortomich/EVM_Advanced_2

EVM для задротов, часть 3 - https://teletype.in/@ortomich/EVM_Advanced_3

EVM для задротов, часть 4 - https://teletype.in/@ortomich/EVM_Advanced_4

EVM для задротов, часть 5 - https://teletype.in/@ortomich/EVM_Advanced_5

EVM для задротов, часть 6 - https://teletype.in/@ortomich/EVM_Advanced_6

———————

Погружение в Юнисвап - https://teletype.in/@ortomich/Uniswap_V3_deepdive_1

SeaPort - https://teletype.in/@ortomich/SeaPort_fast

Новый вид скама - https://teletype.in/@ortomich/new_scam

———————

MEV 1.1 - https://teletype.in/@ortomich/MEV_1.1

MEV 1.2 - https://teletype.in/@ortomich/MEV_1.2

Флэшботы: короли мемпула - https://teletype.in/@ortomich/flashbots_kings_of_the_mempool

———————

Легкий клиент - https://teletype.in/@ortomich/light_client_eth

Оммер блоки - https://teletype.in/@ortomich/Ommer_Block

Дерево меркла - https://teletype.in/@ortomich/Merkle_Tree

Сумбурный конспект по эфиру - https://teletype.in/@ortomich/ethereum_start

Memory / Calldata / Storage - https://teletype.in/@ortomich/memory_calldata_storage

Что такое веб3 - https://teletype.in/@ortomich/simple_web3

NFT мини техничка - https://teletype.in/@ortomich/NFT_mini_advanced

Ораклы - https://teletype.in/@ortomich/oracles_junior

Войс «Развитие в крипто дев» - https://news.1rj.ru/str/ortomich_crypto/402

Переминт - https://teletype.in/@ortomich/remint

Unix - https://teletype.in/@ortomich/unix_fast

Адреса ethereum - https://teletype.in/@ortomich/address_eth

———————

Мой гитхаб - https://github.com/ortomich
Девятый урок (Оптимизация смарт-контрактов и газ)
Мой код с комментариями
Десятый урок (Стрим: практика "Голандский аукцион")

Для урока потребуется установка:
npm install --save-dev solidity-coverage

Так же добавить в файл hardhat.config.js:
require("solidity-coverage");

После этого сможем использовать команду для измерения покрытия тестами
npx hardhat coverage

Далее можно в файл package.json в объект noscripts добавить строку:
"test": "npx hardhat coverage"
Это позволит писать:
npm test
вместо:
npx hardhat coverage

Так же в директории проекта можно найти папку coverage->index.html и смотреть покрытие тестами в браузерной версии (можно прям по строчкам проверять какая строчка сколько раз была вызвана)

Мой код контракта с комментариями
Мой код тестов
У меня не 100% покрытие тестами так как в контракте есть пара функций, которых нет в уроке
Можно использовать эту возможность как практику)
1
Одиннадцатый урок (Наследование, конструкторы, super, override, virtual)

Сложный урок для тех, кто не сталкивался с ООП, абстрактными классами итд
Мне помогло, то что я в своё время учил C++ и понимаю как это работает там
С++, кстати, был моим первым языком программирования
Я так же учил по ютубу на канале SimpleCode
Всем советую)
Если пройдете 155 уроков +-, вы не станете гуру конечно, но будете понимать что к чему в любом языке программирования

Opensource проект openzeppelin-contracts с готовыми базовыми контрактами от которых можно наследоваться

Мой код с комментариями
Двенадцатый урок (Интерфейсы, библиотеки, тесты)

Практика к тому, что уже изучено:
Сделать голосовалку, к примеру. У кого есть токены - тот может голосовать. Можно сделать ещё сложнее и совместить голосовалку с Timelock (видео есть про него на канале). То есть кто-то предлагает транзакцию и ставит в очередь, потом идёт голосование (с токенами), а через некоторое время, если нужное кол-во голосов набрано, то транзакцию можно выполнить

Код интерфейса
Код контракта Lesson, который реализует интерфейс
Код контракта Demo, который вызывает функции из сторонних контрактов
Код тестов контракта Demo
Код библиотек
Код с использованием библиотек
Код тестов использования библиотек
Тринадцатый урок (Стрим: реализация ERC20)

Практика к контракту: написать функцию, позволяющая владельцу списать вырученные средства за продажу токенов + тесты к ней

Запускаем hardhat
npx hardhat node

Команда для деплоя контракта в хардхет:
npx hardhat run path_to_deploy.js

добавляем сеть hardhat в метамаск:
Имя сети: hardhar
Новый URL-адрес RPC: http://127.0.0.1:8545/
ID цепочки: 1337
Символ валюты: ETH

Импортируем токены по адресу (берем из консоли после деплоя контракта)

Код интерфейса
Код контракта
Код тестов
Код деплоя