📉
RE & For & Crypto
Crypto
Crypto
  • Crypto Book
    • Platforms & Playgrounds
    • People and Blogs
  • Симметричное шифрование
    • Блочные шифры
      • AES
        • Атаки
          • AES-ECB: Padding Oracle Attacks
          • AES-CBC: Bitflip
          • AES-CBC: Padding Oracle
          • AES-CTR: Fixed nonce
          • AES-CTR: Bitflip
          • AES-CBC: Key=IV insecure
      • DES
    • Поточные шифры
      • Корреляционный анализ
      • Алгоритм Берлекэмпа-Месси восстановления внутреннего состояния ЛРС по гамме
    • RNG
      • Mersenne Twister RNG
  • Асимметричное шифрование
    • Эллиптические кривые
    • Tools
      • Факторизация чисел
      • RSATool
    • Diffie-Hellman
    • Атаки на RSA
      • Вычисление квадратного корня по модулю
      • Если известна часть закрытой экспоненты или экспонента мала (e=3)
      • Базовые атаки
    • Статьи
  • Классические шифры
    • Enigma
    • Tools
      • playfair brecker
      • Атаки на классические шифры
      • Поиск слов по шаблону
  • Хеш-функции
    • MAC
      • Attacks
        • SHA1-MAC: Length-Extension Attack
        • HMAC-SHA1: Break with an artificial timing leak — утечки времени
    • KDF
    • Tools
  • Блокчейн-технологии
    • Bitcoin
    • Script
    • Web3
    • DeFi
    • ZK | Zero Knowledge
    • Etherium Blockchain Contracts
      • About Smart-contracts and Ethereum
      • ERC
      • EVM | Ethereum Virtual Machine
        • Concepts
        • Languages
          • Solidity
          • Yul
          • Viper
          • Rust
      • Development Platforms And Frameworks
        • Truffle
        • Hardhat
        • Brownie
        • Remix IDE
      • Настройка окружения (на базе Remix IDE)
      • Blockchain Platforms
      • OpenZeppelin
      • CTF examples
        • HoneyPots
        • Sharkyctf2020
        • PHDays10
        • OpenZeppelin Ethernaut
        • List of CTFs
      • Talks & Papers
      • Tools
      • Vulnerabilities
      • Companies
    • API некоторых валют
    • Hyperledger
    • Tools
    • Mixers
  • Прикладное шифрование
    • Свой SSL Cert для сайта
    • How Certificate Transparency Works
    • DPAPI
    • OpenSSL
      • Чтение сертификатов и ключей
  • Learning
    • Certificates
    • Platforms
    • Books & Papers
Powered by GitBook
On this page
  • About
  • Свойства
  • Механизм проведения транзакции
  • Мосты
  • Как используются смарт-контракты в реальном мире
  • Кошельки
  • Про плюсы децентрализованных финансов
  • Разработка смарт-контрактов
  • Про платформы
  • Про аудиты
  1. Блокчейн-технологии
  2. Etherium Blockchain Contracts

About Smart-contracts and Ethereum

PreviousEtherium Blockchain ContractsNextERC

Last updated 11 days ago

Etherium Book:

как это все работает:

Consensys' are quite extensive, and include both to learn from and to avoid.

Известные атаки в одном месте:

Security Tools:

Заметки основаны на подкасте Запуск Завтра:

About

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

Далее будем говорить про сеть Ethereum — это сеть для разработки распределенных сервисов на базе блокчейна, работающих на базе смарт-контрактов. Пишут на языке Solidity и исполняют в EVM (Ethereum VM).

Свойства

У смарт-контрактов есть несколько базовых свойств:

  • Доступ к деньгам (смарт-контракт может запросить у пользователя доступ к его кошельку)

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

  • Смарт-контракт может выступать актором: он может вызвать другой смарт-контракт

Смарт-контракты — это попытка по новой реализовать финансовые примитивы.

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

Механизм проведения транзакции

Пользователь вызывает какую-то функцию контракта, операция подписывается на закрытом ключе пользователя (тем самым смарт-контракт может убедиться кто с ним работает и что у пользователя достаточно финансов). Транзакция отправляет в блокчейн на какую-то из нод сети в пул неподвержденных транзакций. Этот пул реплицируется между другими узлами по протоколу Gossip (по этому протоколу общаются все ноды => то есть все майнеры). Далее майнеры решают, какую транзакцию они будут вычислять (ту, что стоит дороже). Все это считается в у.е. Газ. Каждая операция стоит сколько-то газа. Каждый майнер выполняет эту транзакцию, записывает результат. Далее, все результаты включаются в блок и передаются механизму Консенсуса (в эфириуме это Proof-of-Work, потом будет Proof-of-Stake). В блокчейн записывается тот результат, который получился и большего числа майнеров.

Мосты

Смарт-контракт не умеет общаться с внешним миром. Между собой смарт-контракты общаются посредством мостов. Мосты есть централизованные и децентрализованные. Внутри моста работает смарт-контракт.

Смарт-контракт получает деньги и выбрасывает событие: я получил деньги, я хочу перевести в другой сети деньги вот по этому счету. Это событие проходит еще через один (третий) блокчейн-валидатор, которые связывает две сети. Блокчейн валидатор ставит подписи под этим событием. Когда накапливается нужное количество подписей (например, 7 из 9), это сообщение отправляется в другой блокчейн. Там проверяется, что нужное количество подписей есть и токены переводятся.

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

