Skip to main content
Improvado
Международный агрегатор рекламных кампаний
60 млн $
капитализация
22 млн $
инвестиции в серии А
Создаем стартапы на блокчейне Cardano с использованием платформы Plutus, написанной на Haskell
Узнать больше

Мифы о разработке блокчейн продуктов

myths

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

Эта статья для фаундеров, которые планируют перенести свой бизнес из Web2 в Web3. Мы развеем популярные мифы о блокчейне и расскажем, как это помогает принимать взвешенные решения еще перед разработкой продукта.

МИФ 1. Если продукт на блокчейне — он прозрачен и безопасен

Обычно этот аргумент стоит во главе угла в пользу использования dApps звучит он примерно так: «Код смарт-контракта со всеми его функциями записан в блокчейне и лежит в открытом доступе. Так, любой человек способен лично убедиться в отсутствии бэкдоров и критических уязвимостей, которые приведут к краже средств пользователей. Все прозрачно без учета желания разработчиков.»

Реальность

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

В качестве примера рассмотрим функцию в смарт-контракте в исходном виде и то, как это декомпилирует обозреватель блоков.
Сам обозреватель блоков Etherscan предлагает декомпилировать код, но этот код нечитаем и практически бесполезен. Очевидно, код кардинально отличается от того, что закладывал в него сам разработчик.

Оригинал

```solidity
    function sweep(IERC20 token, address recipient)
        external
        onlyRole(DEFAULT_ADMIN_ROLE)
    {
        uint256 amount = token.balanceOf(address(this));
        token.safeTransfer(recipient, amount);

        emit Sweep(address(token), amount);
    }
```
var sumGroup = matchResult.Groups["Sum"]; 
if(!sumGroup.Success) 
    throw new ArgumentException("Invalid qrCode, Sum group not found");
return (dateGroup.Value, sumGroup.Value);

Декомпилированный код с обозревателя блоков

```
def unknownb8dc491b(uint256 _param1, uint256 _param2) payable: 
  require calldata.size - 4 >=′ 64
  require _param1 == addr(_param1)
  require _param2 == addr(_param2)
  if not unknown248a9ca3[0][caller].field_0:
      mem[128 len 42] = call.data[calldata.size len 42]
      idx = 41
      s = caller
      while idx > 1:
          if s % 16 >= 16:
              revert with 0, 50
          if idx >= 42:
              revert with 0, 50
          mem[idx + 128 len 8] = Mask(8, -(0, 0) + 256, 0) << (0, 0) - 256

…
  log 0xab224606: ext_call.return_data1)

```
    throw new ArgumentException("Invalid qrCode, Sum group not found");
return (dateGroup.Value, sumGroup.Value);

[Вам не показалось, во второй строке действительно есть этот дикий артефакт. Именно так его выдал декомпилятор Etherscan]

Но давайте представим, что смарт-контракт верифицирован. Сколько пользователей знает язык программирования смарт-контрактов? А сколько пользователей, знающих Solidity, заходят изучить несколько сотен строк кода, чтобы обменять несколько токенов? Это число ничтожно мало.



Как гарантировать безопасность


Помимо качественного whitepaper и документации придется раскошелиться! Обращаемся в аудиторскую контору, а лучше в две, которые непредвзято исследуют код смарт-контракта и выпустят публичный отчет со всеми найденными (но уже разумеется исправленными) уязвимостями. Аудит может стоить от $5000 до $500k. Примерно такую сумму протокол Gearbox запрашивает из своей казны у пользователей на двойной аудит). Без этого можно обойтись, ведь аудиты не гарантируют безопасность и проекты после аудитов взламывают, но с аудитом ваш проект будет выглядеть намного надежнее в глазах пользователей и социальных медиа. Ведь для изначально мошеннического проекта точно никто не будет заказывать аудит, не так ли?

МИФ 2. Децентрализация = невозможность цензуры

Люди все еще спорят о понятии “децентрализации”, это безумно интересная тема,которая определенно достойна отдельной статьи. Сейчас же я предлагаю рассматривать децентрализацию как способ противостояния цензуре. Если нет центрального управления системой и технической возможности ограничивать транзакции, означает ли это, что блокчейн — это свободная гавань? 

Реальность

