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

Уязвимости целочисленного переполнения, как и в других языках, возникают из-за ограниченного размера памяти, выделенного на переменную. Максимальное значение для переменной типа uint (uint256) равно 2256−1, минимальное — 0. Выйти за эти границы не получится: значение либо обнулится (при переполнении вверх), либо станет максимальным (при переполнении вниз).

Очень хорошо про этот процесс было рассказано в этом видео.

Для примера можно привести такую функцию:

function batchTransfer(address[] _receivers, uint256 _value) public whenNotPaused returns (bool) {
    uint cnt = _receivers.length;
    uint256 amount = uint256(cnt) * _value;
    require(cnt > 0 && cnt <= 20);
    require(_value > 0 && balances[msg.sender] >= amount);

    balances[msg.sender] = balances[msg.sender].sub(amount);
    for (uint i = 0; i < cnt; i++) {
        balances[_receivers[i]] = balances[_receivers[i]].add(_value);
        Transfer(msg.sender, _receivers[i], _value);
    }
    return true;
}

Функция batchTransfer() перечисляет заданное в _value количество ether на адреса из массива _receivers. Обрати внимание на строку вычисления amount, переполнение в которой никак не проверяется. Если задать значение _value равным 2256 / _receivers.length, то в результате переполнения amount примет значение 0. Обе проверки далее пройдут успешно, в том числе и проверка того, что баланс отправителя больше amount. В итоге балансы получателей будут пополнены на величину _value. Если получателей было два, то каждый из них получит по

2^256/2=2^255=0x8000000000000000000000000000000000000000000000000000000000000000 токенов.

Для исключения подобных уязвимостей рекомендуется использовать библиотеку SafeMath от OpenZeppelin.

#arithmetic #time #безопасность
👍1
Безопасность. Атака Short Address

Для вызова функций контрактов используется ABI (Application Binary Interface) — бинарный интерфейс приложения, согласно которому вызов функции представляется в виде последовательности байтов. Первые четыре байта — это начало хеша keccak256 от подписи функции (ее название и типы входных данных), далее идут значения входных параметров.

function transfer(address to, uint amount) public returns (bool success);

Адрес в Ethereum состоит из 20 байт. Для осуществления атаки злоумышленнику нужно сгенерировать адрес, который заканчивается на нулевой байт, например abcdabcdabcdabcdabcdabcdabcdabcdabcdab00. В обычном случае вызов функции на перевод 1 ether будет выглядеть так (вертикальной чертой разделены составляющие последовательности):

a9059cbb|000000000000000000000000abcdabcdabcdabcdabcdabcdabcdabcd
abcdab00|000000000000000000000000000000000000000000000000000
0000000000001

Но если указать адрес abcdabcdabcdabcdabcdabcdabcdabcdabcdab без последнего байта, то недостающий байт адреса будет взят из следующего аргумента (amount), а в конец EVM допишет нулевой байт:

a9059cbb|000000000000000000000000abcdabcdabcdabcdabcdabcdabcdabcd
abcdab|00000000000000000000000000000000000000000000000000000
0000000000100

Получается, вместо 1 ether жертва отправит 0x100=256 ether. Защититься от такой атаки поможет только тщательная проверка параметров перед загрузкой их в блокчейн.

#shortaddress #безопасность
👍1
Безопасность. Атака force feeding

Одна из атак, которая далась мне сложно для понимания, пока я не встретил этот код контракта.

Представим, что у нас есть игра, где каждый участник может вносить по 1 Эфиру. Тот, кто внесет Эфир 7 по счету - забирает джекпот. Уязвимость здесь кроется в "address(this).balance" - проверке условия основанной на балансе контракта.

contract EtherGame {
    uint public targetAmount = 7 ether;
    address public winner;
    function deposit() public payable {
        require(msg.value == 1 ether, "You can only send 1 Ether");
        uint balance = address(this).balance;
        require(balance <= targetAmount, "Game is over");
        if (balance == targetAmount) {
            winner = msg.sender;
        }
    }

    function claimReward() public {
        require(msg.sender == winner, "Not winner");
        (bool sent, ) =
msg.sender.call{value: address(this).balance}("");
        require(sent, "Failed to send Ether");
    }
}