А если все ок, то валидаторы получат какой-то процент еще.

Как используются смарт-контракты в реальном мире

  • Обмен токенов (биржи-обменники)

Это можно делать и без смарт-контрактов. Есть немало площадок, которые позволяют обменять токены из одной сети на токен из другой сети. Например, binance, coinbase. У таких централизованных решений есть свои плюсы и минусы (они супер удобны визуально, у них куча аналитики есть, быстрые переводы, низкие комиссии, но они требуют (государство обязывает) проводить цензуру — KYC [Know your customer] и AML [anti-money laundering]). Еще из плюсов: централизованные биржы поддерживают ввод фиатных денег (оплата с карт), фьючерсы, опционы ... .

А смарт-контракты позволяют обменяться токенами не прибегаю к помощи централизованного посредника. Позволяет провести сделку абсолютно безопасно.

На традиционных биржах работают маркетмейкеры (те, кто обладают большим количеством денег, ликвидности). Они предоставляют на биржу ликвидность – открывают ордера на покупку / продажу. При этом делают это с неким небольшим разрывом, который называется spread. На этом они зарабатывают. А трейдеры получают возможность практически по рыночной цене обменять достаточно большую сумму.

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

Примеры DEX бирж: наиболее популярная по объемам – Uniswap, другая – Bancor — те, кто изобрели эти автоматические обменники, другие — Sushiswap (https://sushi.com/), [что-то там]Swap. 1inch — DEX агрегатор, здесь можно найти обменник с самым выгодным курсом.

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

  • Кредиты и займы

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

Таким образом, это дает демократизированный доступ к капиталу любому участнику (не как в классической финансовой системе).

Но есть и минусы у этого свойства: есть атаки с использованием flash-займов. Большая часть атак направлена именно на это, а не на код контракта. Многие контракты не готовы, что к ним придет такая большая ликвидность, что приведет к разшатыванию каких-то внутренних параметров. Таким образом можно задрейнить контракт (списать деньги, которые находятся у него под управлением).

  • NFT-токены

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

  • Умное голосование и выборы

Что еще нереализовано, но вокруг этого ходят:

  • Страхование

  • SBT (как NFT, но нельзя его передать, например, факт о сертификации какой-то). Или: по паспорту получаем кредитный рейтинг и закрепляем его SBT. По SBT получаем необеспеченный кредит в какой-то сети. Если нарушаем кредитные условия — SBT сжигается и второй раз его не получить. Такой репутационный токен.

  • Необеспеченные займы

  • Игры (перенос ценностей сквозь игры, повышение интереса к игре не только ради коинов)

Кошельки

Костадиальные и некостадиальные

Некостадиальные:

  • MetaMask как браузерное расширение (программное хранилище)

  • Wallet Connect — USB-токен (аппаратный ключ)

Про плюсы децентрализованных финансов

  • Управление своими финансами без оглядки на санкционные ограничения

  • Возможности влкадывать деньги (стейкинг)

  • Быть поставщиком ликвидности

    • Есть поощрения тем, кто вкладывает свою ликвидность в контракты

    • Есть поощрения тем, кто использует контракты

Можно получать таким образом доход 10-40% (биржа такой доход не может обеспечить). Это не всегда кидалово, в некоторых случаях такой доход может обеспечиваться за счет маркетингово бюджета по привлечению к проекту ликвидности (проекты с низкой ликвидностью)

Разработка смарт-контрактов

Разработка ведется на Solidity. Язык несложный, освоить его можно за пару вечером и написать Hello World. Но проблема разработки серьезных контрактов в том, что нужно очень хорошо ориентироваться в инфраструктуре вокруг Solidity, экоситему.

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

Надо знать основные шаблоны для реализации крипто-экономической состовляющей: как делать займы, как делать обменники, как делать стейкинг, как делать вознаграждения и тд. Это специализированные паттерны проектирования.

Наиболее популярны для разработки смарт-контрактов являются платформы Etherium (тн EVM-совместимые блокчейны). Многие другие платформы используют EVM и Solidity. Например, Binance Smart Chain, Phantom, Etherium.

Есть другие платформы, которые предлагают свои языки программирования, например, Zilliqa (язык Scilla), Flow Blockchain (язык Cadance).

Про платформы

Etherium — надежный, не быстрый и не производительный (в блоке ~100 транзкаций, блок вычисляется 10c => 10 транзкаций в секунду) и дорогой

Binance Smart Chain — быстрее, дешевле, но менее децентрализованный, чем Etherium (так как есть фиксированное число валидаторов).

Solana — полностью децентрализованное решение (без пруфов правда), смарт-контракты на Rust, дешевые транзакции

Phantom — децентрализованность + шардинг (обеспечивает производительность)

Многие блокчейны рождаются для решения каких то проблем эфириума.

Про аудиты

Бывает такое, что команда смарт-контракта рисует себе отчет об аудите, а на сайте аудитора информации об этом никакой нет.

Смарт-контракты реализуют эти фукнции банков (протоколы и ). Чаще всего кредиты обеспечены (так как залог должен быть переведен под управление смарт-контракта).

https://ethereumbook.ru/
https://ethereum.org/learn/
best practices
proven patterns
known pitfalls
https://consensys.github.io/smart-contract-best-practices/known_attacks/
https://consensys.github.io/smart-contract-best-practices/security_tools/
https://music.yandex.ru/album/9294155/track/105560293
compound
aave