Первое сообщение в канал)
• Я кодер
• В программировании около 5-ти лет
• Пишу на C, C++, Python, JS, PHP, SQL, BASH ну и остальное по мелочи
• Учился в академии ФСБ на специалиста по защите информации, но ушел через 2 года так как служба не совпадала с планами на жизнь
• Учился в "школе 21" два года
• Преподавал несколько лет языки программирования
• Позже начал писать кучу софта под фондовую биржу - различные сканеры, расширения итд
С помощью этого софта заработал деньги на несколько лет вперед
Но СПБ биржа не работает и вот уже пол года я смотрю в сторону крипты и наконец-то нашел то, чем мне было бы интересно заниматься
А именно - работа с DEX, смарт контрактами, solidity, абуз
Канал создаю чтобы писать отчеты для себя, но кому-то может быть это тоже будет полезно
Первое, с чем я буду разбираться - solidity + смарт контракты
С этого дня буду уделять минимум 2 часа изучению
Всю информацию, по которой обучаюсь сам, буду скидывать сюда
• Я кодер
• В программировании около 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) Вводная инфа по смарт контрактам и работе блокчейна (автору канала огромный респект и благодарность за такую инфу)
Вот гемная инфа, которую было бы неплохо знать, чтобы двигаться вместе со мной
1) Язык python
Мой первый язык программирования был C++
Я полностью перешел с C++ на python примерно за 2 недели с помощью этой книги (если не знаете других ЯПов, то будет тяжеловато её читать)
2) Язык JS
Я начал изучать этот язык, когда проходил курс по Django
В курсе был кусочек кода на JS и описание кода в стиле "просто запомните этот код. Он работает вот так..."
Мне нравится разбираться со всем фундаментально и после этих слов я потратил ~пол года на изучение JS (я изучал неторопливо и бОльшая часть того, что я знаю по JS по сути пока не пригодилась)
3) Вводная инфа по смарт контрактам и работе блокчейна (автору канала огромный респект и благодарность за такую инфу)
👍3
Я буду начинать изучения solidity с ютуба (потому что мне так удобно. До официальной документации тоже обязательно доберемся):
Лично я смотрю видос и записываю в тетрадь всю основную информацию оттуда
Для меня это самый продуктивный способ изучения нового языка
Лично я смотрю видос и записываю в тетрадь всю основную информацию оттуда
Для меня это самый продуктивный способ изучения нового языка
👍3
Первый урок (Введение, Remix IDE, аккаунты, газ, первый контракт)
Код с первого урока с комментариями:
Полезные ссылки из первого урока:
remix ide онлайн
скачать remix ide
язык solidity
документация ethereum
цены на газ
Код с первого урока с комментариями:
Полезные ссылки из первого урока:
remix ide онлайн
скачать remix ide
язык solidity
документация ethereum
цены на газ
👍3🔥1
Третий урок (Типы данных string, address, mapping)
Не уверен на 100%, но вроде нашёл баг Remix IDE
если в функцию, которая принимает строку, передать параметр типа:
"parametr""
то IDE умрет
код с комментариями:
Кусочек документации по типам данных
Не уверен на 100%, но вроде нашёл баг Remix IDE
если в функцию, которая принимает строку, передать параметр типа:
"parametr""
то IDE умрет
код с комментариями:
Кусочек документации по типам данных
👍2🔥1
👍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
Код контракта
Код тестов
Установочник 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
Судя по описанию - норм гайд
После окончания своего обучения по ютубу обязательно прочитаю этот
Если не понравится, удалю с канала
После окончания своего обучения по ютубу обязательно прочитаю этот
Если не понравится, удалю с канала
Forwarded from Max Wayld Dev (Max Wayld マキシ)
Статья с роадмапом по изучению Solidity за 30 дней.
Сразу говорю - благодаря этому гайду ты не станешь терн.крипто 2.0 за 30 дней, но сможешь стартануть в этой сфере и изучить все необходимые основы.
Как тебе пригодится этот навык? Вариантов огромное множество: от реального вклада в эту сферу и разработки любых интересующих тебя продуктов, до выноса тех же NFT-сейлов.
Welcome к разбору:
> https://teletype.in/@maxycrypto/solidity_30days
Я уже давно считаю что кодеры это самые важные люди в нашей сфере и толковых девов всегда будет недостаточно, поэтому пилить такие гайды на бесплатной основе - моя отдушина. Буду рад любому фидбеку с твоей стороны!
P.S: также, к концу этой недели выйдет моя ретроспектива по всем материалам для Solidity.
Сразу говорю - благодаря этому гайду ты не станешь терн.крипто 2.0 за 30 дней, но сможешь стартануть в этой сфере и изучить все необходимые основы.
Как тебе пригодится этот навык? Вариантов огромное множество: от реального вклада в эту сферу и разработки любых интересующих тебя продуктов, до выноса тех же NFT-сейлов.
Welcome к разбору:
> https://teletype.in/@maxycrypto/solidity_30days
Я уже давно считаю что кодеры это самые важные люди в нашей сфере и толковых девов всегда будет недостаточно, поэтому пилить такие гайды на бесплатной основе - моя отдушина. Буду рад любому фидбеку с твоей стороны!
P.S: также, к концу этой недели выйдет моя ретроспектива по всем материалам для Solidity.
Teletype
Выучить Solidity за 30 дней: роадмап по становлению tern.crypto
Статья, которая даст тебе всё необходимое для старта погружения в солидити и девелопинг в web3.
Восьмой урок (Древо Меркла, хэши, 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 так как он там никак функционально не задействован
Мой код с комментариями
немного оптимизировал код, который заполняет хеши с индекса 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
———————
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
Teletype
EVM для задротов
Всем привет! С вами Тёма!
Десятый урок (Стрим: практика "Голандский аукцион")
Для урока потребуется установка:
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% покрытие тестами так как в контракте есть пара функций, которых нет в уроке
Можно использовать эту возможность как практику)
Для урока потребуется установка:
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 с готовыми базовыми контрактами от которых можно наследоваться
Мой код с комментариями
Сложный урок для тех, кто не сталкивался с ООП, абстрактными классами итд
Мне помогло, то что я в своё время учил C++ и понимаю как это работает там
С++, кстати, был моим первым языком программирования
Я так же учил по ютубу на канале SimpleCode
Всем советую)
Если пройдете 155 уроков +-, вы не станете гуру конечно, но будете понимать что к чему в любом языке программирования
Opensource проект openzeppelin-contracts с готовыми базовыми контрактами от которых можно наследоваться
Мой код с комментариями
Двенадцатый урок (Интерфейсы, библиотеки, тесты)
Практика к тому, что уже изучено:
Сделать голосовалку, к примеру. У кого есть токены - тот может голосовать. Можно сделать ещё сложнее и совместить голосовалку с Timelock (видео есть про него на канале). То есть кто-то предлагает транзакцию и ставит в очередь, потом идёт голосование (с токенами), а через некоторое время, если нужное кол-во голосов набрано, то транзакцию можно выполнить
Код интерфейса
Код контракта Lesson, который реализует интерфейс
Код контракта Demo, который вызывает функции из сторонних контрактов
Код тестов контракта Demo
Код библиотек
Код с использованием библиотек
Код тестов использования библиотек
Практика к тому, что уже изучено:
Сделать голосовалку, к примеру. У кого есть токены - тот может голосовать. Можно сделать ещё сложнее и совместить голосовалку с 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
Импортируем токены по адресу (берем из консоли после деплоя контракта)
Код интерфейса
Код контракта
Код тестов
Код деплоя
Практика к контракту: написать функцию, позволяющая владельцу списать вырученные средства за продажу токенов + тесты к ней
Запускаем hardhat
npx hardhat node
Команда для деплоя контракта в хардхет:
npx hardhat run path_to_deploy.js
добавляем сеть hardhat в метамаск:
Имя сети: hardhar
Новый URL-адрес RPC: http://127.0.0.1:8545/
ID цепочки: 1337
Символ валюты: ETH
Импортируем токены по адресу (берем из консоли после деплоя контракта)
Код интерфейса
Код контракта
Код тестов
Код деплоя
По сути, закончив этот урок, я своими ручками написал интерфейс ERC20, реализовал его в своём токене (токен получается свой создал), создал «магазин» где этот токен можно купить/продать и задеплоил это всё в тестовый блокчейн
Ну и с этим всем можно взаимодействовать через метамаск
Прикольное ощущение
Особенно когда понимаешь на практике, что почти любой токен и ваш баланс в нем - по сути «словарик» в одном из миллионов смарт контрактов
Ну и с этим всем можно взаимодействовать через метамаск
Прикольное ощущение
Особенно когда понимаешь на практике, что почти любой токен и ваш баланс в нем - по сути «словарик» в одном из миллионов смарт контрактов