Начну с того, что после перехода Ethereum на PoS, возник серьезный риск тотальной цензуры Ethereum. В ноябре 2022 года более 73% блокчейн нод использовали софт OFAC. Этот софт занимался пре-валидацией транзакций от адресов, которые находятся в черном списке OFAC. Попадают они туда по решению этого органа за различные преступления: наркоторговля, отмывание денег и т.п. Звучит как благое дело, но, такие инструменты могут использоваться в политических играх или же просто для подавления неугодных граждан. Масштабы цензуры непостоянны и меняются ежедневно. Посмотреть графики можно здесь.

Процент цензуры нод Ethereum с момента перехода на PoS

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

Зачем это знать и что с этим может сделать бизнес?

Способствовать увеличению уровня децентрализации своего продукта и блокчейна в целом. Быть социально ответственными перед блокчейн комьюнити: поднимать свои ноды, участвовать в конференциях, заниматься исследованиями, инвестировать в инфраструктурные проекты и децентрализацию. Звучит наивно, но, именно так и создавался блокчейн. Также, если продукт стремится быть наиболее децентрализованным, то вместо самописных централизованных сервисов, можно использовать наиболее децентрализованные инфраструктурные решения, такие как The Graph Network, Chainlink, IPFS и другие.

На данном этапе развития Web3 полно узких мест, где разработчики и комьюнити не могут обойтись без централизованных систем: все анонсы — в Twitter (X), работа с комьюнити —  в Discord, разработка — в GitHub и так далее. Это говорит о том, что у строителей прекрасного мира Web3 предстоит еще много работы.

МИФ 3. Если продукт на блокчейне, значит, продукт анонимен

Создавая крипто-кошелек, вы не вводите никаких персональных данных. Соответственно, сопоставить вас с адресом кошелька невозможно. Значит, все анонимно?

Реальность

Блокчейны псевдо-анонимны. Это значит, что адреса и транзакции публичны, и, если удастся сопоставить адрес кошелька с вашей личностью, вы деанонимизированы.

Возможно ли это сделать? Теоретически — да. Благодаря методам анализа блокчейна, можно связать транзакции или адреса с определённым человеком или организацией. Повторяющиеся транзакции и другая информация помогают создать профиль активности, который может указывать на конкретное лицо или группу.

Наверное это что-то очень сложное и доступное только хакерам?  Не беда! Для обычных пользователей есть замечательный сервис — Arkham intelligence. Это довольно удобный интерфейс для изучения истории транзакций и балансов искомых кошельков. В качестве демонстрации возможностей сервиса, предлагаю глянуть на кошелек известного многим Джастина Сана: видны балансы в разных блокчейнах, активность на DEX и транзакции с другими сдеаноненными адресами. Как только Джастин Сан совершает какую-то сделку на DEX, сотни ботов в Twitter сообщают об этом комьюнити. А у каких-то трейдеров настроены боты, которые реагируют на эти движения и копируют эти сделки.

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

 

Еще один важный момент: децентрализованные протоколы могут подчиняться законодательным нормам. Например, протокол Uniswap в пользовательском соглашении пишет о том, что они находятся в юрисдикции США и могут собранные данные передавать по запросу тех или иных органов власти. Uniswap действительно не запрашивает никаких чувствительных данных о вашей личности, но он их собирает из открытых источников, агрегирует и анализирует. В теории, по запросу органов протокол может передать эти данные на блюдечке с голубой каемочкой, сильно облегчив работу этих органов для сличения определенных личностей (через косвенные данные в итоге можно добраться до сути и составить портрет пользователя). Вы скажете, что это паранойя? А я скажу, что ребята из TOR браузера даже не рекомендуют разворачивать окошко браузера на полный экран, потому что сайты собирают информацию даже о диагонали экрана и предупреждают, что это может вас выдать. А эти ребята точно что-то понимают в безопасности 😉

МИФ 4. Блокчейн — бесплатная виртуальная машина и не требует затрат на инфраструктуру

Большая и готовая инфраструктура — одно из главных преимуществ блокчейна. На неё не нужно тратить деньги: блокчейн позволяет записывать и считывать данные даже с самого простого компьютера, ведь приложения запускаются на мощных нодах.

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

Реальность

Это не совсем так. Без доступа к архивным данным блокчейна, деплой смарт-контракта, действительно, не самая большая часть расходов, но без архивных данных невозможна и аналитика по продукту. А доступ к этим данным потребует развёртывания своей ноды либо оплаты услуг провайдера типа Infura или Alchemy. Так, стоимость Infura составит $225 в месяц за 1 000 000 запросов, а стоимость собственной ноды в сети Ethereum будет примерно равна стоимости сервера на 20 терабайт.

 