contract Attack {
    EtherGame etherGame;
    constructor(EtherGame _etherGame) {
        etherGame = EtherGame(_etherGame);
    }
    function attack() public payable {
        address payable addr = payable(address(etherGame));
        selfdestruct(addr);
    }
}

Предположим, что есть два участника, которые уже внесли по 1 Эфиру. И на балансе контракта получается 2 Эфира. Мошенник может через свой контракт отправить 5 Эфиров, чем в итоге вызовет функцию selfdestruct() в контракте игры, и застопорит контракт.

Здесь нужно понимать работу функции selfdestruct() и то, что нельзя полагаться на address(this).balance в каких-либо функциях своего контракта. Просто избегайте этого.

#forcefeeding #безопасность
👍1
Безопасность. Атака griefing

Еще одна атака, которая трудна для понимания с первого раза, и что еще хуже, практически не заметна для новичков.

В ру сегменте я не смог найти достойной статьи про данную атаку, поэтому сделал перевод основной части отсюда.

Griefing Attack или griefing gas attack, как мы поняли из второго названия этой атаки, тесно связана с использованием газа в транзакции в момент вызова функции в другом контракте. Из-за того, что не был установлен и подтвержден лимит газа, мошенник может подключиться к функции и использовать имеющийся газ в своих целях.

Эта атака не столько приносит "радости" мошеннику, сколько может принести убытков атакуемому контракту.

Рассмотрим пример.

contract Relayer {
  function relay (Target target, bytes memory _data) public returns (bool) {
    (bool, success,) = address(target).call(abi.encodeWithSignature("execute(bytes)", _data));
  return success;
  }
}

contract Target {
  bool piblic result = false;
  function execute(bytes memory _data) public {
    uint j = 0;
    for (uint i; i < 100; i++) {
      j++;
    }
    result = true;
  }
  function setresult (bool v) public {
    result = v;
  }
}

Если мы развернем оба контракта и вызовем в первом relay(), то все пройдет успешно. Но если мы попробуем узнать значение переменной result во втором контракте, то оно останется неизменным.

Это происходит потому, что второму контракту не хватило газа на выполнение функции. Проверить это можно, повысив gasLimit для функции в первом контракте, и вызвал result еще раз.

Мне пока сложно представить, как мошенник может использовать этот газ в своих целях, так как опыта в этом мало, но из статьи понятно, что такая утечка может привести к значительным финансовым потерям владельца первого контракта.

Как я понял из статьи, на данный момент нет 100% защиты от этой атаки, но ее шансы можно значительно сократить следующим образом.

Во-первых, проверять в первом контракте, что транзакция успешно прошла, например добавить после строки (bool success,) условие "if\else".

Во-вторых, проверять лимит газа. Например так.

В первом контракте ввести две дополнительные переменные:

uint estimateGasValue = 1000000;
uint gasNeededBetweenCalls = 5000;

а затем модифицировать функцию relay():

uint gasAvailable = gasLeft() - gasNeededBetweenCalls;
require (gasAvailable - gasAvailable \ 64 >= estimateGasValue, 'not enough gas provided');
(bool success,) = address(target).call(abi.encodeWithSignature("execute(bytes)", _data, estimateGasValue));

Решения с оценкой газа могут стать не эффективными со временем, когда цена на газ вырастет.

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

#griefing #безопасность
👍1
Smart Contract Security Verification Standard

Мини-пост заметка. Нашел pdf файл на английском языке по стандартам проверки безопасности смарт контрактов. На чтение уйдет время, и если будет что-то новое, то сделаю отдельным постом.

Также есть еще реестр уязвимостей в смарт контрактах с примерами. Кому интересно, можете покопаться на досуге тут.

#безопасность #swc #weakness #standard #security #scsvs
👍1
Безопасность и аудит

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

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


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

1. Посмотрите на популярные уязвимости и пройдитесь по своему коду еще раз.

2. Напишите в контракте комментарии к коду, если вдруг захотите отдать другими людям на проверку.

3. Напишите свои тесты в hardhat (или в той среде, где вы работаете) с solidity coverage на 100%.

