Skip to main content

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

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

Связанный: ликвидный стейкинг является ключом к межцепной безопасности

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

Вот более глубокий взгляд на преимущества и недостатки смарт-контрактов, почему они сейчас кажутся Диким Западом и как мы можем улучшить UX для их использования.

Обещание и опасность смарт-контрактов

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

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

Почему смарт-контракты — это Дикий Запад?

Когда приложение Web3 выполняет вызов смарт-контракта, вы не знаете точно, что будет делать транзакция, пока не сделаете это на самом деле. Выпустит ли он ваш невзаимозаменяемый токен (NFT) или отправит ваши деньги и токены хакеру? Эта непредсказуемость верна для любого онлайн-приложения, конечно, не только для приложений Web3; предсказать, что будет делать код, очень сложно. Но это более серьезная проблема в мире Web3, поскольку большинство этих приложений по своей сути имеют высокие ставки (они созданы для управления вашими деньгами), а для потребителей так мало защиты.

App Store в значительной степени безопасен благодаря процессу проверки Apple, но этого нет в Web3. Если приложение для iOS начнет воровать деньги пользователей, Apple сразу же удалит его, чтобы уменьшить убытки, и аннулирует учетную запись его создателя.

Связанный: Латинская Америка готова к криптовалюте — просто интегрируйте ее со своими платежными системами

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

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

Усугубляя эти проблемы, люди часто вынуждены действовать быстро при взаимодействии со смарт-контрактами. Рассмотрим падение NFT, продвигаемое влиятельными лицами: потребители будут беспокоиться о быстрой распродаже коллекции, поэтому они часто будут пытаться совершить транзакцию как можно быстрее, игнорируя любые красные флажки, с которыми они могут столкнуться на этом пути.

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

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

UX кошельков и смарт-контрактов сегодня

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

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

Связанный: Учитесь у Цельсия — не позволяйте биржам конфисковать ваши деньги

MetaMask уже проделал большую работу по ребрендингу «мнемонической фразы» в «секретную фразу», чтобы потребители не могли невольно поделиться ею с хакерами. Тем не менее, есть еще много возможностей для улучшения.

Давайте взглянем на пользовательский интерфейс (UI) MetaMask, а затем на пару созданных мной макетов с изложением некоторых потенциальных улучшений, которые могут направить потребителей в «яму успеха». (Кстати, MetaMask здесь служит в качестве эталона, поскольку он активно используется в мире Web3, но эти идеи пользовательского интерфейса также должны применяться практически к любому приложению кошелька.) Некоторые из этих изменений дизайна могут быть реализованы уже сегодня, в то время как другие могут потребовать технических усилий. прогресс на стороне смарт-контрактов.

На изображении ниже показано, как выглядит текущее окно транзакции смарт-контракта MetaMask.

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

Возможные решения для улучшения смарт-контрактов

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

В качестве наглядного примера, вот два макета быстрого пользовательского интерфейса (UX) транзакций MetaMask — один, который, вероятно, будет безопасным, а другой — менее определенным.

Вот несколько сигналов в моем макете:

Публикуется ли исходный код контракта? Контракты с открытым исходным кодом, как правило, более надежны, потому что любой разработчик может прочитать их, чтобы найти ошибки и вредоносный код. MetaMask уже содержит различные ссылки на Etherscan, так что это будет простой и удобный сигнал для добавления.Аудиторской оценки. Независимый аудит — еще один сигнал, который может определить благонадежность. Основной вопрос реализации здесь заключается в том, как определить эту оценку. Существуют ли уже принятые стандарты для этого? Если нет, простым способом может быть использование Etherscan, который поддерживает загрузку аудитов. MetaMask в этом примере также может вести собственный список аудиторов или полагаться на список третьих лиц. (Насколько я могу судить, MetaMask уже делает это для API NFT и обнаружения токенов.) В будущем легко представить себе децентрализованную автономную организацию для более децентрализованного определения оценок аудита. Что может сделать эта транзакция? Может ли он вызывать внешние контракты, и если да, то какие? Это было бы очень сложно точно определить, но мне интересно, возможна ли простая версия для контрактов с открытым исходным кодом. Уже существует множество автоматизированных сканеров уязвимостей смарт-контрактов. Если это невозможно для Solidity, мне интересно, можем ли мы разработать язык программирования смарт-контрактов, который допускает такой уровень статического анализа. Возможно, отдельные функции могли бы объявлять необходимые им разрешения, а компилятор мог бы гарантировать их соответствие. Советы по безопасности и обучение. Если смарт-контракт не имеет большого количества сигналов о надежности (см. макет выше справа), пользовательский интерфейс может порекомендовать соответствующий набор мер предосторожности, например, проверить правильность адреса контракта и использовать другую учетную запись. Это предложения, сделанные оранжевым цветом, а не красным, поскольку отсутствие сигналов не обязательно опасно; здесь мы просто рекомендуем пользователям быть более осторожными в своих следующих шагах.

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

К более безопасному будущему

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

Связанный с этим: Что будет стимулировать бычий рост криптовалюты в 2024 году?

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

С моей точки зрения, все, что не связано с торговлей криптоактивами на Coinbase (или других крупных компаниях), по-прежнему слишком рискованно для среднего потребителя. Когда друзья и семья спрашивают о создании крипто-кошелька с самостоятельным хранением для использования приложений Web3 (скажем прямо — обычно для покупки NFT), всегда начинайте с предупреждения их о рисках. Это отпугивает некоторых из них, но более решительные люди все равно хотят их использовать. Когда наши кошельки станут умнее, мы сможем чувствовать себя намного лучше, принимая следующую волну новых пользователей в Web3.

Девин Эбботт — основатель Deco, стартапа, приобретенного Airbnb. Он специализируется на инструментах дизайна и разработки, приложениях React и Web3, в последнее время — на The Graph.

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

Источник: Сointеlеgrаph

Оставить комментарий