Помимо доступа к архивным данным вашему продукту пригодятся другие дополнительные инструменты. Так, для индексации данных блокчейна необходимо написать и задеплоить сабграф. Например, в The Graph Network, где нужно платить индексаторам в токенах GRT. Каждые 100 000 запросов обойдутся в ~$50, а за 30 млн. запросов придется платить по $4500 в месяц. Точно ли вашему бизнесу нужен этот сабграф? Если основной фишкой у проекта повышенная децентрализация, вероятнее всего да. 

Оракулы для бизнеса также не бесплатны: Например, запрос в Chainlink VRF в сети Ethereum для получения списка случайных чисел может стоить примерно 3 токена LINK, то есть, около $23. Оракулы очень важны почти для любого проекта, особенно если проект имеет прочную связь с данными из реального мира (курсы валют, результаты спортивных событий и т.д.).

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

МИФ 5. Code is law или Неизменяемость кода смарт-контрактов

Неизменяемость кода смарт-контрактов — еще одно преимущество Web3 продуктов над Web2. Чаще всего, говоря об этом, подразумевается, что написанная логика смарт-контракта не будет изменена тайно и создатели протокола не способны произвести какие-либо манипуляции, чтобы обмануть своих пользователей. Это действительно так для таких протоколов как Uniswap, Yearn и многих других. Версии этих протоколов работают без изменений годами и при выходе нового протокола старый не прекращает работать.

Реальность

Существует технология upgradeable, она позволяет менять код в смарт-контрактах, т.е. полностью переписать всю логику смарт-контракта с нуля. Неизменными останутся данные, записанные в хранилище контракта, но это просто слоты, ячейки памяти, их можно проигнорировать и создать новые переменные.

Но ведь это нарушает основной принцип блокчейна? Лишается ли доверия юзеров такой продукт? 

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

Обновляемость смарт-контрактов позволяет их оптимизировать, исправлять ошибки и делать приложения удобнее для пользователей, делая продукт более конкурентоспособным. Например, если кто-то из команды или комьюнити заметит критический баг и сообщит об этом, есть высокий шанс все исправить до того, как хакер уведет средства ваших пользователей. И за такую обновление пользователи точно скажут вам “спасибо”.

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


Что делать, если же формат ДАО вам не подходит, но обновляемость вашего смарт-контракта вам также важна, как доверие пользователей? Можно в своем роадмапе отразить майлстоун или же условие, при котором из вашего продукта будет отменена обновляемость или выйдет версия протокола без этой функции. 

Подводя итоги

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

sharding
новое
ton
bottle_wine
выбор редакции
Зачем вину блокчейн: как токенизируют премиальный алкоголь

Елизавета Черная

Редактор Бренд-медиа

Статьи

web3
nft
business
launchpad
twa
Тренды блокчейна и криптоиндустрии 2024: Telegram Mini Apps (TMA)

Елизавета Черная

Редактор Бренд-медиа

Статьи

web3
buildings
anonymus
выбор редакции
Zero-knowledge proof: один из трендов 2024 в блокчейне

Евгений Биктимиров

Венчурный аналитик

Статьи

ethereum
web3
dApps
cpay
выбор редакции
AA zksync
zero knowledge proofs
выбор редакции
stock market chart
выбор редакции
planets
fundraising
выбор редакции
cto
wallet
tokens
выбор редакции
rocket computer
выбор редакции
Как создать дизайн для MVP стартапа за 7 дней

Юлия Черепанова

Head of Design Office

Статьи

startup
MVP
design
nft
AI
crypto wallets
выбор редакции
Account Abstraction: что это такое и зачем нужно криптомиру

Павел Найданов

Solidity разработчик

Статьи

ethereum
web3
business
red space
выбор редакции
speed up development
myths
выбор редакции
Мифы о разработке блокчейн продуктов

Николай Бордуненко

Project manager at MetaLamp

Статьи

web3
dApps
startup
launching
выбор редакции
Кого нужно нанимать в команду для запуска MVP?

Алексей Сухарев

Head of Sales Department

Статьи

business
startup
MVP
galaxy
magazine
spaceman
выбор редакции
coffee
investors
nft
Первый NFT marketplace на Cardano

Станислав Жданович

Haskell разработчик

Статьи

cardano
web3
nft
stair
выбор редакции
bridge
rocket
abstraction
Как мы нанимаем Plutus инженеров через собственную программу обучения

Светлана Дульцева

Супервизор программы обучения

Статьи

education
cardano
web3
mountains
blockchain
salary
salary increase
app
developer with books
keyboard
abstract