Проект на виду. Часть 6. Нейронки не доступны
Сегодня хочу отвлечься от темы EIP-7702 и снова поговорить о нейронных сетях, AI, агентах и том, как они будут заменять программистов...
Понемногу каждый день я продолжаю изучать модели, обучение нейронок и как это может быть полезно в моей работе. И с каждым днем я прихожу к мысли, что полноценные нейронные сети одновременно и доступны и недостижимы для простых людей.
Да, мы в любой момент можем зайти в DeepSeek, GTP, Grok - написать хороший промт и получить прекрасный результат. Claude и Gemini все лучше пишут код, и казалось бы от оно счастье...
Пока вы не задумаете попробовать самому выбрать локальную нейронку для своих задач и попробовать обучить ее. Тут начинаются проблемы, а именно загвоздка в мощностях.
Для работы маломальски нормальной нейронки, не обрезанной\облегченной\нишевой, вам потребуется мощная видеокарта уровня 3090, а лучше 4090, и процессор минимум i7. И это будет "в целом ок" для моделей среднего уровня на 13-15 млрд параметров. А более хорошие модели на 32-36 млрд потребуют мощностей куда выше обозначенных. Кроме того, современные модели, например тот же DeepSeek может затянуть на 200 +млрд параметров и вообще запредельных мощностей, которые просто не организовать в домашних условиях.
И, если я правильно понял, то такие мощности требуются только для комфортной работы модели, а для ее переобучения нужно больше...
К чему я веду?
Нейронки (DeepSeek, chatGPT, etc) обучаются на огромных массивах данных, включая все языки, всю документацию, все примеры кода и т.д. Нет четкого фокуса - главное быть лучше и функциональнее конкурента. У разработчиков этих моделей нет задачи сделать их мастерами в React, Solidity или Python. Отсюда у нас идет хороший, но порой "не тот" код.
А дообучить\переобучить нейронку для определенного языка - у обычных пользователей нет ресурсов.
Вот и получается, что сейчас возможен период, когда компании будут формировать свои ресурсы вокруг опенсорсных моделей, нишево дообучать их для определенной цели и продавать доступ по подписке.
В ближайшие лет 5 текущие нейронки выйдут на хороший уровень по коду, но появится много надстроек, которые будут продавать фокусные решения. И пользователи будут платить за модель, которая отлично пишет код Solidity с акцентом на безопасности, чем брать просто хорошие основные сети для "всего".
Вот такой пятничный поток мыслей. А вы что думаете по этому поводу?
#offtop
Сегодня хочу отвлечься от темы EIP-7702 и снова поговорить о нейронных сетях, AI, агентах и том, как они будут заменять программистов...
Понемногу каждый день я продолжаю изучать модели, обучение нейронок и как это может быть полезно в моей работе. И с каждым днем я прихожу к мысли, что полноценные нейронные сети одновременно и доступны и недостижимы для простых людей.
Да, мы в любой момент можем зайти в DeepSeek, GTP, Grok - написать хороший промт и получить прекрасный результат. Claude и Gemini все лучше пишут код, и казалось бы от оно счастье...
Пока вы не задумаете попробовать самому выбрать локальную нейронку для своих задач и попробовать обучить ее. Тут начинаются проблемы, а именно загвоздка в мощностях.
Для работы маломальски нормальной нейронки, не обрезанной\облегченной\нишевой, вам потребуется мощная видеокарта уровня 3090, а лучше 4090, и процессор минимум i7. И это будет "в целом ок" для моделей среднего уровня на 13-15 млрд параметров. А более хорошие модели на 32-36 млрд потребуют мощностей куда выше обозначенных. Кроме того, современные модели, например тот же DeepSeek может затянуть на 200 +млрд параметров и вообще запредельных мощностей, которые просто не организовать в домашних условиях.
И, если я правильно понял, то такие мощности требуются только для комфортной работы модели, а для ее переобучения нужно больше...
К чему я веду?
Нейронки (DeepSeek, chatGPT, etc) обучаются на огромных массивах данных, включая все языки, всю документацию, все примеры кода и т.д. Нет четкого фокуса - главное быть лучше и функциональнее конкурента. У разработчиков этих моделей нет задачи сделать их мастерами в React, Solidity или Python. Отсюда у нас идет хороший, но порой "не тот" код.
А дообучить\переобучить нейронку для определенного языка - у обычных пользователей нет ресурсов.
Вот и получается, что сейчас возможен период, когда компании будут формировать свои ресурсы вокруг опенсорсных моделей, нишево дообучать их для определенной цели и продавать доступ по подписке.
В ближайшие лет 5 текущие нейронки выйдут на хороший уровень по коду, но появится много надстроек, которые будут продавать фокусные решения. И пользователи будут платить за модель, которая отлично пишет код Solidity с акцентом на безопасности, чем брать просто хорошие основные сети для "всего".
Вот такой пятничный поток мыслей. А вы что думаете по этому поводу?
#offtop
❤6🤔3👍2
Упрощение сети Эфириум
Месяц назад сохранил в закладки для себя статью от Виталика Бутерина и только сейчас дошел до нее. В целом, очень идеи и предположения. Может некоторые из них и будут внедрены в сеть...
О чем же сама статья?
Виталик предлагает радикально упростить протокол Ethereum, стремясь приблизить его по простоте к Bitcoin. Он утверждает, что чрезмерная сложность текущей архитектуры Ethereum затрудняет развитие, увеличивает риски и препятствует участию новых разработчиков. В отличие от этого, простота Bitcoin делает его более устойчивым и понятным даже для начинающих программистов.
Одним из ключевых предложений является внедрение модели консенсуса с трёхслотовой финализацией, которая заменит текущую сложную систему слотов, эпох и комитетов. Эта модель может быть реализована в около 200 строках кода и обеспечивает почти оптимальные свойства безопасности. Уменьшение числа активных валидаторов одновременно упрощает реализацию правил выбора форка и повышает надёжность сети.
В области исполнения Бутерин предлагает заменить Ethereum Virtual Machine (EVM) на виртуальную машину, основанную на архитектуре RISC-V. Это позволит значительно упростить протокол и улучшить производительность, особенно в контексте zero-knowledge доказательств. Для обеспечения обратной совместимости предлагается запускать существующие контракты EVM через интерпретатор на новой виртуальной машине.
Также предлагается стандартизация протокола, включая использование единых форматов сериализации и структуры данных, таких как SSZ и унифицированные Merkle-деревья. Это позволит улучшить инструментарий, системы доказательств и повторное использование кода, а также упростит разработку и поддержку протокола.
Бутерин подчёркивает, что простота протокола способствует его устойчивости, снижает вероятность критических ошибок и уменьшает социальную поверхность атаки. Он признаёт, что предыдущие решения, включая его собственные, способствовали излишней сложности и рискам безопасности, и призывает к переосмыслению архитектуры Ethereum с акцентом на простоту и прозрачность.
Предложенные изменения представляют собой долгосрочную стратегию, направленную на повышение устойчивости и масштабируемости Ethereum. Хотя реализация этих изменений потребует значительных усилий и может вызвать временные трудности, Бутерин уверен, что в долгосрочной перспективе они принесут значительные преимущества для всей экосистемы Ethereum.
#ethereum
Месяц назад сохранил в закладки для себя статью от Виталика Бутерина и только сейчас дошел до нее. В целом, очень идеи и предположения. Может некоторые из них и будут внедрены в сеть...
О чем же сама статья?
Виталик предлагает радикально упростить протокол Ethereum, стремясь приблизить его по простоте к Bitcoin. Он утверждает, что чрезмерная сложность текущей архитектуры Ethereum затрудняет развитие, увеличивает риски и препятствует участию новых разработчиков. В отличие от этого, простота Bitcoin делает его более устойчивым и понятным даже для начинающих программистов.
Одним из ключевых предложений является внедрение модели консенсуса с трёхслотовой финализацией, которая заменит текущую сложную систему слотов, эпох и комитетов. Эта модель может быть реализована в около 200 строках кода и обеспечивает почти оптимальные свойства безопасности. Уменьшение числа активных валидаторов одновременно упрощает реализацию правил выбора форка и повышает надёжность сети.
В области исполнения Бутерин предлагает заменить Ethereum Virtual Machine (EVM) на виртуальную машину, основанную на архитектуре RISC-V. Это позволит значительно упростить протокол и улучшить производительность, особенно в контексте zero-knowledge доказательств. Для обеспечения обратной совместимости предлагается запускать существующие контракты EVM через интерпретатор на новой виртуальной машине.
Также предлагается стандартизация протокола, включая использование единых форматов сериализации и структуры данных, таких как SSZ и унифицированные Merkle-деревья. Это позволит улучшить инструментарий, системы доказательств и повторное использование кода, а также упростит разработку и поддержку протокола.
Бутерин подчёркивает, что простота протокола способствует его устойчивости, снижает вероятность критических ошибок и уменьшает социальную поверхность атаки. Он признаёт, что предыдущие решения, включая его собственные, способствовали излишней сложности и рискам безопасности, и призывает к переосмыслению архитектуры Ethereum с акцентом на простоту и прозрачность.
Предложенные изменения представляют собой долгосрочную стратегию, направленную на повышение устойчивости и масштабируемости Ethereum. Хотя реализация этих изменений потребует значительных усилий и может вызвать временные трудности, Бутерин уверен, что в долгосрочной перспективе они принесут значительные преимущества для всей экосистемы Ethereum.
#ethereum
❤7👍6🤔3
Стандарт ERC-6909 Minimal Multi-Token Standard. Часть 1
Следующий цикл постов я хочу посвятить этому интересному стандарту.
ERC-6909 - это оптимизированная альтернатива ERC-1155. Он представляет интерфейс для нескольких токенов, который позволяет одному смарт контракту включать в себя fungible and non-fungible токены (т. е. ERC20 и ERC721).
ERC-1155 позволил решить несколько проблем, таких как снижение затрат на развертывание, минимизация избыточного байткода в блокчейне Ethereum и упрощение процедуры утверждения токенов для торговли несколькими токенами.
Однако он привел к некоторому раздуванию и газовой неэффективности из-за обязательных callbacks для каждого трансфера, принудительного включения batch transfer и отсутствия тонкого контроля разрешений одного оператора. ERC-6909 устраняет эти недостатки, а как - узнаем дальше.
ERC-6909 удаляет требование callbacks
Спецификация ERC-1155 требует, чтобы функции safeTransferFrom и safeBatchTransferFrom проверяли, является ли получатель контрактом. Если это так, то они ОБЯЗАТЕЛЬНО должны вызвать функции интерфейса ERC1155TokenReceiver (onERC1155Received, onERC1155BatchReceived) в контракте-получателе, чтобы проверить, принимает ли он переводы.
Эти callbacks полезны в некоторых случаях. Однако они становятся ненужными внешними вызовами для получателя, который хочет отказаться от такого поведения. Callbacks влияют на стоимость газа и размер кода контрактов-получателей, поскольку требуют реализации нескольких callback-функций (например, onERC1155Received, onERC1155BatchReceived) и возврата специальных 4-байтовых значений для получения токенов. В отличие от этого, разработчики, реализующие стандарт ERC-6909, могут самостоятельно выбирать архитектуру своих callback-функций.
ERC-6909 не включает логику пакетных переводов (batch transfer)
Пакетные переводы, несмотря на свою полезность в некоторых случаях, намеренно исключены из стандарта ERC-6909. Это позволяет разработчикам реализовывать логику таких переводов, адаптированную под конкретные среды исполнения. Разработчики могут реализовать переводы любым удобным для них способом и не обязаны добавлять дополнительную функцию переводов только ради соответствия стандарту.
Функция safeBatchTransferFrom , показанная ниже, отвечает за выполнение таких переводов в стандарте ERC-1155. Однако её обязательное присутствие увеличивает объём кода у приложений, которым такие функции не нужны:
Ниже представлена функция ERC-6909 transferFrom. Видно, что функция batch и параметр _data были удалены.
ERC-6909 поддерживает как глобальные разрешения, так и детализированные лимиты
Функция setApprovalForAll , показанная выше, реализует модель глобального оператора из стандарта ERC-1155. Она позволяет одному аккаунту авторизовать другой аккаунт для управления (в качестве оператора) всеми идентификаторами токенов от его имени. После авторизации оператор получает неограниченный доступ к переводу любых количеств любых токенов, принадлежащих авторизующему аккаунту.
Хотя этот подход упрощает делегирование прав, он не предоставляет возможности точного контроля:
Следующий цикл постов я хочу посвятить этому интересному стандарту.
ERC-6909 - это оптимизированная альтернатива ERC-1155. Он представляет интерфейс для нескольких токенов, который позволяет одному смарт контракту включать в себя fungible and non-fungible токены (т. е. ERC20 и ERC721).
ERC-1155 позволил решить несколько проблем, таких как снижение затрат на развертывание, минимизация избыточного байткода в блокчейне Ethereum и упрощение процедуры утверждения токенов для торговли несколькими токенами.
Однако он привел к некоторому раздуванию и газовой неэффективности из-за обязательных callbacks для каждого трансфера, принудительного включения batch transfer и отсутствия тонкого контроля разрешений одного оператора. ERC-6909 устраняет эти недостатки, а как - узнаем дальше.
ERC-6909 удаляет требование callbacks
Спецификация ERC-1155 требует, чтобы функции safeTransferFrom и safeBatchTransferFrom проверяли, является ли получатель контрактом. Если это так, то они ОБЯЗАТЕЛЬНО должны вызвать функции интерфейса ERC1155TokenReceiver (onERC1155Received, onERC1155BatchReceived) в контракте-получателе, чтобы проверить, принимает ли он переводы.
Эти callbacks полезны в некоторых случаях. Однако они становятся ненужными внешними вызовами для получателя, который хочет отказаться от такого поведения. Callbacks влияют на стоимость газа и размер кода контрактов-получателей, поскольку требуют реализации нескольких callback-функций (например, onERC1155Received, onERC1155BatchReceived) и возврата специальных 4-байтовых значений для получения токенов. В отличие от этого, разработчики, реализующие стандарт ERC-6909, могут самостоятельно выбирать архитектуру своих callback-функций.
ERC-6909 не включает логику пакетных переводов (batch transfer)
Пакетные переводы, несмотря на свою полезность в некоторых случаях, намеренно исключены из стандарта ERC-6909. Это позволяет разработчикам реализовывать логику таких переводов, адаптированную под конкретные среды исполнения. Разработчики могут реализовать переводы любым удобным для них способом и не обязаны добавлять дополнительную функцию переводов только ради соответствия стандарту.
Функция safeBatchTransferFrom , показанная ниже, отвечает за выполнение таких переводов в стандарте ERC-1155. Однако её обязательное присутствие увеличивает объём кода у приложений, которым такие функции не нужны:
// ERC-1155
function safeBatchTransferFrom(
address _from,
address _to,
uint256[] calldata _ids,
uint256[] calldata _values,
bytes calldata _data
) external;
Ниже представлена функция ERC-6909 transferFrom. Видно, что функция batch и параметр _data были удалены.
// ERC-6909
function transferFrom(
address sender,
address receiver,
uint256 id,
uint256 amount
) public returns (bool) {
if (sender != msg.sender && !isOperator[sender][msg.sender]) {
uint256 senderAllowance = allowance[sender][msg.sender][id];
if (senderAllowance < amount) revert InsufficientPermission();
if (senderAllowance != type(uint256).max) {
allowance[sender][msg.sender][id] = senderAllowance - amount;
}
}
if (balanceOf[sender][id] < amount) revert InsufficientBalance();
balanceOf[sender][id] -= amount;
balanceOf[receiver][id] += amount;
emit Transfer(msg.sender, sender, receiver, id, amount);
return true;
}
ERC-6909 поддерживает как глобальные разрешения, так и детализированные лимиты
// in ERC-1155 →
function setApprovalForAll(
address _operator,
bool _approved
) external;
Функция setApprovalForAll , показанная выше, реализует модель глобального оператора из стандарта ERC-1155. Она позволяет одному аккаунту авторизовать другой аккаунт для управления (в качестве оператора) всеми идентификаторами токенов от его имени. После авторизации оператор получает неограниченный доступ к переводу любых количеств любых токенов, принадлежащих авторизующему аккаунту.
Хотя этот подход упрощает делегирование прав, он не предоставляет возможности точного контроля:
1❤2
- Нет способа выдать разрешение на перевод конкретных идентификаторов токенов или определённых количеств.
- Такой "всё или ничего" подход не подходит для сценариев, где требуется гибкое управление разрешениями.
Для реализации более тонкого контроля, в ERC-6909 используется гибридная схема разрешений, которая включает:
- модель оператора из ERC-1155,
- и модель лимитов (allowance), вдохновлённую стандартом ERC-20.
Далее продолжим разговор о нюансах данного стандарта.
#eip6909
- Такой "всё или ничего" подход не подходит для сценариев, где требуется гибкое управление разрешениями.
Для реализации более тонкого контроля, в ERC-6909 используется гибридная схема разрешений, которая включает:
- модель оператора из ERC-1155,
- и модель лимитов (allowance), вдохновлённую стандартом ERC-20.
Далее продолжим разговор о нюансах данного стандарта.
#eip6909
👍6
Стандарт ERC-6909 Minimal Multi-Token Standard. Часть 2
Продолжаем знакомится с данным стандартом.
Модель оператора в ERC-6909
В функции ERC-6909 setOperator, показанной ниже, переменная spender устанавливается в качестве оператора и получает глобальные разрешения на передачу всех идентификаторов токенов, принадлежащих счету, без ограничений по разрешению.
Модель разрешений в ERC-6909
Модель разрешений (allowance model) представляет собой систему управления по конкретным токенам и суммам, в которой учетная запись может установить ограниченное количество разрешений для конкретного ID токена.
Например, Алиса может разрешить Бобу перевести 100 единиц токена с ID 42, не предоставляя доступа к другим токенам или неограниченным суммам, используя функцию одобрения в ERC-6909, показанную далее.
Переменная spender в approve - это учетная запись, уполномоченная переводить определенные суммы определенного id токена от имени владельца.
Например, владелец может разрешить spender переводить <= 100 единиц определенного ID токена. Кроме того, он может дать бесконечное разрешение на перевод определенного id токена, установив разрешение на type(uint256).max.
В ERC-6909 не указано, должны ли вычитаться надбавки, установленные в type(uint256).max, или нет. Это поведение оставлено на усмотрение исполнителя, аналогично ERC-20.
Основные структуры данных
Реализации ERC-6909 используют три маппинга для обновления состояния остатков на счетах и разрешений.
1. balanceOf: Баланс владельца id
Маппинг balanceOf отслеживает баланс определенного ID токена, принадлежащего определенному адресу (владельцу). Структура owner => (id => amount) в связке указывает на то, что один владелец может владеть несколькими токенами и отслеживать их баланс по соответствующим ID.
2. allowance: Разрешение на передачу токена
Маппинг allowance определяет, какое количество конкретного токена (ID) может передать spender от имени владельца. Это облегчает тонкий контроль над расходованием токенов.
3. isOperator: Статус утверждения оператора
Этот маппинг отслеживает, был ли spender утвержден в качестве оператора для всех токенов, принадлежащих адресу. Например, isOperator[0x123...][0xABC...] возвращает true, если адресу 0xABC... разрешено тратить токены, принадлежащие адресу 0x123...; в противном случае возвращается false.
Далее разберем функции.
#eip6909
Продолжаем знакомится с данным стандартом.
Модель оператора в ERC-6909
В функции ERC-6909 setOperator, показанной ниже, переменная spender устанавливается в качестве оператора и получает глобальные разрешения на передачу всех идентификаторов токенов, принадлежащих счету, без ограничений по разрешению.
function setOperator(address spender, bool approved) public returns (bool) {
isOperator[msg.sender][spender] = approved;
emit OperatorSet(msg.sender, spender, approved);
return true;
}Модель разрешений в ERC-6909
Модель разрешений (allowance model) представляет собой систему управления по конкретным токенам и суммам, в которой учетная запись может установить ограниченное количество разрешений для конкретного ID токена.
Например, Алиса может разрешить Бобу перевести 100 единиц токена с ID 42, не предоставляя доступа к другим токенам или неограниченным суммам, используя функцию одобрения в ERC-6909, показанную далее.
function approve(address spender, uint256 id, uint256 amount) public returns (bool) {
allowance[msg.sender][spender][id] = amount;
emit Approval(msg.sender, spender, id, amount);
return true;
}Переменная spender в approve - это учетная запись, уполномоченная переводить определенные суммы определенного id токена от имени владельца.
Например, владелец может разрешить spender переводить <= 100 единиц определенного ID токена. Кроме того, он может дать бесконечное разрешение на перевод определенного id токена, установив разрешение на type(uint256).max.
В ERC-6909 не указано, должны ли вычитаться надбавки, установленные в type(uint256).max, или нет. Это поведение оставлено на усмотрение исполнителя, аналогично ERC-20.
Основные структуры данных
Реализации ERC-6909 используют три маппинга для обновления состояния остатков на счетах и разрешений.
1. balanceOf: Баланс владельца id
Маппинг balanceOf отслеживает баланс определенного ID токена, принадлежащего определенному адресу (владельцу). Структура owner => (id => amount) в связке указывает на то, что один владелец может владеть несколькими токенами и отслеживать их баланс по соответствующим ID.
mapping(address owner => mapping(uint256 id => uint256 amount)) public balanceOf;
2. allowance: Разрешение на передачу токена
Маппинг allowance определяет, какое количество конкретного токена (ID) может передать spender от имени владельца. Это облегчает тонкий контроль над расходованием токенов.
mapping(address owner => mapping(address spender => mapping(uint256 id => uint256 amount))) public allowance;
3. isOperator: Статус утверждения оператора
mapping(address owner => mapping(address operator => bool isOperator)) public isOperator;
Этот маппинг отслеживает, был ли spender утвержден в качестве оператора для всех токенов, принадлежащих адресу. Например, isOperator[0x123...][0xABC...] возвращает true, если адресу 0xABC... разрешено тратить токены, принадлежащие адресу 0x123...; в противном случае возвращается false.
Далее разберем функции.
#eip6909
👍5❤2
Стандарт ERC-6909 Minimal Multi-Token Standard. Часть 3
На этой неделе поговорим о функциях в стандарте и некоторых моментах его использования.
1. transfer():
Функция перевода ERC-6909 ведет себя так же, как и трансфер ERC-20, за исключением того, что она применяется к конкретному идентификатору токена. Функция принимает адрес получателя, id токена и сумму для перевода в качестве входных параметров и обновляет балансы с помощью связки balanceOf. Как и в функции перевода ERC-20, необходимо вернуть true, если транзакция выполнена успешно:
2. transferFrom():
Функция transferFrom в ERC-6909 отличается от функции ERC-20 тем, что требует идентификатор токена. Кроме того, она проверяет наличие одобрения оператора в дополнение к разрешению.
Сначала функция проверяет, если (sender != msg.sender && !isOperator[sender][msg.sender]), гарантируя, что вызывающая сторона (msg.sender) является либо:
- Владелецем (отправителем), либо
- Одобренным оператором (isOperator[sender][msg.sender] == true).
Если отправитель msg.sender не является таковыми, то функция проверяет, достаточно ли у вызывающего абонента средств для перевода. Если резерв существует, но не установлен в неограниченное значение (type(uint256).max), то переведенная сумма вычитается из резерва.
Кроме того, в стандарте указано, что функция НЕ ДОЛЖНА вычитать сумму из резерва вызывающего абонента по идентификатору токена, если вызывающий абонент является оператором или отправителем.
3. approve():
Функция approve позволяет вызывающей стороне (msg.sender) предоставить определенное разрешение к ID спендеру. При этом обновляется маппинг, чтобы отразить новое состояние, и порождается событие Approval:
4. setOperator():
Функция setOperator позволяет вызывающей стороне (msg.sender) предоставить или отозвать разрешения оператора для определенного адреса (spender) от своего имени, установив параметр approved в true или false. Функция соответствующим образом обновляет отображение isOperator и порождает событие OperatorSet, чтобы уведомить внешних слушателей об изменении.
5. Events:
В стандарте предусмотрены три события для порождения в ключевых функциях:
#eip6909
На этой неделе поговорим о функциях в стандарте и некоторых моментах его использования.
1. transfer():
Функция перевода ERC-6909 ведет себя так же, как и трансфер ERC-20, за исключением того, что она применяется к конкретному идентификатору токена. Функция принимает адрес получателя, id токена и сумму для перевода в качестве входных параметров и обновляет балансы с помощью связки balanceOf. Как и в функции перевода ERC-20, необходимо вернуть true, если транзакция выполнена успешно:
function transfer(address receiver, uint256 id, uint256 amount) public returns (bool) {
if (balanceOf[msg.sender][id] < amount) revert InsufficientBalance(msg.sender, id);
balanceOf[msg.sender][id] -= amount;
balanceOf[receiver][id] += amount;
emit Transfer(msg.sender, msg.sender, receiver, id, amount);
return true;
}2. transferFrom():
Функция transferFrom в ERC-6909 отличается от функции ERC-20 тем, что требует идентификатор токена. Кроме того, она проверяет наличие одобрения оператора в дополнение к разрешению.
Сначала функция проверяет, если (sender != msg.sender && !isOperator[sender][msg.sender]), гарантируя, что вызывающая сторона (msg.sender) является либо:
- Владелецем (отправителем), либо
- Одобренным оператором (isOperator[sender][msg.sender] == true).
Если отправитель msg.sender не является таковыми, то функция проверяет, достаточно ли у вызывающего абонента средств для перевода. Если резерв существует, но не установлен в неограниченное значение (type(uint256).max), то переведенная сумма вычитается из резерва.
Кроме того, в стандарте указано, что функция НЕ ДОЛЖНА вычитать сумму из резерва вызывающего абонента по идентификатору токена, если вызывающий абонент является оператором или отправителем.
function transferFrom(address sender, address receiver, uint256 id, uint256 amount) public returns (bool) {
if (sender != msg.sender && !isOperator[sender][msg.sender]) {
uint256 senderAllowance = allowance[sender][msg.sender][id];
if (senderAllowance < amount) revert InsufficientPermission();
if (senderAllowance != type(uint256).max) {
allowance[sender][msg.sender][id] = senderAllowance - amount;
}
}
if (balanceOf[sender][id] < amount) revert InsufficientBalance();
balanceOf[sender][id] -= amount;
balanceOf[receiver][id] += amount;
emit Transfer(msg.sender, sender, receiver, id, amount);
return true;
}3. approve():
Функция approve позволяет вызывающей стороне (msg.sender) предоставить определенное разрешение к ID спендеру. При этом обновляется маппинг, чтобы отразить новое состояние, и порождается событие Approval:
function approve(address spender, uint256 id, uint256 amount) public returns (bool) {
allowance[msg.sender][spender][id] = amount;
emit Approval(msg.sender, spender, id, amount);
return true;
}4. setOperator():
Функция setOperator позволяет вызывающей стороне (msg.sender) предоставить или отозвать разрешения оператора для определенного адреса (spender) от своего имени, установив параметр approved в true или false. Функция соответствующим образом обновляет отображение isOperator и порождает событие OperatorSet, чтобы уведомить внешних слушателей об изменении.
function setOperator(address spender, bool approved) public returns (bool) {
isOperator[msg.sender][spender] = approved;
emit OperatorSet(msg.sender, spender, approved);
return true;
}5. Events:
В стандарте предусмотрены три события для порождения в ключевых функциях:
event Transfer(address caller, address indexed sender, address indexed receiver, uint256 indexed id, uint256 amount);
event OperatorSet(address indexed owner, address indexed spender, bool approved);
event Approval(address indexed owner, address indexed spender, uint256 indexed id, uint256 amount);
#eip6909
👍2
Стандарт ERC-6909 Minimal Multi-Token Standard. Часть 4
В последнем посте про этот стандарт поговорим о способах его применения.
Как Uniswap v4 PoolManager реализует ERC-6909?
В Uniswap третьей версии для каждой новой торговой пары создавался отдельный смарт-контракт через фабрику UniswapV3Factory. Это приводило к высоким комиссиям, поскольку развертывание нового контракта для каждого пула требовало дополнительных затрат газа.
Четвертая версия Uniswap кардинально изменила подход, внедрив единый управляющий контракт PoolManager.sol. Вместо создания отдельных контрактов для каждого пула, все операции теперь выполняются в рамках одного главного контракта, что существенно уменьшает затраты на создание новых торговых пар.
В предыдущих версиях сложные операции с участием нескольких пулов сопровождались множественными переводами токенов и дублирующими обновлениями данных. В Uniswap v4 применяется принципиально новая схема - токены хранятся в виде внутренних записей стандарта ERC-6909, что исключает необходимость физических переводов.
Пользователи по-прежнему могут выводить свои средства в виде стандартных ERC-20 токенов. Однако если активы остаются в протоколе, система использует их виртуальное представление по стандарту ERC-6909, что ускоряет операции и снижает комиссии. Такой подход позволяет совершать сделки без постоянного перемещения токенов между кошельками и контрактами.
При торговле между токенами A и B система просто изменяет соответствующие записи в рамках внутреннего учета, а не выполняет фактические переводы. Стоит отметить, что в Uniswap v4 стандарт ERC-6909 не применяется для токенов, представляющих долю в пуле ликвидности (LP-токены).
Метаданные ERC-6909 для синглтон-архитектур DeFi и NFT-коллекций
Интерфейс IERC6909Metadata определяет, как стандарт ERC-6909 связывает метаданные (name, symbols, decimals) с отдельными токенами.
Функции name, symbol и decimals могут изменяться в зависимости от id токена, позволяя разным токенам в рамках одного ERC-6909 контракта иметь уникальные параметры.
Для DeFi-протокола с несколькими LP-токенами может потребоваться стандартизация количества знаков после запятой (например, фиксированные 18 decimal), при этом названия и символы токенов должны отражать различные активы в пуле.
В случае с NFT (невзаимозаменяемыми токенами) значение decimals всегда должно быть равно 1, поскольку NFT неделимы.
В традиционных NFT-коллекциях (например, ERC-721) все токены используют одинаковые название и символ, представляющие коллекцию целиком (например, "CryptoPunks" с символом "PUNK"). Стандарт ERC-6909 позволяет сохранить подход ERC-721, где все NFT в коллекции разделяют общие метаданные.
Еще несколько интересных примеров с кодом вы можете посмотреть в оригинальной статье от RareSkills тут.
#eip6909
В последнем посте про этот стандарт поговорим о способах его применения.
Как Uniswap v4 PoolManager реализует ERC-6909?
В Uniswap третьей версии для каждой новой торговой пары создавался отдельный смарт-контракт через фабрику UniswapV3Factory. Это приводило к высоким комиссиям, поскольку развертывание нового контракта для каждого пула требовало дополнительных затрат газа.
Четвертая версия Uniswap кардинально изменила подход, внедрив единый управляющий контракт PoolManager.sol. Вместо создания отдельных контрактов для каждого пула, все операции теперь выполняются в рамках одного главного контракта, что существенно уменьшает затраты на создание новых торговых пар.
В предыдущих версиях сложные операции с участием нескольких пулов сопровождались множественными переводами токенов и дублирующими обновлениями данных. В Uniswap v4 применяется принципиально новая схема - токены хранятся в виде внутренних записей стандарта ERC-6909, что исключает необходимость физических переводов.
Пользователи по-прежнему могут выводить свои средства в виде стандартных ERC-20 токенов. Однако если активы остаются в протоколе, система использует их виртуальное представление по стандарту ERC-6909, что ускоряет операции и снижает комиссии. Такой подход позволяет совершать сделки без постоянного перемещения токенов между кошельками и контрактами.
При торговле между токенами A и B система просто изменяет соответствующие записи в рамках внутреннего учета, а не выполняет фактические переводы. Стоит отметить, что в Uniswap v4 стандарт ERC-6909 не применяется для токенов, представляющих долю в пуле ликвидности (LP-токены).
Метаданные ERC-6909 для синглтон-архитектур DeFi и NFT-коллекций
Интерфейс IERC6909Metadata определяет, как стандарт ERC-6909 связывает метаданные (name, symbols, decimals) с отдельными токенами.
Функции name, symbol и decimals могут изменяться в зависимости от id токена, позволяя разным токенам в рамках одного ERC-6909 контракта иметь уникальные параметры.
/// @notice Contains metadata about individual tokens.
interface IERC6909Metadata is IERC6909 {
/// @notice Name of a given token.
/// @param id The id of the token.
/// @return name The name of the token.
function name(uint256 id) external view returns (string memory);
/// @notice Symbol of a given token.
/// @param id The id of the token.
/// @return symbol The symbol of the token.
function symbol(uint256 id) external view returns (string memory);
/// @notice Decimals of a given token.
/// @param id The id of the token.
/// @return decimals The decimals of the token.
function decimals(uint256 id) external view returns (uint8);
}
Для DeFi-протокола с несколькими LP-токенами может потребоваться стандартизация количества знаков после запятой (например, фиксированные 18 decimal), при этом названия и символы токенов должны отражать различные активы в пуле.
В случае с NFT (невзаимозаменяемыми токенами) значение decimals всегда должно быть равно 1, поскольку NFT неделимы.
В традиционных NFT-коллекциях (например, ERC-721) все токены используют одинаковые название и символ, представляющие коллекцию целиком (например, "CryptoPunks" с символом "PUNK"). Стандарт ERC-6909 позволяет сохранить подход ERC-721, где все NFT в коллекции разделяют общие метаданные.
Еще несколько интересных примеров с кодом вы можете посмотреть в оригинальной статье от RareSkills тут.
#eip6909
👍3
Проект на виду. Часть 7. Обучение с нейронками
Вы, наверное, помните, что я уже пару-тройку месяцев интересуюсь языковыми моделями, автоматизированным программированием и всем, что с этим связано. Сегодня хочу обсудить, насколько эффективно можно учиться самостоятельно, используя только современные нейросети.
Я пробовал создавать небольшие проекты в Cursor на разных языках - Python, Rust, Java - с использованием соответствующих инструментов вроде Flask для Python. Поскольку я не знал этих языков, мне было интересно проверить, получится ли полноценно программировать, полагаясь только на нейросети. Результат оказался разочаровывающим - об этом я уже писал раньше.
После нескольких неудачных попыток разобраться в сгенерированном коде я решил попробовать другой подход: попросил нейросеть научить меня основам Python. Мой запрос был простым: "Ты преподаватель Python. У меня есть опыт в PHP и JavaScript, но о Python я не знаю ничего. Составь пять первых уроков для новичка с примерами кода и заданиями".
Нейросеть выдала уроки, которые на первый взгляд выглядели неплохо. Но тут я столкнулся с неожиданной проблемой: как понять, что программа обучения составлена правильно и ничего важного не упущено? Когда я спросил, какие ключевые моменты могли быть пропущены, нейросеть добавила несколько пунктов - например, про отсутствие точек с запятой и важность отступов в Python.
Однако чем больше я задавал уточняющих вопросов, тем больше запутывался. В конечном счете мне пришлось искать обычные учебные программы и видеоуроки, потому что нейросеть не смогла предоставить систематизированный подход к обучению.
Это подводит меня к важному выводу: когда вы не знаете предмета и не имеете четкого плана обучения, очень сложно чему-то научиться. Даже современные нейросети не могут заменить полноценного учебного курса.
Возникает вопрос: зачем вообще учить языки программирования, если нейросети могут писать код? Ответ прост: чтобы понимать, какой код перед вами - качественный или наполненный ненужными элементами вроде избыточного логирования, временных тестов или одноразовых библиотек.
То же самое касается и Solidity. Нейросеть может дать сжатый курс, где в первую же неделю будут и типы данных, и функции, и контракты. Но в web3-разработке важны нюансы - недостаточно просто знать о существовании тех или иных возможностей, нужно уметь их правильно применять.
В итоге получается, что языковые модели, при всей их эрудированности, пока не способны заменить полноценного преподавателя и хорошо структурированную учебную программу. Лучший способ их использовать - сначала изучать основы по проверенным источникам, а затем обращаться к нейросетям за разъяснением конкретных вопросов и дополнительными деталями.
Надеюсь, что скоро расскажу вам, чем я там таким интересным занимаюсь помимо аудитов смарт контрактов!
#offtop
Вы, наверное, помните, что я уже пару-тройку месяцев интересуюсь языковыми моделями, автоматизированным программированием и всем, что с этим связано. Сегодня хочу обсудить, насколько эффективно можно учиться самостоятельно, используя только современные нейросети.
Я пробовал создавать небольшие проекты в Cursor на разных языках - Python, Rust, Java - с использованием соответствующих инструментов вроде Flask для Python. Поскольку я не знал этих языков, мне было интересно проверить, получится ли полноценно программировать, полагаясь только на нейросети. Результат оказался разочаровывающим - об этом я уже писал раньше.
После нескольких неудачных попыток разобраться в сгенерированном коде я решил попробовать другой подход: попросил нейросеть научить меня основам Python. Мой запрос был простым: "Ты преподаватель Python. У меня есть опыт в PHP и JavaScript, но о Python я не знаю ничего. Составь пять первых уроков для новичка с примерами кода и заданиями".
Нейросеть выдала уроки, которые на первый взгляд выглядели неплохо. Но тут я столкнулся с неожиданной проблемой: как понять, что программа обучения составлена правильно и ничего важного не упущено? Когда я спросил, какие ключевые моменты могли быть пропущены, нейросеть добавила несколько пунктов - например, про отсутствие точек с запятой и важность отступов в Python.
Однако чем больше я задавал уточняющих вопросов, тем больше запутывался. В конечном счете мне пришлось искать обычные учебные программы и видеоуроки, потому что нейросеть не смогла предоставить систематизированный подход к обучению.
Это подводит меня к важному выводу: когда вы не знаете предмета и не имеете четкого плана обучения, очень сложно чему-то научиться. Даже современные нейросети не могут заменить полноценного учебного курса.
Возникает вопрос: зачем вообще учить языки программирования, если нейросети могут писать код? Ответ прост: чтобы понимать, какой код перед вами - качественный или наполненный ненужными элементами вроде избыточного логирования, временных тестов или одноразовых библиотек.
То же самое касается и Solidity. Нейросеть может дать сжатый курс, где в первую же неделю будут и типы данных, и функции, и контракты. Но в web3-разработке важны нюансы - недостаточно просто знать о существовании тех или иных возможностей, нужно уметь их правильно применять.
В итоге получается, что языковые модели, при всей их эрудированности, пока не способны заменить полноценного преподавателя и хорошо структурированную учебную программу. Лучший способ их использовать - сначала изучать основы по проверенным источникам, а затем обращаться к нейросетям за разъяснением конкретных вопросов и дополнительными деталями.
Надеюсь, что скоро расскажу вам, чем я там таким интересным занимаюсь помимо аудитов смарт контрактов!
#offtop
👍10❤1
Что-то кончается, что-то начинается
На прошлой неделе закончился 1 модуль курса. Он был существенно дополнен новыми уроками по EVM, кучей вопросов для самопроверки, а также небольшой социальной частью.
В самом начале модуля я рассказал участникам, что сейчас лучше всего искать работу через web3 сообщество, а именно в социальной сети Твиттер.
Вся жизнь web3 происходит именно там: свежие новости о хакерских атаках, полезные советы по Solidity, программы для начинающих разработчиков и, конечно же, вакансии. Гораздо проще получить первую работу, если вы активно ведёте аккаунт и делитесь полезным контентом (не говоря уже об аудиторах, которые благодаря участию в конкурсах получают огромный рост аудитории и стабильный доход).
Да и работодателям проще понять, подходите ли вы им, по вашим постам и активности, чем по сухому резюме.
Именно поэтому на модуле бонусом были посты про то, как вести свой аккаунт, а также некоторые личные рекомендации пользователей и компаний, за которыми интересно следить.
Вести блог или соцсети одновременно и легко, и сложно. Но именно это помогает вас заметить. Если вы меняете профессию — это отличный повод документировать свой путь. Так, например, появился и этот канал — мой личный опыт в web3 и Solidity.
Раскрутка аккаунта может занять больше года, и важно работать над этим ежедневно. Поэтому лучше начинать уже во время обучения, а не в конце, когда знания есть, а времени на развитие личного бренда уже нет.
Помните: ваш аккаунт — это ваша визитная карточка. Даже если сейчас у вас мало подписчиков, каждый пост — это вклад в вашу репутацию. Комментируйте новости, делитесь своими успехами и ошибками, задавайте вопросы экспертам. Так вы не только учитесь быстрее, но и обрастаете полезными связями.
Не ждите идеального момента — его не будет. Начните сегодня: напишите пост о том, что нового узнали, сделайте разбор интересного кейса или просто расскажите о своих целях. Со временем это превратится в мощный ресурс, который откроет вам двери в лучшие проекты.
Это было необычным бонусом на этом модуле, а на следующем - будет что-то новое!
P.S. Отдельный респект всем, кто узнал отсылку в заголовке поста!
#курс
На прошлой неделе закончился 1 модуль курса. Он был существенно дополнен новыми уроками по EVM, кучей вопросов для самопроверки, а также небольшой социальной частью.
В самом начале модуля я рассказал участникам, что сейчас лучше всего искать работу через web3 сообщество, а именно в социальной сети Твиттер.
Вся жизнь web3 происходит именно там: свежие новости о хакерских атаках, полезные советы по Solidity, программы для начинающих разработчиков и, конечно же, вакансии. Гораздо проще получить первую работу, если вы активно ведёте аккаунт и делитесь полезным контентом (не говоря уже об аудиторах, которые благодаря участию в конкурсах получают огромный рост аудитории и стабильный доход).
Да и работодателям проще понять, подходите ли вы им, по вашим постам и активности, чем по сухому резюме.
Именно поэтому на модуле бонусом были посты про то, как вести свой аккаунт, а также некоторые личные рекомендации пользователей и компаний, за которыми интересно следить.
Вести блог или соцсети одновременно и легко, и сложно. Но именно это помогает вас заметить. Если вы меняете профессию — это отличный повод документировать свой путь. Так, например, появился и этот канал — мой личный опыт в web3 и Solidity.
Раскрутка аккаунта может занять больше года, и важно работать над этим ежедневно. Поэтому лучше начинать уже во время обучения, а не в конце, когда знания есть, а времени на развитие личного бренда уже нет.
Помните: ваш аккаунт — это ваша визитная карточка. Даже если сейчас у вас мало подписчиков, каждый пост — это вклад в вашу репутацию. Комментируйте новости, делитесь своими успехами и ошибками, задавайте вопросы экспертам. Так вы не только учитесь быстрее, но и обрастаете полезными связями.
Не ждите идеального момента — его не будет. Начните сегодня: напишите пост о том, что нового узнали, сделайте разбор интересного кейса или просто расскажите о своих целях. Со временем это превратится в мощный ресурс, который откроет вам двери в лучшие проекты.
Это было необычным бонусом на этом модуле, а на следующем - будет что-то новое!
P.S. Отдельный респект всем, кто узнал отсылку в заголовке поста!
#курс
🔥15❤1
Программа Летнего модуля
Буквально через две недели планируется запуск продолжительного Летнего модуля, который в этот раз дополнится интенсивом по Foundry - программе для тестирования смарт контрактов, а также новыми задачами для тех, кто посчитает, что практические задания слишком легкие.
В этот раз модуль займет 3 месяца! Программа рассчитана на 11 недель интенсивного ежедневного обучения!
Сегодня будет представлена программа, а про стоимость вы узнаете завтра; она будет очень приятной!
Итак, программа Летнего модуля нашего курса:
Основные уроки
Неделя 1
1. Подготовка рабочего пространства
2. Плагины и настройки
3. Терминал, Node JS, NPM
4. Работа с GitHub
5. Стандарт ERC20. Разбор кода и EIP
Бонус: дополнительные практические задания
Неделя 2
6. ERC20 от Open Zeppelin
7. Свой токен и подключение OZ
8. ERC20. Особенности и разнообразие
9. ERC20. Проблемы безопасности
10. ERC721. Разбор кода и EIP
Бонус: задание - челлендж
Неделя 3
11. ERC721. Использование в проектах
12. ERC721. Проблемы безопасности
13. Подключение токенов в свой проект
14. Hardhat. Подключение и настройка
15. Hardhat. Подключение контрактов и чтение тестов
Бонус: задание - челлендж
Неделя 4
16. Foundry. Настройка и запуск
17. Foundry. Тесты
Промежуточный практикум 1 месяца
18. Стандарт ERC4626
19. Стандарт ERC4907
Бонус: задание - челлендж
Неделя 5
20. Стандарт ERC6551
21. Голландский аукцион
22. Multisig и Timelock
23. Commit/reveal
24. DAO и governance
Бонус: задание - челлендж
Неделя 6
25. Ролевая система в контрактах
26. File pattern
27. Структуры storage
28. Селекторы функций и поинтеры
29. Defi паттерн: стейкинг
Бонус: задание - челлендж
Неделя 7
30. Defi паттерн: ликвидации и займы
31. Базовая безопасность и аудит
Финальный практикум по основным темам
Интенсив по Foundry
Неделя 8
32. Установка Foundry: что входит в программу и для чего это нужно
33. Знакомство с cast командами. Чем они нужны и как работают
34. Сложные команды cast, которые пригодятся разработчику
35. Работа с chisel. Побитовые сдвиги и форк сети
36. Настройки Foundry: профили, библиотеки, пути
Неделя 9
37. Какие тесты бывают: правила написания и формирования папки проекта
38. Создание setUp() функции для удобного написания тестов. Роли пользователей, управление временем в тестах
39. Логика assert условий
40. Работа с ошибками и событиями в тестах
41. Логирование результатов теста и вывод в консоль
Неделя 10
42. Фазз тесты
43. Форк тесты. Интеграции с другими протоколами
44. Мутационные тесты
45. Тестирование подписей в контрактах
46. Деплой в разные сети. Написание простых скриптов
Неделя 11. Бонусные уроки
47. Интеграция с Hardhat
48. Хранение приватных ключей
49. Современные программы тестирования
50. Финальный практикум
Старт: ориентировочно 30 июня
Итого: 11 недель обучения, 50 уроков, 30+ практических заданий с кодом (написание контрактов, анализ и разбор, тесты), 60 продвинутых вопросов, которые могут задать на собеседовании, 3 практикума!
По традиции, ниже будет опрос, кто планирует присоединиться к данному модулю. Прошу проголосовать всех заинтересованных!
Приятного обучения!
#курс
Буквально через две недели планируется запуск продолжительного Летнего модуля, который в этот раз дополнится интенсивом по Foundry - программе для тестирования смарт контрактов, а также новыми задачами для тех, кто посчитает, что практические задания слишком легкие.
В этот раз модуль займет 3 месяца! Программа рассчитана на 11 недель интенсивного ежедневного обучения!
Сегодня будет представлена программа, а про стоимость вы узнаете завтра; она будет очень приятной!
Итак, программа Летнего модуля нашего курса:
Основные уроки
Неделя 1
1. Подготовка рабочего пространства
2. Плагины и настройки
3. Терминал, Node JS, NPM
4. Работа с GitHub
5. Стандарт ERC20. Разбор кода и EIP
Бонус: дополнительные практические задания
Неделя 2
6. ERC20 от Open Zeppelin
7. Свой токен и подключение OZ
8. ERC20. Особенности и разнообразие
9. ERC20. Проблемы безопасности
10. ERC721. Разбор кода и EIP
Бонус: задание - челлендж
Неделя 3
11. ERC721. Использование в проектах
12. ERC721. Проблемы безопасности
13. Подключение токенов в свой проект
14. Hardhat. Подключение и настройка
15. Hardhat. Подключение контрактов и чтение тестов
Бонус: задание - челлендж
Неделя 4
16. Foundry. Настройка и запуск
17. Foundry. Тесты
Промежуточный практикум 1 месяца
18. Стандарт ERC4626
19. Стандарт ERC4907
Бонус: задание - челлендж
Неделя 5
20. Стандарт ERC6551
21. Голландский аукцион
22. Multisig и Timelock
23. Commit/reveal
24. DAO и governance
Бонус: задание - челлендж
Неделя 6
25. Ролевая система в контрактах
26. File pattern
27. Структуры storage
28. Селекторы функций и поинтеры
29. Defi паттерн: стейкинг
Бонус: задание - челлендж
Неделя 7
30. Defi паттерн: ликвидации и займы
31. Базовая безопасность и аудит
Финальный практикум по основным темам
Интенсив по Foundry
Неделя 8
32. Установка Foundry: что входит в программу и для чего это нужно
33. Знакомство с cast командами. Чем они нужны и как работают
34. Сложные команды cast, которые пригодятся разработчику
35. Работа с chisel. Побитовые сдвиги и форк сети
36. Настройки Foundry: профили, библиотеки, пути
Неделя 9
37. Какие тесты бывают: правила написания и формирования папки проекта
38. Создание setUp() функции для удобного написания тестов. Роли пользователей, управление временем в тестах
39. Логика assert условий
40. Работа с ошибками и событиями в тестах
41. Логирование результатов теста и вывод в консоль
Неделя 10
42. Фазз тесты
43. Форк тесты. Интеграции с другими протоколами
44. Мутационные тесты
45. Тестирование подписей в контрактах
46. Деплой в разные сети. Написание простых скриптов
Неделя 11. Бонусные уроки
47. Интеграция с Hardhat
48. Хранение приватных ключей
49. Современные программы тестирования
50. Финальный практикум
Старт: ориентировочно 30 июня
Итого: 11 недель обучения, 50 уроков, 30+ практических заданий с кодом (написание контрактов, анализ и разбор, тесты), 60 продвинутых вопросов, которые могут задать на собеседовании, 3 практикума!
По традиции, ниже будет опрос, кто планирует присоединиться к данному модулю. Прошу проголосовать всех заинтересованных!
Приятного обучения!
#курс
🔥9
Кто точно планирует пойти на Летний модуль?
Final Results
50%
Я точно иду!
50%
Пропускаю (уже был, имею опыт, не хочу)
Какие знания нужны для прохождения Летнего модуля?
В прошлом году этот вопрос был одним из самых часто задаваемых перед стартом курса, поэтому сегодня я хочу подробнее осветить данный момент.
Весь курс, включая все три модуля, разработан специально для тех, кто только начинает свой путь в программировании. Несмотря на большой объем материала и интенсивный формат обучения, программа построена по принципу «от простого к сложному», что позволяет плавно осваивать новые темы.
Первый модуль посвящен фундаментальным основам языка: типам данных, наследованию, интерфейсам, работе с библиотеками и взаимодействию между контрактами. Эти знания станут надежной базой для перехода к Летнему модулю.
Курс также включает ключевые аспекты для начинающих разработчиков: настройку профессионального рабочего пространства (ведь, несмотря на удобство Remix IDE, реальные проекты требуют более серьезных инструментов), работу с GitHub и терминалом, изучение структуры стандартов токенов, NFT и других важных компонентов.
Можно ли его покупать, если сейчас только начинаешь свой путь?
Думаю, да.
Во-первых, даже на бесплатных уроках в YouTube можно быстро освоить азы, но для дальнейшего роста нужна системная подача материала.
Во-вторых, четкая структура модуля обеспечивает последовательное изучение тем с постепенным увеличением сложности.
В-третьих, критически важна практика: понимание теории — это лишь первый шаг, а умение применять знания на практике — ключевой навык, который вы разовьете в процессе обучения.
Кроме того, вместе в Летним модулем у вас будет возможность приобрести самый первый модуль для самостоятельного изучения, получив таким образом полный комплект материалов на все четыре месяца курса.
Не упустите последний шанс присоединиться — этот поток станет завершающим.
Старт программы запланирован на 30 июня!
Программа модуля
#курс
В прошлом году этот вопрос был одним из самых часто задаваемых перед стартом курса, поэтому сегодня я хочу подробнее осветить данный момент.
Весь курс, включая все три модуля, разработан специально для тех, кто только начинает свой путь в программировании. Несмотря на большой объем материала и интенсивный формат обучения, программа построена по принципу «от простого к сложному», что позволяет плавно осваивать новые темы.
Первый модуль посвящен фундаментальным основам языка: типам данных, наследованию, интерфейсам, работе с библиотеками и взаимодействию между контрактами. Эти знания станут надежной базой для перехода к Летнему модулю.
Курс также включает ключевые аспекты для начинающих разработчиков: настройку профессионального рабочего пространства (ведь, несмотря на удобство Remix IDE, реальные проекты требуют более серьезных инструментов), работу с GitHub и терминалом, изучение структуры стандартов токенов, NFT и других важных компонентов.
Можно ли его покупать, если сейчас только начинаешь свой путь?
Думаю, да.
Во-первых, даже на бесплатных уроках в YouTube можно быстро освоить азы, но для дальнейшего роста нужна системная подача материала.
Во-вторых, четкая структура модуля обеспечивает последовательное изучение тем с постепенным увеличением сложности.
В-третьих, критически важна практика: понимание теории — это лишь первый шаг, а умение применять знания на практике — ключевой навык, который вы разовьете в процессе обучения.
Кроме того, вместе в Летним модулем у вас будет возможность приобрести самый первый модуль для самостоятельного изучения, получив таким образом полный комплект материалов на все четыре месяца курса.
Не упустите последний шанс присоединиться — этот поток станет завершающим.
Старт программы запланирован на 30 июня!
Программа модуля
#курс
👍9
Про формат уроков и материалы модуля
Скоро стартуют продажи на Летний модуль курса по Solidity, и я хочу подробнее рассказать о формате обучения — это один из самых частых вопросов перед началом курса.
Летний модуль, как и другие, состоит из текстовых уроков с дополнительными материалами и практическими заданиями. Здесь нет видеолекций, которые растягивают простое объяснение на часы, жестких дедлайнов и обязательных созвонов, нервяков из-за того, что не успел к проверке. Вместо этого — четкие, структурированные материалы, которые вы изучаете в удобном темпе.
Текстовый формат дает гибкость — не нужно подстраиваться под расписание лекций. Учитесь утром, вечером или даже ночью. Он эффективнее, потому что текст позволяет быстро находить нужную информацию и возвращаться к сложным темам. А еще он фокусируется на практике — вместо пассивного просмотра видео вы сразу применяете знания в заданиях.
Я не оставляю учеников один на один с материалом. Вы всегда можете написать в общий чат курса — там помогаю я и другие участники. Или обратиться ко мне в личные сообщения — разберу сложные моменты детально.
Выпускники прошлых потоков подтвердят, что все уроки и задания остаются у вас бессрочно. Телеграм-канал и чаты не закрываются после окончания курса.
P.S. В следующем году откроется платформа — и все ученики получат бесплатный доступ к обновленным материалам.
Готовы учить Solidity без лишней суеты? Жду вас на Летнем модуле.
#курс
Скоро стартуют продажи на Летний модуль курса по Solidity, и я хочу подробнее рассказать о формате обучения — это один из самых частых вопросов перед началом курса.
Летний модуль, как и другие, состоит из текстовых уроков с дополнительными материалами и практическими заданиями. Здесь нет видеолекций, которые растягивают простое объяснение на часы, жестких дедлайнов и обязательных созвонов, нервяков из-за того, что не успел к проверке. Вместо этого — четкие, структурированные материалы, которые вы изучаете в удобном темпе.
Текстовый формат дает гибкость — не нужно подстраиваться под расписание лекций. Учитесь утром, вечером или даже ночью. Он эффективнее, потому что текст позволяет быстро находить нужную информацию и возвращаться к сложным темам. А еще он фокусируется на практике — вместо пассивного просмотра видео вы сразу применяете знания в заданиях.
Я не оставляю учеников один на один с материалом. Вы всегда можете написать в общий чат курса — там помогаю я и другие участники. Или обратиться ко мне в личные сообщения — разберу сложные моменты детально.
Выпускники прошлых потоков подтвердят, что все уроки и задания остаются у вас бессрочно. Телеграм-канал и чаты не закрываются после окончания курса.
P.S. В следующем году откроется платформа — и все ученики получат бесплатный доступ к обновленным материалам.
Готовы учить Solidity без лишней суеты? Жду вас на Летнем модуле.
#курс
👍20
Отличие этого Модуля: челленджи для решительных
Летний модуль является логичным продолжением первого, где вы освоили основы Solidity и создали свои первые смарт-контракты в Remix IDE. Теперь мы двигаемся дальше: переходим к профессиональным инструментам — выбираем редактор кода, изучаем GitHub и терминал, а затем постепенно углубляемся в работу с токенами, EIP и паттернами.
Этот модуль ориентирован на новичков, но также подходит и опытным разработчикам, которые хотят закрепить навыки или пополнить портфолио практическими задачами. Для тех, кто ищет дополнительную нагрузку, предусмотрены еженедельные челленджи.
Челлендж — это практическое задание, выходящее за рамки основных уроков. Каждую неделю вас ждет 5 задач на написание смарт-контрактов и 10 сложных вопросов, требующих глубокого понимания материала. Это не только отличный способ прокачать навыки, но и возможность собрать проекты, которые можно будет показать на собеседовании.
Всего за модуль вас ждет 7 челленджей — 35 практических задач и 70 вопросов, дополняющих основные задания после уроков.
Летний модуль я называю "практическим", потому что теория здесь сведена к необходимому минимуму — ровно столько, чтобы вы поняли, как что-то сделать. Но настоящие навыки вы получите только за практикой: садясь за компьютер и выполняя задания.
Здесь придется серьезно напрячь мозги — просто читать уроки и повторять готовые примеры не получится. Вам нужно будет вникать в суть и искать дополнительную информацию: анализировать документацию, проверять решения в нейросетях, обсуждать сложные моменты в чате и задавать вопросы. Только так вы разберетесь в нюансах и научитесь решать реальные задачи.
Если ваша цель — за год сменить профессию и быстро выйти на уровень уверенного разработчика смарт-контрактов, этот модуль станет для вас мощным ускорителем. Он даст не просто знания, а практические навыки, которые можно сразу применять в работе. Готовы к интенсивному погружению? Тогда вперёд!
Программа модуля
Старт: 30 июня
#курс
Летний модуль является логичным продолжением первого, где вы освоили основы Solidity и создали свои первые смарт-контракты в Remix IDE. Теперь мы двигаемся дальше: переходим к профессиональным инструментам — выбираем редактор кода, изучаем GitHub и терминал, а затем постепенно углубляемся в работу с токенами, EIP и паттернами.
Этот модуль ориентирован на новичков, но также подходит и опытным разработчикам, которые хотят закрепить навыки или пополнить портфолио практическими задачами. Для тех, кто ищет дополнительную нагрузку, предусмотрены еженедельные челленджи.
Челлендж — это практическое задание, выходящее за рамки основных уроков. Каждую неделю вас ждет 5 задач на написание смарт-контрактов и 10 сложных вопросов, требующих глубокого понимания материала. Это не только отличный способ прокачать навыки, но и возможность собрать проекты, которые можно будет показать на собеседовании.
Всего за модуль вас ждет 7 челленджей — 35 практических задач и 70 вопросов, дополняющих основные задания после уроков.
Летний модуль я называю "практическим", потому что теория здесь сведена к необходимому минимуму — ровно столько, чтобы вы поняли, как что-то сделать. Но настоящие навыки вы получите только за практикой: садясь за компьютер и выполняя задания.
Здесь придется серьезно напрячь мозги — просто читать уроки и повторять готовые примеры не получится. Вам нужно будет вникать в суть и искать дополнительную информацию: анализировать документацию, проверять решения в нейросетях, обсуждать сложные моменты в чате и задавать вопросы. Только так вы разберетесь в нюансах и научитесь решать реальные задачи.
Если ваша цель — за год сменить профессию и быстро выйти на уровень уверенного разработчика смарт-контрактов, этот модуль станет для вас мощным ускорителем. Он даст не просто знания, а практические навыки, которые можно сразу применять в работе. Готовы к интенсивному погружению? Тогда вперёд!
Программа модуля
Старт: 30 июня
#курс
🔥12❤1
Вайб кодинг и модуль
Нейронные сети активно развиваются, но их возможности в генерации качественного кода пока далеки от идеала. Особенно это заметно в Solidity, где каждая строка кода должна быть продумана с учетом безопасности и эффективности. Нейронки часто выдают решения, которые на первый взгляд выглядят корректно, но содержат глупые ошибки — от пропущенных модификаторов до неочевидных уязвимостей. Даже опытный разработчик может потратить время на анализ такого кода, не говоря уже о новичках.
На Летнем модуле я не учу работать с нейронными сетями, потому что главная цель — дать вам глубокое понимание Solidity, а не инструментов, которые его генерируют. Однако тут не запрещено их использование, так как это часть современной разработки. Важно научиться критически оценивать сгенерированный код, находить в нем слабые места и исправлять их. Только так можно превратить сырой результат нейронки в надежный и безопасный смарт-контракт.
Практика с Foundry включена в программу не случайно. Этот инструмент позволяет вам самостоятельно тестировать контракты, в том числе те, что созданы нейронными сетями. Вы научитесь писать тесты, проверять логику работы и выявлять скрытые проблемы. Это ключевой навык, который поможет вам не только в текущих заданиях, но и в реальных проектах, где ошибки могут стоить больших денег.
Использование сетей для выполнения задач — это не плохо, если подходить к процессу осознанно. Когда вы публикуете свой код в чат или присылаете его на проверку, вы получаете обратную связь, которая помогает вам понять, где нейронка ошиблась и как можно улучшить результат. Такой подход развивает вашу способность анализировать код и отличать рабочие решения от потенциально опасных.
Главное преимущество этого формата обучения — вы учитесь на практике. Вместо абстрактных советов вы получаете конкретные примеры, разбираете их и сразу применяете знания. Это делает процесс более эффективным, поскольку вы не просто запоминаете теорию, а учитесь думать как разработчик.
Курс построен так, чтобы вы могли уверенно работать с Solidity независимо от того, используете вы нейронные сети или нет. Вы научитесь проверять код, писать тесты и понимать, как должен выглядеть качественный смарт-контракт. В результате вы сможете создавать надежные решения, а не просто полагаться на автоматизированные инструменты, чьи ошибки могут дорого обойтись.
Программа модуля
Старт: 30 июня
#курс
Нейронные сети активно развиваются, но их возможности в генерации качественного кода пока далеки от идеала. Особенно это заметно в Solidity, где каждая строка кода должна быть продумана с учетом безопасности и эффективности. Нейронки часто выдают решения, которые на первый взгляд выглядят корректно, но содержат глупые ошибки — от пропущенных модификаторов до неочевидных уязвимостей. Даже опытный разработчик может потратить время на анализ такого кода, не говоря уже о новичках.
На Летнем модуле я не учу работать с нейронными сетями, потому что главная цель — дать вам глубокое понимание Solidity, а не инструментов, которые его генерируют. Однако тут не запрещено их использование, так как это часть современной разработки. Важно научиться критически оценивать сгенерированный код, находить в нем слабые места и исправлять их. Только так можно превратить сырой результат нейронки в надежный и безопасный смарт-контракт.
Практика с Foundry включена в программу не случайно. Этот инструмент позволяет вам самостоятельно тестировать контракты, в том числе те, что созданы нейронными сетями. Вы научитесь писать тесты, проверять логику работы и выявлять скрытые проблемы. Это ключевой навык, который поможет вам не только в текущих заданиях, но и в реальных проектах, где ошибки могут стоить больших денег.
Использование сетей для выполнения задач — это не плохо, если подходить к процессу осознанно. Когда вы публикуете свой код в чат или присылаете его на проверку, вы получаете обратную связь, которая помогает вам понять, где нейронка ошиблась и как можно улучшить результат. Такой подход развивает вашу способность анализировать код и отличать рабочие решения от потенциально опасных.
Главное преимущество этого формата обучения — вы учитесь на практике. Вместо абстрактных советов вы получаете конкретные примеры, разбираете их и сразу применяете знания. Это делает процесс более эффективным, поскольку вы не просто запоминаете теорию, а учитесь думать как разработчик.
Курс построен так, чтобы вы могли уверенно работать с Solidity независимо от того, используете вы нейронные сети или нет. Вы научитесь проверять код, писать тесты и понимать, как должен выглядеть качественный смарт-контракт. В результате вы сможете создавать надежные решения, а не просто полагаться на автоматизированные инструменты, чьи ошибки могут дорого обойтись.
Программа модуля
Старт: 30 июня
#курс
🔥5👍3
Личный ассистент, Cursor и все остальное
Бомбит меня уже неделю, и я ждал окончание запуска модуля, чтобы поделиться с вами своей работой.
Около месяца назад я решил написать своего собственного ассистента для аудита смарт контрактов: скачать модель LLM, обучить ее нужным мне материалам и затем использовать в работе.
P.S. Отмечу, что это планируется именно как ассистент, а не как анализатор кода, который сам может находить баги.
Для ускорения процесса я решил использовать Cursor с Claude 4 и ChatGPT для написания Python скриптов, так как полагал, что огромное количество информации в сети, обилие библиотек и решений на stackoverflow по этому языку, должны помочь создавать код быстро и сразу.
Одной из задач было выделение текстовой информации из PDF файлов. И это именно то, что заставляет меня сейчас писать этот пост!
Сколько существует формат pdf? Сколько python? Какого уровня достигли AI?
Это вообще ничего не значит, если тебе надо просто взять текст из PDF, в которых могут быть представлены примеры кода Solidity. 99% решений, скриптов, библиотек оказываются абсолютно не подходящими для выполнения задач!
Я испробовал: pymupdf, pdfplumber, pdftotext, pdf2image, pdfminer. С каждой из этих библиотек нейронки божились, что это лучшее решение на рынке и оно точно сработает. И ничего!
Последней каплей со скриптами было pdf2htmlex. ChatGPT уверял, что это лучшее решение. Даже лучше предыдущих! А когда я узнал, что поддержка библиотеки была прекращена еще в 2018 году и написал об этом в чат, знаете, что модель мне выдала: "Ой, да вы правы, это устаревшее и не сработает...". Ну, вот нельзя ли было сразу об этом написать?!
Но я же упорный! Мне нужно перевести файлы из PDF в markdown, я искал другие варианты...
По рекомендации тех же "умных" ИИ я пошел качать Donut, PaddleOCR, TrOCR, Tesseract с их навороченным OCR-подходом.
И снова мимо! Текст еще более-менее распознают, но с Solidity кодом просто беда! Пропущенные типы данных, скобки, области видимости и т.д. Код получается абсолютно не читаемым!
И это блин современные решения!
Далее были одни из самых продвинутых подходом: MarkedItDown, Markdown и еще пара. И я... просто пока не знаю, что делать!
Простая идея с конвертированием pdf становится камнем преткновения...
К чему я это все рассказываю?
Не говоря уже о Solidity, нейронные сети еще долго не смогут заменить программистов и создавать 100% работающие решения.
Они могут создавать фронтенд сайтов. Но таких сайтов, какие они сами знают. Попробуйте отредактировать их результат или объяснить им, что вы хотите. И тут вы потратите гораздо больше времени, чем если бы писали код сами.
А бекенд? Простые решения для записи данных в mysql и запуск простого сервера еще куда не шло. Но более сложные запросы ставят их в ступор.
И самое плохое то, что они вообще не гарантируют и сами не знают, будет ли их код работать в рамках вашего проекта.
Сети обучаются на на выполнении конкретных задач, а на паттернах языкового кода. А вот хороший этот код или нет, мы не знаем.
Кроме того, они обучены предлагать самые популярные библиотеки и решения. И не важно, поддерживаются они еще или нет.
Все это делает разработку "без знаний" абсолютно не рабочим процессом.
Вам реально самим нужно контролировать работу нейронок и понимать, когда они делают то, что нужно, а когда их несет в противоположную сторону.
Будьте аккуратны в своих проектах при использовании сетей. Изучайте проблему сами и ищите решения сами, прежде, чем будете консультироваться с нейронками по поводу кода.
#offtop
Бомбит меня уже неделю, и я ждал окончание запуска модуля, чтобы поделиться с вами своей работой.
Около месяца назад я решил написать своего собственного ассистента для аудита смарт контрактов: скачать модель LLM, обучить ее нужным мне материалам и затем использовать в работе.
P.S. Отмечу, что это планируется именно как ассистент, а не как анализатор кода, который сам может находить баги.
Для ускорения процесса я решил использовать Cursor с Claude 4 и ChatGPT для написания Python скриптов, так как полагал, что огромное количество информации в сети, обилие библиотек и решений на stackoverflow по этому языку, должны помочь создавать код быстро и сразу.
Одной из задач было выделение текстовой информации из PDF файлов. И это именно то, что заставляет меня сейчас писать этот пост!
Сколько существует формат pdf? Сколько python? Какого уровня достигли AI?
Это вообще ничего не значит, если тебе надо просто взять текст из PDF, в которых могут быть представлены примеры кода Solidity. 99% решений, скриптов, библиотек оказываются абсолютно не подходящими для выполнения задач!
Я испробовал: pymupdf, pdfplumber, pdftotext, pdf2image, pdfminer. С каждой из этих библиотек нейронки божились, что это лучшее решение на рынке и оно точно сработает. И ничего!
Последней каплей со скриптами было pdf2htmlex. ChatGPT уверял, что это лучшее решение. Даже лучше предыдущих! А когда я узнал, что поддержка библиотеки была прекращена еще в 2018 году и написал об этом в чат, знаете, что модель мне выдала: "Ой, да вы правы, это устаревшее и не сработает...". Ну, вот нельзя ли было сразу об этом написать?!
Но я же упорный! Мне нужно перевести файлы из PDF в markdown, я искал другие варианты...
По рекомендации тех же "умных" ИИ я пошел качать Donut, PaddleOCR, TrOCR, Tesseract с их навороченным OCR-подходом.
И снова мимо! Текст еще более-менее распознают, но с Solidity кодом просто беда! Пропущенные типы данных, скобки, области видимости и т.д. Код получается абсолютно не читаемым!
И это блин современные решения!
Далее были одни из самых продвинутых подходом: MarkedItDown, Markdown и еще пара. И я... просто пока не знаю, что делать!
Простая идея с конвертированием pdf становится камнем преткновения...
К чему я это все рассказываю?
Не говоря уже о Solidity, нейронные сети еще долго не смогут заменить программистов и создавать 100% работающие решения.
Они могут создавать фронтенд сайтов. Но таких сайтов, какие они сами знают. Попробуйте отредактировать их результат или объяснить им, что вы хотите. И тут вы потратите гораздо больше времени, чем если бы писали код сами.
А бекенд? Простые решения для записи данных в mysql и запуск простого сервера еще куда не шло. Но более сложные запросы ставят их в ступор.
И самое плохое то, что они вообще не гарантируют и сами не знают, будет ли их код работать в рамках вашего проекта.
Сети обучаются на на выполнении конкретных задач, а на паттернах языкового кода. А вот хороший этот код или нет, мы не знаем.
Кроме того, они обучены предлагать самые популярные библиотеки и решения. И не важно, поддерживаются они еще или нет.
Все это делает разработку "без знаний" абсолютно не рабочим процессом.
Вам реально самим нужно контролировать работу нейронок и понимать, когда они делают то, что нужно, а когда их несет в противоположную сторону.
Будьте аккуратны в своих проектах при использовании сетей. Изучайте проблему сами и ищите решения сами, прежде, чем будете консультироваться с нейронками по поводу кода.
#offtop
🔥11❤4👍1
Где следить на новостями в Твиттер?
Я давно планировал опубликовать новый пост с персональными рекомендациями аккаунтов в Twitter (X), за которыми стоит следить, чтобы оставаться в курсе новостей web3.
За последние год-два многие достойные авторы либо сократили активность, перейдя в пассивный режим, либо сосредоточились исключительно на рекламном контенте.
Нередко приходится сталкиваться с однообразными репостами материалов, которые были актуальны год назад, но теперь подаются как "новое открытие" или "лучшая статья на тему". Также участились посты в духе "Аудит — это полезно всем! Пишите, если хотите приобрести мои услуги".
В результате осталось не так много аккаунтов, которые регулярно публикуют качественный контент без избыточной саморекламы и бессмысленных репостов.
Полтора года назад я делал более масштабную подборку, с которой можно ознакомиться здесь:
https://news.1rj.ru/str/solidityset/982
Сейчас же хочу поделиться списком пользователей (не компаний), за которыми слежу лично и чьи публикации нахожу действительно интересными. Этот список будет постепенно дополняться и обновляться.
Если у вас есть свои рекомендации — буду рад увидеть их в комментариях.
Итак, поехали:
1. https://x.com/0xMackenzieM - Тут сотрудник bug bounty платформы (там, где белые хакеры ищут уязвимости в коде) проводит разборы профилей других пользователей. Советы очень дельные.
2. https://x.com/PatrickAlphaC - вероятно один из самых видных разработчиков, аудиторов, креаторов в web3. Именно он создал 40 часовой курс по Solidity на Ютуб, платформу для аудиторов - CodeHawks, обучающую платформу - Updraft и много чего еще. На канале он выкладывает много интересных постов и роликов, которые всегда собирают много реакций.
3. https://x.com/pashovkrum - Пашов - один из самых популярных аудиторов, который начинал с конкурсных площадок еще в 2022 году. Набрал популярность, перешел в соло аудиты, потом запустил свою компанию.
Он хорош тем, что с недавнего времени начал предлагать иногда программы для интернов аудиторов, где вы можете работать бок о бок с крупными профессионалами и еще получать за это зарплату.
4. https://x.com/realgmhacker - Белый хакер, глава отдела безопасности в Immunefi, учитель в RareSkills - все это только вершина его достижений. Публикует новости, разборы, порой расследования в крипто сфере. Много интересных статей я нашел именно по его рекомендациям.
5. https://x.com/PaulRBerg - основатель протокола Sablier. Не смотря на то, что он частенько делает посты про биохакинг и здоровый образ жизни (это я лично сам не очень люблю), он также пишет о Solidity и его нюансах, а также про программу тестирования смарт контрактов - Foundry.
6. https://x.com/DevDacian - Он работает вместе с Патриком Коллинсом в компании Cyfrin. Часто выкладывает свои обучающие статьи, сниппеты кода и рассказывает обо всех обновлениях в Cyfrin проектах: CodeHawks - для аудиторов, Updraft - обучающие курсы, Solodit - сборник багов и уязвимостей.
7. https://x.com/real_philogy - один из немногих пользователей в сети, которого можно назвать "разработчик до мозга костей"! Он прекрасно знает и понимает как работает весь Эфириум, Solidity, EVM, assembly и опкоды и много чего еще. Его посты могут вводить в ступор даже бывалых разработчиков смарт контрактов.
8. https://x.com/gakonst - еще один невероятный разработчик и видный деятель в мире web3. Во-первых, он один из глав (CTO) такой компании как Paradigm, которая инвестирует в крутые проекты в сфере блокчейна. Во-вторых, CEO другой компании Ithaca - акселератора для стартап компаний. Ну, и в-третьих, он один из основных разработчиков среды для тестирования смарт контрактов Foundry, а также Reth - программы для организации узла Эфириума.
9. https://x.com/uttam_singhk - Один из немногих разработчиков индийского/пакистанского происхождения, которого можно без сомнения рекомендовать. Мне нравятся его показательные видео, интересные посты и лайфхаки. Он один из первых, кто делал подробные разборы обновления блокчейна Pectra и делился своими взглядами на этот процесс.
Я давно планировал опубликовать новый пост с персональными рекомендациями аккаунтов в Twitter (X), за которыми стоит следить, чтобы оставаться в курсе новостей web3.
За последние год-два многие достойные авторы либо сократили активность, перейдя в пассивный режим, либо сосредоточились исключительно на рекламном контенте.
Нередко приходится сталкиваться с однообразными репостами материалов, которые были актуальны год назад, но теперь подаются как "новое открытие" или "лучшая статья на тему". Также участились посты в духе "Аудит — это полезно всем! Пишите, если хотите приобрести мои услуги".
В результате осталось не так много аккаунтов, которые регулярно публикуют качественный контент без избыточной саморекламы и бессмысленных репостов.
Полтора года назад я делал более масштабную подборку, с которой можно ознакомиться здесь:
https://news.1rj.ru/str/solidityset/982
Сейчас же хочу поделиться списком пользователей (не компаний), за которыми слежу лично и чьи публикации нахожу действительно интересными. Этот список будет постепенно дополняться и обновляться.
Если у вас есть свои рекомендации — буду рад увидеть их в комментариях.
Итак, поехали:
1. https://x.com/0xMackenzieM - Тут сотрудник bug bounty платформы (там, где белые хакеры ищут уязвимости в коде) проводит разборы профилей других пользователей. Советы очень дельные.
2. https://x.com/PatrickAlphaC - вероятно один из самых видных разработчиков, аудиторов, креаторов в web3. Именно он создал 40 часовой курс по Solidity на Ютуб, платформу для аудиторов - CodeHawks, обучающую платформу - Updraft и много чего еще. На канале он выкладывает много интересных постов и роликов, которые всегда собирают много реакций.
3. https://x.com/pashovkrum - Пашов - один из самых популярных аудиторов, который начинал с конкурсных площадок еще в 2022 году. Набрал популярность, перешел в соло аудиты, потом запустил свою компанию.
Он хорош тем, что с недавнего времени начал предлагать иногда программы для интернов аудиторов, где вы можете работать бок о бок с крупными профессионалами и еще получать за это зарплату.
4. https://x.com/realgmhacker - Белый хакер, глава отдела безопасности в Immunefi, учитель в RareSkills - все это только вершина его достижений. Публикует новости, разборы, порой расследования в крипто сфере. Много интересных статей я нашел именно по его рекомендациям.
5. https://x.com/PaulRBerg - основатель протокола Sablier. Не смотря на то, что он частенько делает посты про биохакинг и здоровый образ жизни (это я лично сам не очень люблю), он также пишет о Solidity и его нюансах, а также про программу тестирования смарт контрактов - Foundry.
6. https://x.com/DevDacian - Он работает вместе с Патриком Коллинсом в компании Cyfrin. Часто выкладывает свои обучающие статьи, сниппеты кода и рассказывает обо всех обновлениях в Cyfrin проектах: CodeHawks - для аудиторов, Updraft - обучающие курсы, Solodit - сборник багов и уязвимостей.
7. https://x.com/real_philogy - один из немногих пользователей в сети, которого можно назвать "разработчик до мозга костей"! Он прекрасно знает и понимает как работает весь Эфириум, Solidity, EVM, assembly и опкоды и много чего еще. Его посты могут вводить в ступор даже бывалых разработчиков смарт контрактов.
8. https://x.com/gakonst - еще один невероятный разработчик и видный деятель в мире web3. Во-первых, он один из глав (CTO) такой компании как Paradigm, которая инвестирует в крутые проекты в сфере блокчейна. Во-вторых, CEO другой компании Ithaca - акселератора для стартап компаний. Ну, и в-третьих, он один из основных разработчиков среды для тестирования смарт контрактов Foundry, а также Reth - программы для организации узла Эфириума.
9. https://x.com/uttam_singhk - Один из немногих разработчиков индийского/пакистанского происхождения, которого можно без сомнения рекомендовать. Мне нравятся его показательные видео, интересные посты и лайфхаки. Он один из первых, кто делал подробные разборы обновления блокчейна Pectra и делился своими взглядами на этот процесс.
🔥8
10. https://x.com/0xOwenThurm - известный аудитор смарт-контрактов, основатель компании Guardian, а также автор блога и образовательных видео по блокчейн-безопасности. На мой взгляд, он сочетает в себе черты аудитора Пашова (о котором я рассказывал ранее) и Патрика Коллинза — эксперта в области разработки и безопасности.
11. https://x.com/RareSkills_io - RareSkills — это команда экспертов, которая помогает делать блокчейн-технологии безопаснее. Они как "детективы" в мире криптовалют — разбирают случаи взломов, находят уязвимости в смарт-контрактах и объясняют, как их избежать. Особенно много работают
12. https://x.com/zachxbt - ZachXBT — один из самых известных крипто-расследователей в Twitter, специализирующийся на разоблачении мошенничеств и расследовании хакерских атак в блокчейн-пространстве. Он заслужил репутацию «криптодетектива» благодаря своим глубоким расследованиям, где тщательно анализирует транзакции в блокчейне, связывает кошельки мошенников и раскрывает схемы отмывания средств. ZachXBT не только публикует разоблачительные треды, но и помогает пострадавшим, а его расследования нередко приводят к реальным юридическим последствиям для злоумышленников.
Как я уже сказал, список будет добавляться и обновляться со временем.
Всем хорошего дня!
#twitter
11. https://x.com/RareSkills_io - RareSkills — это команда экспертов, которая помогает делать блокчейн-технологии безопаснее. Они как "детективы" в мире криптовалют — разбирают случаи взломов, находят уязвимости в смарт-контрактах и объясняют, как их избежать. Особенно много работают
12. https://x.com/zachxbt - ZachXBT — один из самых известных крипто-расследователей в Twitter, специализирующийся на разоблачении мошенничеств и расследовании хакерских атак в блокчейн-пространстве. Он заслужил репутацию «криптодетектива» благодаря своим глубоким расследованиям, где тщательно анализирует транзакции в блокчейне, связывает кошельки мошенников и раскрывает схемы отмывания средств. ZachXBT не только публикует разоблачительные треды, но и помогает пострадавшим, а его расследования нередко приводят к реальным юридическим последствиям для злоумышленников.
Как я уже сказал, список будет добавляться и обновляться со временем.
Всем хорошего дня!
1🔥15
Нейронки и Foundry
В то время как одни аудиторы кричат о том, что AI никогда не заменит "настоящего безопасника" и стыдят остальных за их использование, другие - приспосабливают этот инструмент свою работу и повышают эффективность.
Недавно на просторах Твиттер встретил интересный пост, в котором аудитор предлагает промт для нейронки, который направлен на изменение теста Foundry в протоколе и поиске потенциальных проблем. Вот он:
Iteratively modify this foundry test to explore edge cases until the cli command `forge test` shows a loss-of-funds or balance mismatch. After each run, analyze output, tweak the test, and repeat. Stop when a vulnerability is triggered.
Что в переводе:
Итеративно изменяйте этот тест foundry, исследуя крайние случаи, пока команда cli `forge test` не покажет потерю средств или несоответствие баланса. После каждого запуска анализируйте результаты, настраивайте тест и повторяйте. Остановись, когда обнаружится уязвимость.
Достаточно необычный вариант написания тестов и проверки некоторых случаев function flow на потенциальные проблемы.
Не знаю, на сколько это действительно эффективно, однако уверен, что нейронка может, как минимум, подсказать несколько таких сценариев, какие вообще не были предусмотрены разработчиками изначально.
Хочу обратить ваше внимание на то, что даже в этом случае AI выступает инструментом аудитора, а не его заменителем. Т.е. не получится запустить задачу и просто ждать результатов. От вас потребуется валидировать буквально каждую попытку AI.
В скором времени точно появятся инструменты на основе нейронных сетей, которые будут обучены на разных профессиональных тестах, и которые будут предлагать различные сценарии, которые разработчикам следует проверить перед релизом.
#foundry #ai
В то время как одни аудиторы кричат о том, что AI никогда не заменит "настоящего безопасника" и стыдят остальных за их использование, другие - приспосабливают этот инструмент свою работу и повышают эффективность.
Недавно на просторах Твиттер встретил интересный пост, в котором аудитор предлагает промт для нейронки, который направлен на изменение теста Foundry в протоколе и поиске потенциальных проблем. Вот он:
Iteratively modify this foundry test to explore edge cases until the cli command `forge test` shows a loss-of-funds or balance mismatch. After each run, analyze output, tweak the test, and repeat. Stop when a vulnerability is triggered.
Что в переводе:
Итеративно изменяйте этот тест foundry, исследуя крайние случаи, пока команда cli `forge test` не покажет потерю средств или несоответствие баланса. После каждого запуска анализируйте результаты, настраивайте тест и повторяйте. Остановись, когда обнаружится уязвимость.
Достаточно необычный вариант написания тестов и проверки некоторых случаев function flow на потенциальные проблемы.
Не знаю, на сколько это действительно эффективно, однако уверен, что нейронка может, как минимум, подсказать несколько таких сценариев, какие вообще не были предусмотрены разработчиками изначально.
Хочу обратить ваше внимание на то, что даже в этом случае AI выступает инструментом аудитора, а не его заменителем. Т.е. не получится запустить задачу и просто ждать результатов. От вас потребуется валидировать буквально каждую попытку AI.
В скором времени точно появятся инструменты на основе нейронных сетей, которые будут обучены на разных профессиональных тестах, и которые будут предлагать различные сценарии, которые разработчикам следует проверить перед релизом.
#foundry #ai
🔥8💯2
Перерыв на канале из-за обучения
Как вам известно, я уже продолжительное время занимаюсь разработкой собственного ассистента на основе локальной нейронной сети. В процессе работы я столкнулся с большим объемом информации, и теперь мне необходимо систематизировать эти знания, чтобы двигаться дальше.
Для этого я решил взять небольшую паузу на одну-две недели, чтобы полностью сосредоточиться на изучении интеграции локальных LLM-моделей. На это время я оставляю только поддержку учеников модуля, а все остальные задачи — аудиты, разработку и анализ отчетов — временно приостанавливаю.
За последнее время я успел познакомиться с возможностями LLM, которые способны серьезно повлиять не только на разработку и тестирование смарт-контрактов, но и на их математические модели и сложную архитектуру. В ближайшем будущем появятся решения, автоматизирующие создание тестов в Foundry с проверкой всех возможных сценариев выполнения функций и логических потоков. Кроме того, нейросети смогут анализировать инварианты математических расчетов, выполняя сотни тысяч итераций, и помогать выявлять серьезные уязвимости уровня Med или High.
Примечательно, что это будут не массовые коммерческие модели вроде ChatGPT, Claude или Gemini, а специализированные локальные решения, оптимизированные под конкретные задачи. Крупные компании вряд ли в ближайшие годы будут заниматься узкой настройкой своих продуктов для отдельных областей, поскольку их основная цель — конкуренция на глобальном рынке.
Моя задача — научиться отличать действительно полезные проекты от поверхностных решений, которые представляют собой всего лишь обертку над API популярных нейросетей. В ходе обучения я планирую разобраться в настройках моделей, их разновидностях, бенчмарках, библиотеках для работы с ними, а также в таких темах, как квантизация и оптимизация производительности.
В скором времени мы вернемся к изучению Solidity и актуальных трендов в этой области — у меня уже есть несколько интересных тем для обсуждения. Желаю вам продуктивной недели и отличного настроения!
Всем хорошего настроения и приятной недели!
#offtop
Как вам известно, я уже продолжительное время занимаюсь разработкой собственного ассистента на основе локальной нейронной сети. В процессе работы я столкнулся с большим объемом информации, и теперь мне необходимо систематизировать эти знания, чтобы двигаться дальше.
Для этого я решил взять небольшую паузу на одну-две недели, чтобы полностью сосредоточиться на изучении интеграции локальных LLM-моделей. На это время я оставляю только поддержку учеников модуля, а все остальные задачи — аудиты, разработку и анализ отчетов — временно приостанавливаю.
За последнее время я успел познакомиться с возможностями LLM, которые способны серьезно повлиять не только на разработку и тестирование смарт-контрактов, но и на их математические модели и сложную архитектуру. В ближайшем будущем появятся решения, автоматизирующие создание тестов в Foundry с проверкой всех возможных сценариев выполнения функций и логических потоков. Кроме того, нейросети смогут анализировать инварианты математических расчетов, выполняя сотни тысяч итераций, и помогать выявлять серьезные уязвимости уровня Med или High.
Примечательно, что это будут не массовые коммерческие модели вроде ChatGPT, Claude или Gemini, а специализированные локальные решения, оптимизированные под конкретные задачи. Крупные компании вряд ли в ближайшие годы будут заниматься узкой настройкой своих продуктов для отдельных областей, поскольку их основная цель — конкуренция на глобальном рынке.
Моя задача — научиться отличать действительно полезные проекты от поверхностных решений, которые представляют собой всего лишь обертку над API популярных нейросетей. В ходе обучения я планирую разобраться в настройках моделей, их разновидностях, бенчмарках, библиотеках для работы с ними, а также в таких темах, как квантизация и оптимизация производительности.
В скором времени мы вернемся к изучению Solidity и актуальных трендов в этой области — у меня уже есть несколько интересных тем для обсуждения. Желаю вам продуктивной недели и отличного настроения!
Всем хорошего настроения и приятной недели!
#offtop
👏18
Держу в курсе и не пропадаю
В течение недели, посвященной учебному отпуску, я ознакомился с базовыми аспектами работы с моделями LLM. В частности, изучил принципы квантизации, основные библиотеки для ее реализации, структуру весов модели, а также такие понятия, как PTQ, QAT, GGUF и GPTQ. Кроме того, рассмотрел различные подходы к бенчмаркингу и другие сопутствующие вопросы. Это позволило более осознанно подходить к выбору моделей для конкретных задач и их настройке с учетом доступных вычислительных ресурсов.
Как часто бывает в процессе изучения сложных тем, углубление в материал порождает новые вопросы. В связи с этим я принял решение постепенно, в свободное время, осваивать основы машинного и глубокого обучения (ML/DL). Это обусловлено двумя ключевыми причинами.
Во-первых, я стремлюсь к системному пониманию данной области, что необходимо для завершения разработки собственного ассистента для аудита.
Во-вторых, все чаще отмечаю рост интереса к применению LLM среди аудиторов и разработчиков. Например, в репозиториях блокчейн-протоколов появляются специализированные файлы (такие как llm.md), описывающие функционал моделей в контексте конкретных задач.
На ближайшие шесть месяцев я планирую сосредоточиться на изучении следующих аспектов ML/DL:
1. Базовые алгоритмы: линейная и логистическая регрессия, метод опорных векторов (SVM), деревья решений, ансамбли моделей.
2. Методы оценки качества моделей: кросс-валидация, метрики (accuracy, precision, recall, F1, ROC-AUC).
3. Регуляризация и методы оптимизации (градиентный спуск, Adam, RMSProp).
4. Архитектуры нейронных сетей.
5. Работа с функциями потерь (loss functions) и оптимизация гиперпараметров.
6. Техники ускорения обучения: batch normalization, dropout, early stopping.
7. Transfer Learning и Fine-Tuning.
8. Предобработка данных: аугментация, нормализация, работа с несбалансированными выборками.
На данный момент я также провел предварительный анализ доступных обучающих курсов, однако большинство из них требуют серьезной математической подготовки и углубленного владения Python, чем я пока не обладаю в достаточной мере.
Текущая неделя будет посвящена формированию детального плана обучения. А со следующей недели планируется возобновление работы с Solidity.
Однако, чтобы канал не пустовал, выйдет пара коротких постов про Foundry на неделе.
Всем хорошего дня и приятной недели!
#offtop
В течение недели, посвященной учебному отпуску, я ознакомился с базовыми аспектами работы с моделями LLM. В частности, изучил принципы квантизации, основные библиотеки для ее реализации, структуру весов модели, а также такие понятия, как PTQ, QAT, GGUF и GPTQ. Кроме того, рассмотрел различные подходы к бенчмаркингу и другие сопутствующие вопросы. Это позволило более осознанно подходить к выбору моделей для конкретных задач и их настройке с учетом доступных вычислительных ресурсов.
Как часто бывает в процессе изучения сложных тем, углубление в материал порождает новые вопросы. В связи с этим я принял решение постепенно, в свободное время, осваивать основы машинного и глубокого обучения (ML/DL). Это обусловлено двумя ключевыми причинами.
Во-первых, я стремлюсь к системному пониманию данной области, что необходимо для завершения разработки собственного ассистента для аудита.
Во-вторых, все чаще отмечаю рост интереса к применению LLM среди аудиторов и разработчиков. Например, в репозиториях блокчейн-протоколов появляются специализированные файлы (такие как llm.md), описывающие функционал моделей в контексте конкретных задач.
На ближайшие шесть месяцев я планирую сосредоточиться на изучении следующих аспектов ML/DL:
1. Базовые алгоритмы: линейная и логистическая регрессия, метод опорных векторов (SVM), деревья решений, ансамбли моделей.
2. Методы оценки качества моделей: кросс-валидация, метрики (accuracy, precision, recall, F1, ROC-AUC).
3. Регуляризация и методы оптимизации (градиентный спуск, Adam, RMSProp).
4. Архитектуры нейронных сетей.
5. Работа с функциями потерь (loss functions) и оптимизация гиперпараметров.
6. Техники ускорения обучения: batch normalization, dropout, early stopping.
7. Transfer Learning и Fine-Tuning.
8. Предобработка данных: аугментация, нормализация, работа с несбалансированными выборками.
На данный момент я также провел предварительный анализ доступных обучающих курсов, однако большинство из них требуют серьезной математической подготовки и углубленного владения Python, чем я пока не обладаю в достаточной мере.
Текущая неделя будет посвящена формированию детального плана обучения. А со следующей недели планируется возобновление работы с Solidity.
Однако, чтобы канал не пустовал, выйдет пара коротких постов про Foundry на неделе.
Всем хорошего дня и приятной недели!
#offtop
🔥12👍5❤3