4. Запустите быстрые тесты со сторонними программами slither, linters, static analysis и др.).

5. Запустите более продвинутые тесты (echidna, manticore, symbolic execution, MythX).

6. Передайте на аудит, если есть хоть "грамм" сомнений.


Даже все эти шаги не смогут гарантировать 100% безопасность вашего смарт контракта!

#безопасность #тесты
👍1
Подготовка к тестам

Вчера мне потребовалось время, чтобы разобраться с настройкой Python, так как никогда ранее не работал с ним, и появились вопросы по использованию библиотек в проекте. Но сейчас не об этом.

Зачем нам Python в смарт контрактах?

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

Для работающих с Python

Проверьте, чтобы была установлена версия выше 3.10, а также установлен pip3.

Для новичков

1. Для начала нужно скачать сам Python. При этом следите, чтобы версия была ^3.0.

Скачать можно с официального сайта тут (https://www.python.org/downloads/).

2. Затем проверьте, чтобы он у вас правильно установился и имел в своем распоряжении pip3, выполнив команды:

$ python --version
$ pip3 -- version

Там должен появиться номер установленной версии.

3. Далее рекомендуется установить компилятор для Solidity, на случай работы с разными его версиями. Это можно сделать командой:

$ pip3 install solc-select

И вот тут могут пойти проблемы.

У меня постоянно возникала ошибка "running setup.py install for pysha3 did not run successfully". Я попробовал разные советы, которые находил в гугле, но помог только один.

Нужно скачать и установить Visual Studio Build Tools 2022 (пакеты С++).

После этого еще раз попробовать выполнить команду в консоли:

$ pip3 install solc-select

Если и тут не выходит, то попробуйте так:

$ pip3 install solc-select --user

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

#python #pip3
👍1
Подготовка рабочей среды для тестов

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

Slither - pip3 install slither-analyzer

Mythril - pip3 install mythril

Manticore - pip install manticore

Есть и другие программы, типа Echidna или MythX, но для начала рассмотрим только указанные три.

Проверить правильность их установки можно командой

pip list

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

Для этого создаем файл requirements.txt, куда записываем необходимые программы, которые планируем использовать в своем проекте, по типу:

solc-select== 1.0.1
slither-analyzer==0.9.0

и сохраняем файл. Можно в директории проекта.

Затем выполняем команду для создания виртуального окружения:

python -m venv venv

Потом активируем:

source venv/noscripts/activate

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

И в конце выполняем подключение программ в проект:

pip install -r requirements.txt

Теперь проверить, что все у вас подключилось правильно, можно, выполнив, например, такую команду:

slither --help

Если появятся длинный список команда и опций, то все ок. Если нет - постарайтесь пройти все шаги заново.

#python #pip3 #venv
👍1
Тестирование контрактов в Slither

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

Особенности программы:

- Обнаруживает уязвимый код Solidity с низким уровнем ложных срабатываний.

- Определяет, где конкретно в коде есть такая уязвимость.

- Встроенные "принты" создают отличные отчеты по важным частям кода контракта.

- Анализ кода Solidity выше 0.4 версии

- Средняя скорость выполнения теста всего несколько секунд.

Как работает?

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

"slither ."

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

Прочитав ошибку, вам станет понятно, на какой строке или в какой функции есть уязвимость.
  
#slither
👍1
Тестирование с Mythril и Manticore

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

Тут надо уточнить, что мне пришлось дополнительно устанавливать Docker для работы, так как bash терминал постоянно выдавал ошибку при запуске Manticore. Как я понял, там идет внутренний конфликт с windows, поэтому пришлось действовать так.

Также Mithril не поддерживает питон 3.10 (макс 3.9), поэтому для него также используется Docker.

Я не хотел бы здесь открывать новые темы изучения Docker и Python: новичкам будет сложно, а продвинутые смогут и сами установить пакеты.

На всякий случай, оставляю здесь ссылки на обе программы:

Manticore - https://github.com/trailofbits/manticore
Mythril - https://github.com/ConsenSys/mythril

Аудит смарт контрактов дело достаточно кропотливое и долгое. В целом, это отдельная профессия со своими навыками, инструментами и практиками.

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

#mythril #manticore
👍1
Всем привет!

Для начала, хотел бы поприветствовать всех новеньких на канале. Тут я пишу про обучение блокчейн разработке, разбираю контракты, проекты и сервисы.

Уточню, что я не преподаватель, а обычный разработчик, который хочет освоить новую для себя сферу. Материалов на русском языке очень мало, поэтому я часто делаю переводы с иностранных ресурсов.

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

Как обычно, первым постом на новой неделе делюсь планами обучения.

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

Также на неделе мы разберем несколько интересным моментов в Solidity и попробуем создать полноценные проекты.

Вы также можете предлагать какие-либо темы для разбора на канале (по биржам мы пройдемся чуточку позже).

Легкого дня и приятного обучения.
👍5
Идеи проектов для тренировки. Часть 1

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

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

2. На фронте создайте поле для картинки и input для ввода текста. Напишите функцию, которая позволит каждому пользователю изменить картинку на сайте, заплатив больше Эфира, чем предыдущий пользователь.

3. Создайте систему с двумя списками пользователей: хороших и плохих. Пользователи из второго списка могут заплатить Эфир, чтобы попасть в список хороших, а те, кто в списке хороших получат небольшую равнозначную комиссию за это действие.

4. Создайте один NFT с возможностью передачи его один раз в 24 часа. Если пользователь не успевает его передать в течение этого времени, то NFT остается у него навсегда.

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

#практика #идеи
👍1
Идеи проектов для тренировки. Часть 2

А вот два прекрасных ресурса, чтобы научиться работать с безопасностью смарт контрактов и находить уязвимости в них.

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

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

Кстати, в этом видео уже разбирались некоторые задачи из ethernaut.

Damn Vulnerable DeFi - еще один крутой проект для поиска уязвимостей. Я встречал в нескольких видео рекомендации о нем. Работает так же: выбираете задание, читаете условие и выполняете его.

Rect - интересный проект о блокчейн взломах и безопасности. Многие Телеграм паблики берут самые актуальные новости именно оттуда. К тому же есть русский язык.

Блог Trail if Bits - англоязычный блог от создателей таких крутых сервисов для аудита смарт контрактов, как Slither, Manticore, Mythril и других. Пишут о новых уязвимостях.

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

#практика #идеи #безопасность
Поиск работы. Часть 1

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

1. НЕ ищите работу в русскоговорящих странах. Объясню почему. Во-первых, просмотрев несколько вакансий на популярных сайтах, типа хх, я был крайне удивлен требованиям и зарплате. При том, что вам нужно будет знать "все, кроме блокчейна", так еще и зарплату предлагают на уровне 100к. С большой вероятностью, вы получите больше геморроя, чем практики. Во-вторых, отставание по технологиям. Создание NFT и токенов - это малая часть работы в блокчейне. Если хотите стать спецом, то нужно искать другую практику.

2. Курсы НЕ устроят на работу. Я видел кучу объявлений от топовых компаний по типу "Пройди курс и получи работу 100%". Это все дикая хрень. Во-первых, там мало чему научат с практической точки зрения, так еще и работу подберут, как из первого пункта.

Чтобы получить работу, нужно также всего две вещи:

1. Практическая практика: писать код, знать, как взаимодействовать со сторонними сервисами и оракулами и соблюдать меру безопасности.

2. Портфолио. Сделайте 3-4 проекта, которые сможете показать. Подойдут даже самые простые. Не требуется создавать новый Uniswap, претендуя на свою первую работу, как блокчейн разработчик.

Извините, за грубое высказывание, но лучшим ответом на вопрос, как получить работу и научиться блокчейн разработке будет: "Ебашить!". День и ночь писать код и разбираться в деталях.

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

#работа
👍4👏2
Поиск работы. Часть 2

Итак, вот список сайтов, где можно посмотреть вакансии и требования для блокчейн разработчиков:

1. Indeed - блогеры на Youtube советуют именно его.

2. Cryptocurrencyjobs - много вакансий в web3 связанных не только с кодингом.

3. Cryptojobslist - еще один популярный ресурс, также есть поиск работы для новичков.

4. Web3.career - интересный проект, хотя у меня вызвала вопросы актуальность некоторых вакансий.

5. LinkedIn - профессиональная социальная сеть за рубежом. Необходимо создать профиль, заполнить его в деталях и подписаться на популярные компании в сфере web3. Там же можно найти кучу вакансий во всем мире. Возможно, потребуется VPN для работы с ним.

6. Beincrypto - еще один сайт, где можно найти работу не только с кодингом.

7. Glassdoor - странный немного по дизайну сайт, но вакансии актуальные.

Дальше только ссылки.

8. Dice

9. Blockchain.works-hub

10. Также можно искать вакансии в компаниях, которые вам приглянулись, например, в Binance, Uniswap, Coinbase.

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

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

#работа
👍31
Обзор пройденного

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


Безопасность и аудит смарт контрактов

1. Подготовка смарт контракта к аудиту

2. Что такое NatSpec в смарт контракте?

3. Проведение аудита

4. Тестирование контрактов в Slither

5. Тестирование с Mythril и Manticore

6. Smart Contract Security Verification Standard


Вопросы безопасности

7. Безопасность. Внешние вызовы (5 частей)


Популярные атаки

8. Атаки reentrancy и DoS

9. Атаки honeypot, delegatecall и oracle manipulation

10. Атака frontrunning (опережение)

11. Атака timestamp dependence / time manipulation

12. Атака Arithmetic

13. Атака Short Address

14. Атака force feeding

15. Атака griefing


Практика

16. Создание soulbound NFT (4 части)

17. Пишем мини краудфандинг и разбираем код

18. Идеи проектов для тренировки (2 части)


Другое

19. Сдвиги / смещение

20. Hardhat network helpers


Поиск работы

21. Поиск работы (2 части)


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

Приятного обучения.
👍4
Темы для разбора от участников?

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

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

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

Единственное что, вопросы должны быть по Solidity и блокчейн разработке, а не игре на биржах, арбитраж, и т.д.

Что думаете?

Приятного дня!
👍1
Вопросов нет, будут пока новости

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

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

Например, вы знали, что недавно Метамаск запустил в бета свой SDK. Другими словами, если раньше мы использовали ethers.js или web3.js для подключения кошелька и проведения транзакций, то теперь это можно будет делать напрямую из Метамаск.

Чуть больше об этом можно прочитать тут.

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

Приятного дня и легкого обучения.
Новый сайт для поиска работы

Сейчас встретил новый сайт, где размещаются вакансии в web3. И не только для разработчиков.

https://aworker.io/

Он на днях был на Product Hunt, поэтому в ближайшее время, по крайней мере, владельцы будут следить за актуальностью.

Попробуйте, может кому зайдет.

#работа
👍3
Временно курс на безопасность

Всю неделю был в дороге, рассылал резюме и подучивал react, поэтому постов было мало на канале. На следующей недел мы врнемся в строй.

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

Что значит "посты про безопасность и аудит"?

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

Во-вторых, разобрать примеры с ethernaut и Damn Vulnerable DeFi.

В-третьих, поискать информацию по последним взломам, и понять как они происходили.

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

Надеюсь, новый курс будет вам интересен также как и мне.

Приятного дня и легкого обучения!
👍5
Планы на неделю

Привет всем! Начинаем неделю обучения безопасности.

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

Посмотреть roadmap можно тут.

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

Итак, что же будет на этой неделе?

Так как материала много и нужно хорошо его освоить, мы будем действовать следующим образом.

Каждый день мы будем разбирать несколько задач ethernaut (1-5 в зависимости от сложности), а также я буду делать несколько постов с заметками по безопасности, которые найду в статьях.

Другими словами, сначала мы пройдем ethernaut, потом DVD, потом будет разбирать другие известные уязвимости (в registry и новостях), затем, я надеюсь, что смогу разобраться с программами аудита и рассказать о них. В конце, посмотрим, чего не хватило, и дополним программу. Вместе с этим, как я уже написал, будут заметки по безопасности из статей.

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

Начнем с ethernaut.

Приятного дня и легкого обучения!
👍4