Solidity. Смарт контракты и аудит – Telegram
Solidity. Смарт контракты и аудит
2.62K subscribers
246 photos
7 videos
18 files
547 links
Обучение Solidity. Уроки, аудит, разбор кода и популярных сервисов
Download Telegram
Обратите внимание на эту функцию из урока! Она будет часто встречаться в контрактах, поэтому нужно запомнить, для чего она нужна.

Constructor() - это функция, которая вызовется автоматически, когда контракт будет размещен в блокчейн, т.е. сразу в момент размещения.

#code #constructor
2🔥1
Хоть первый урок и считается вводным, но лектор дает достаточно новой информации даже для бывалых разработчиков, не то что для новичков.

Надеюсь, у вас получилось за день просмотреть урок и, возможно, даже попрактиковаться.

По итогу первого урока:

1) Вы должны научиться работать с программой Remix ide;
2) Понимать, как разворачивать контракты и обновлять информацию в них;
3) Понимать, что обозначают разные цвета на кнопках в контракте;
4) Написать свой первый контракт вслед за лектором;

А чтобы обучение было более эффективным, практикуйтесь больше, пересматривайте урок, прописывайте код за лектором и, конечно же, задавайте вопросы на канале.

Далее будет небольшой опрос на тему даты следующего урока.

Если вам нужен еще один день, чтобы разобраться с кодом, то выберите соответствующую опцию. Если же все ок и понятно, за завтра начнем урок №2.
👍1🔥1
Начинаем завтра новый урок?
Anonymous Poll
74%
Да, я готов
26%
Нет, мне нужно еще время
🔥1
Всем доброе утро и продуктивного дня!

По голосам большинства мы решили выделить еще один день день, чтобы все могли разобраться с первым уроком.

Хочу также отметить, что на данном этапе не нужно досконально разбираться в нашем первом написанном смарт-контракте. Достаточно его переписать за лектором к себе в Remix.

В последующих уроках будут разбираться и функции, и события, и модификаторы, и переменные, и другие страшные слова для новичков. Поэтому, если чего-то не поняли по коду, то не ломайте себе голову и поиск гугл, все будем проходить дальше.

При этом хочу спросить у всех: нужен ли нам отдельный групповой чат?

По сути это будет уже третья вкладка в Телеграм, так как уже есть "Канал" и "Обсуждения", где отображаются комментарии к посту на канале.

Или же можно закрыть Обсуждения и заменить его на Групповой чат.

Как вам будет удобнее? Кликните на пункт в опросе.
🔥1
Обратите внимание на цветовые обозначение кнопок контракта в Remix.

Так как, большинство действий (транзакций) в смарт-контракте являются платными, то необходимо следить за газом (об этом еще будет отдельный урок).

По сути, только синие кнопки (кнопки вызова) - бесплатные, т.к. они ничего не меняют в контракте и не работают с переводами, а только позволяют читать информацию.

Желтые - транзакции, которые стоят газа, и нужно за них платить. Это может быть снятие денег с контракта, сохранение новых значений и т.д.

Красные - чаще всего, это прием оплаты по контракту. Нажав на нее, у пользователя спишется определённая сумма. Они также потребляют газ.

#gas
🔥1
Завтра переходим к новому уроку, чтобы успеть пройти все до конца лета, поэтому постарайтесь просмотреть урок и настроить Remix те, кто этого еще не сделал.

Урок будет относительно простой.

По групповому чату голоса разделились поровну, поэтому давайте пока отложим создание чата хотя бы на пару уроков вперед.

Пока что давайте попробуем общение под последним постом на канале: задаем вопросы, получаем ответы, развиваемся!

Также дайте знать, в чем и если у вас возникли трудности, а также, как вам формат коротких постов в течение дня с моментами из урока, на которые стоит обратить внимание.
🔥1
Урок 2

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

Ссылка на видео урока.

Задание по уроку:

1. Записать в новый файл типы данных из урока и дать краткое описание.

Я, как и в прошлый раз, буду в течение дня выкладывать небольшие скрины из урока, чтобы можно было в дальнейшем быстро найти подсказку, если что-то забылось.

#урок
👍1🔥1
Несколько слов о переменных в Solidity

