Отделить экран от правил
Интерфейс показывает данные и помогает сформировать действие. Смарт-контракт содержит логику, выполняемую в блокчейн-сети, и связанное с ней состояние. В учебном примере контракт хранит число и допускает его увеличение по определённому правилу. На странице расположена кнопка, но её цвет и надпись сами по себе не устанавливают результат. Если интерфейс нарисовал число 8 вместо 7, это ещё не свидетельство изменения состояния контракта. Нужно знать, из какого источника получено отображаемое значение.
Различить чтение и изменение
Запрос текущего числа и действие, меняющее его в сети, выполняют разные роли. Для изменения состояния Ethereum используется транзакция, которую необходимо обработать в сети; такая обработка связана с комиссией. Интерфейс может отдельно показывать подготовку, ожидание и полученный результат. Сообщение о том, что запрос отправлен, не равно сообщению о завершённом изменении. На бумажной схеме полезно подписывать эти переходы, чтобы не превращать весь процесс в одно непрозрачное нажатие кнопки.
Найти зависимость от обычных сервисов
Название Web3 не гарантирует, что каждая часть системы распределена одинаково. Веб-страница может размещаться на обычном сервере, а доступ к данным идти через выбранного поставщика инфраструктуры. Дополнительный сервис может готовить удобные списки или искать события. Если такой компонент недоступен, пользователь способен увидеть ошибку, хотя контракт продолжает существовать в сети. Для анализа важнее перечислить конкретные зависимости, чем объявить всё приложение полностью независимым от организаций и отдельных точек отказа.
Уточнить, кто может менять поведение
У смарт-контрактов есть важные ограничения на изменение опубликованного кода, но существуют архитектуры с обновляемой логикой. Например, один контракт может направлять вызовы к другой реализации, адрес которой меняется по предусмотренным правилам. Поэтому утверждение правила невозможно изменить требует проверки устройства конкретной системы и полномочий управления. Наличие блокчейна также не доказывает отсутствие ошибок в программе или честность любого интерфейса. Техническая проверяемость отдельных действий и безопасность приложения в целом не являются одним и тем же свойством.
Попробуйте на практике
Нарисуйте на бумаге архитектуру учебного счётчика и проследите одно воображаемое изменение с 7 до 8. Ничего не подключайте к реальной сети.
- Изобразите четыре блока: интерфейс, сервис доступа к сети, блокчейн и смарт-контракт. Подпишите роль каждого своими словами.
- Проведите стрелки чтения: от интерфейса к источнику состояния и обратно с текущим значением 7.
- Отдельно обозначьте запрос изменения. Подпишите ожидание обработки и получение результата, не смешивая их с простым показом числа.
- Представьте, что сайт недоступен. Отметьте, какие сведения о состоянии контракта из этого факта следуют, а какие остаются неизвестными.
- Добавьте вопрос о наличии обновляемой логики и о том, кто уполномочен менять её. Не назначайте ответ без описания архитектуры.
Как проверить результат. Схема различает отображение числа, запрос и состояние контракта. Из отказа сайта нельзя автоматически заключить, что контракт удалён; из надписи успешно нельзя без проверки установить изменение в сети.
Частые вопросы
Любому приложению нужен блокчейн?
Нет. Его использование должно отвечать требованиям задачи. Обычная база данных может оказаться проще там, где нет необходимости в согласовании состояния независимыми участниками.
Публичный адрес означает полную анонимность?
Нет. Публичность записей и отсутствие имени в адресе не гарантируют невозможность связать действия с человеком. Личные и чувствительные сведения нельзя считать защищёнными только из-за названия Web3.
Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.