Web3 School – Telegram
Web3 School
199 subscribers
17 photos
17 videos
6 files
69 links
@ylebid — admin
Download Telegram
Artemiy
Привет! 🕺 Открывается набор на MixBytes Farm! Над программой курса «Smart Contract Auditor» трудились практикующие аудиторы и исследователи из компании MixBytes, чтобы у тебя была возможность: – обучиться работе с низкоуровневым кодом и эффективными алгоритмами;…
Следующая рекомендованная статья:
MEV: DeFi Transaction Ordering for Profit and Fun

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

Статья объясняет концепцию MEV (Miner/Maximum Extractable Value) в DeFi и как ее можно использовать для получения прибыли, управляя порядком транзакций в блоке. В статье рассматриваются различные стратегии получения прибыли от MEV, как этические, так и неэтические, и заканчивается замечанием о том, что MEV - это двухстороннее оружие, которое можно использовать как для добра, так и для зла.

@web3_school
🔥1
Отличный сайт для тех кто, как и я, любит изучать на примерах.

Solidity by Example

@web3_school
🔥6👍1🤣1
This media is not supported in your browser
VIEW IN TELEGRAM
Набор шаблонов best practice на Solidity с примерами

https://fravoll.github.io/solidity-patterns

@web3_school
1👍1🔥1
Как думаете сколько стоит в деньгах и времени взлоб любого адреса в Ethereum блокчейне?

@web3_school
Anonymous Poll
15%
Это не возможно
22%
10 лет и триллион долларов
19%
1 год и $10 миллиардов
12%
6 месяцев и миллион
32%
Одна ночь и бутылка водки
Web3 School
И так, правильный ответ 1 год и $10 миллиардов и вот почему.

Есть такой вот EIP https://eips.ethereum.org/EIPS/eip-3607

EIP-3607 — это предложение отклонять транзакции от отправителей с развернутым кодом в сети Ethereum.  Это делается для предотвращения возможной атаки, когда вредоносный контракт может быть развернут на адрес, у которого уже есть ключ EOA (внешняя учетная запись), а затем использовать этот ключ для траты средств от ничего не подозревающих пользователей, которые взаимодействуют с контрактом.  В предложении указывается, что любая транзакция, в которой tx.sender использует какой-либо код, должна считаться недействительной и отклоняться сетью.  Это простой и эффективный способ повысить безопасность и устойчивость к коллизиям в Ethereum, поскольку он делает невозможным создание коллизии между контрактом и EOA с использованием современных технологий.

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

@web3_school
👍3🔥21🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Внимание знатоки, что бы вы ответили на #вопрос:

Car car = (new Car){value: msg.value, salt: _salt}(_owner, _model);
Что значит эта запись?

Ответ:
Это код создания смарт контракта из другого контракта. Но не простое создание, а с солью, а значит используется op code CREATE2. Я в предыдущих постах упоминал этот op code.

Детали
https://solidity-by-example.org/new-contract

Попробовать в ремиксе

@web3_school
🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Ещё один #вопрос:

Почему за выполнение этой транзакции пришлось заплатить $23к !??
https://etherscan.io/tx/0x2bde6e654eb93c990ae5b50a75ce66ef89ea77fb05836d7f347a8409f141599f

@web3_school
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
И ещё один #вопрос:

Как скопировать любой смарт контракт в другом смарт контракте? Например нужно получить копию UniswapV2Pair средствами solidity.

Ответ:

bytes memory bytecode = type(UniswapV2Pair).creationCode;
bytes32 salt = keccak256(abi.encodePacked(token0, token1));
assembly {
pair := create2(0, add(bytecode, 32), mload(bytecode), salt)
}

Ключевая строчка первая, получающая код любого смарт контракта, а потом идёт код создания дубликата



@web3_school
2👍1🔥1
Crypto 101 — это вводный курс по криптографии, доступный бесплатно для программистов всех возрастов и уровней квалификации

@wev3_school
🔥3
Хотите пример кода чтения приватной переменной любого смарт контракта любого EVM совместимого блокчейна?

👍 -- конечно
❤️ -- мне и так хорошо живётся
😀 -- а кнопку бабло можно, пожалуйста
👍19😁61
Web3 School
Хотите пример кода чтения приватной переменной любого смарт контракта любого EVM совместимого блокчейна? 👍 -- конечно ❤️ -- мне и так хорошо живётся 😀 -- а кнопку бабло можно, пожалуйста
Первое что важно понимать что приватными переменные являются только для других смарт контрактов. Сам по себе блокчейн это полностью публичные данные и утаить там что либо невозможно. Просто существует правило что к некоторым переменным нет доступа из других смарт контрактов.

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

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

1⃣ Выяснение расположения этой переменной в storage (номера слота и место в слоте)

2⃣ Считывание нужного слота данных и декодирование

Начнём с первого. Сначала нужно разобраться как данные хранятся в памяти смарт контракта, это называется storage layout. Вот вам аналогия:

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

Переменные -- это наши разноцветные конфеты, которые мы хотим сохранить. Мы располагаем их на полках (слотах) комнаты (хранилище контракта, storage).

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

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

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

Организация конфетной фабрики:

Чтобы оптимизировать нашу конфетную фабрику, мы стараемся упаковывать маленькие конфеты на одной полке и размещать их рядом для более эффективного доступа.
Когда у нас есть большие сладости, мы занимаем несколько полок и стараемся разместить их рядом друг с другом. Это называется packing.

Вот в принципе и все базовые концепции. Вообще про storage layout можно говорить ещё очень много. Вот материал с деталями и картинками:

https://programtheblockchain.com/posts/2018/03/09/understanding-ethereum-smart-contract-storage

Посмотреть storage любого контракта
https://evm.storage

В следующем посте расскажу как этот самый сторадж считывать.

@web3_shool
👍2🔥1🤨1
Оказывается большинство свапалок это копии юнисвапа. Знание кода юнисвапа является обязательным для солидити специалиста, потому что это высококачественный, надёжный код. Код обновляется регулярно и уже вышло 3 версии, причем все работают одновременно.

Это один из фундаментальных проектов обязательный для изучения блокчейн специалисту

Детальнее https://betterprogramming.pub/uniswap-smart-contract-breakdown-ea20edf1a0ff

https://uniswapv3book.com
🔥5👍2
Forwarded from One eyes👁
💙Бесплатный курс по безопасности от Патрика Коллинса

Внутри вы будете учить безопасность и аудит а именно :

Инвариантное и нечеткое тестирование смарт-контрактов, Практика фаззинга без сохранения и с сохранением состояния, Обновляемые смарт-контракты, аудит смарт-контрактов, Aderyn, Slither, Ручная проверка, Тестирование смарт-контрактов и т.д

Предварительные условия курса:
- Blockchain Basics
- Solidity fundamentals
- Foundry fundamentals
- Advanced Foundry

Пройти курс можно тут:

https://updraft.cyfrin.io/courses/security
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👍2🔥1