Skip to main content
5 человек
в команде
5 месяцев
в работе
Спроектировали и разработали совместно с IOHK децентрализованное приложение на платформе Plutus. Созданный DApp — это один из первых NFT-маркетплейсов на Cardano
Узнать больше

Распространённые мифы о разработке блокчейн-продуктов: объяснение

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 запрашивает из своей казны у пользователей на двойной аудит). Без этого можно обойтись, ведь аудиты не гарантируют безопасность и проекты после аудитов взламывают, но с аудитом ваш проект будет выглядеть намного надежнее в глазах пользователей и социальных медиа. Ведь для изначально мошеннического проекта точно никто не будет заказывать аудит, не так ли?

Получите бесплатную консультацию
Заполните форму, чтобы связаться с нашим менеджером.
Или можно запланировать встречу в Calendly calendly
Нажимая на кнопку, вы соглашаетесь с политикой конфиденциальности

МИФ 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, со всеми его слабыми и сильными сторонами, помогая подобрать изящные и осознанные решения.

article-logo

Читайте больше о Web3

ton_results
горячее
eigenlayer
новое
Polygon_zkEVM
новое

Обзор Polygon zkEVM: принцип работы L2-решения для Ethereum

Алексей Куценко

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

Статьи

ethereum
web3
zkp
bridges_overview
новое
5_rules
новое
layer_zero
новое

Обзор и архитектура протокола LayerZero v2

Роман Ярлыков

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

Статьи

ethereum
web3
bridges
Solana
новое
TON_Mintless_Jettons
L2_Bitcoin
выбор редакции
polymarket_article

Что такое Polymarket и как работает рынок предсказаний?

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

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

Статьи

web3
business
package_solutions
выбор редакции
tapalki
выбор редакции
uma_protocol
выбор редакции
AdsGram
выбор редакции

Способ монетизировать игры в Telegram

Алексей Федин

Исполнительный директор Magnetto.pro

Статьи

web3
mobile
TON
hamster_tma
выбор редакции

Как хомяк, но для трафика: привлекаем аудиторию тапалкой

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

Бизнес-аналитик MetaLamp

Статьи

web3
dApps
mobile
dao

Что такое DAO?

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

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

Статьи

education
web3
ethereum_gas
scroll

Как работает блокчейн Scroll: технический обзор

Алексей Куценко

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

Статьи

ethereum
web3
dApps
L2
nft_stacking
выбор редакции

Понимание стейкинга NFT: механизмы и преимущества

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

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

Статьи

ethereum
web3
dApps
legendary_play
выбор редакции
payments
sharding
выбор редакции
ton
выбор редакции
bottle_wine
выбор редакции
launchpad
twa
выбор редакции
buildings
выбор редакции
anonymus

Zero-Knowledge Proofs: важный тренд в блокчейне на 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
выбор редакции
red space
выбор редакции
speed up development
myths
выбор редакции
launching
выбор редакции

Кого нанимать для успешного запуска MVP

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

Head of Sales Department

Статьи

business
startup
MVP
galaxy
magazine
spaceman
выбор редакции
coffee
investors
nft

Как мы создали первый NFT-маркетплейс на Cardano

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

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

Статьи

cardano
web3
nft
stair
выбор редакции
bridge
rocket
abstraction

Как мы нанимаем инженеров Plutus через собственную программу обучения

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

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

Статьи

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