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

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

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

Реальность

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

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

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

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

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

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

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