Web3 School – Telegram
Web3 School
199 subscribers
17 photos
17 videos
6 files
69 links
@ylebid — admin
Download Telegram
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