1. Существуют переменные состояния, которые хранятся в блокчейне, и временные переменные, которые хранятся до тех пор, пока они нужны. Чаще всего вторые используются в функциях.

2. Переменные всегда имеют какое-либо значение по умолчанию, т.е. не могут быть пустыми.

3. Переменные должны быть определены типом данных (uint, int, book и другие).

#типданных #переменные
👍3🔥1
Пример логических операций к булевым значениям. Все понимают, что они значат?)
👍1🔥1
Обратите внимание на размерность переменных.

Если в других языках это, по большей части, не так важно, но в Solidity и смарт контрактам правильная размерность может сократить стоимость газа, а значит и финальную стоимость развертывания самого контракта в сети блокчейн!
👍2🔥1
Так можно узнать минимальное значение переменной.

А кто скажет, как можно узнать максимальное?)

#функция #размер
🔥1
Кстати, о красивом коде.

Автор уроков, преподаватель одной из московских школ программирования, пишет довольно красивый код: делает отступы, сокращает функции и т.д.

Например, на текущем скрине представлены три варианта написания простого сложения. Они, по своему результату, совершенно одинаковые. Но вот как раз последний и является примером хорошего кода.

Хотите, чтобы я дальше тоже обращал внимание на такие штуки?
👍5🔥1
И вот последняя функция, на которую стоит обратить внимание.

Как я понял из урока, ее не было в ранних версиях Solidity, и появилась не так уж и давно.

Unchecked() позволяет отлавливать ошибки переполнения, и, если функция дошла до максимального или минимального значения, то она не вернет ошибку, а начнет сначала диапазона.

#unchecked #function
👍1🔥1
В завершение дня

Осталось еще два урока про типы данных, и я предлагаю пройти их в четверг и пятницу. Сами уроки вроде легкие, но существуют нюансы отличающие Solidity от других языков. Поэтому эти уроки стоит посмотреть даже опытным разработчикам.

В субботу и воскресенье оставим для отдыха и подготовки к следующей неделе. Один из уроков далее будет достаточно сложный, и потребуется, возможно, пара дней, чтобы разобраться в нем и сделать необходимую настройку рабочего пространства.

Также хотел бы попросить оставлять реакции под постами на канале, чтобы я понимал, что материал вам интересен и полезен. Обычный лайк или огонек очень мотивирует подготавливать посты по уроку.

Надеюсь вам пока заходит подобное обучение, как и мне. Если что не так, то я всегда открыт к предложениям.
🔥7
Урок 3. Типы данных 2.

Продолжаем осваивать базовые единицы языка.

Видео урока.

В этом уроке вводится новый тип данных - address. Ни в одном языке web2, насколько я знаю, нет ничего похожего, просто потому, что нигде не используются уникальные адреса аккаунтов пользователей (кошельков) и смарт-контрактов. Здесь же для этого разработана целая система, с котором мы познакомимся в последующих уроках.

Также особое внимание стоит уделить такому типу данных, как mapping. Для новичков он может быть немного не понятным, поэтому, если не разберетесь сами, то спрашивайте в чат или погуглите на досуге. В создании контрактов mapping используется довольно часто.

А так, приятного просмотра и легкого дня!

#урок #типыданных
🔥1
Пара слов, которые нужно запомнить о типе данных string

1. Чем длиннее строка, тем больше это будет стоить! Не следует хранить в переменных большие предложения или тексты. В итоговом разворачивании контракта это может выйти буквально в несколько сот долларов!

2. Мы не можем померит длину строки, так как они хранятся в байтовых массивах.

3. Строки нельзя склеивать, сравнивать, или обращаться к буквам по индексу.

4. В функциях создаются только временные переменные string. При этом в рамках функций можно переопределять основные значения string, которые хранятся в блокчейне.

#string #function
👍1🔥1
В Solidity есть уникальный тип данных - address, так как смарт-контракты и пользователи имеют свой уникальный адрес в сети блокчейн.

Вместе с этим, address имеет особенные методы для работы с переменными, такие как balance или transfer.

В ходе уроков мы не раз будем с ними сталкиваться, поэтому запомнить их будет совершенное не сложно.

#address #method
🔥1