Предоставление хуков Metamask только с использованием узла, размещенного на сервере

В настоящее время я рассматриваю возможность размещения узла Ethereum на своем веб-сервере, чтобы позволить моим пользователям взаимодействовать с моими приложениями dApp без использования Metamask (хотя его можно использовать). Как я мог заставить код Web3.js на стороне клиента взаимодействовать с моим сервером в качестве крючка вместо того, что обычно вводится Metamask. Если бы я включил код web3.js на свой сервер и связал его в заголовке, мог бы я просто создать объект Web3 с моим узлом в качестве поставщика, и Metamask больше не был бы необходим?

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

Мой сервер настроен как сервер LAMP, и я использую именованные виртуальные хосты, чтобы перенаправлять/управлять трафиком по мере необходимости (можно ли это использовать для защиты моего узла от других, использующих его). Я бы предпочел придерживаться своей текущей настройки, а не переключаться на node.js, но если это абсолютно необходимо для того, чтобы сайт работал без Metamask, я бы определенно рассмотрел его.

Ответы (1)

Я работаю в МетаМаске.

Я думаю, что MetaMask в основном делает две вещи:

  1. Он предоставляет объект web3 для чтения, источник данных блокчейна.
  2. Он управляет ключами пользователя и, подключая их к API web3, предоставляет сайтам простой способ запросить, чтобы пользователь подписал транзакцию, не отказываясь от контроля пользователя, чтобы утвердить только то, что он хочет.

Предложенное вами решение было бы простой заменой MetaMask в первом случае, который я описал. Более сложная проблема — управление ключами пользователя. Как вы думаете, куда это упадет при предложенной вами установке LAMP?

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

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

Часть инноваций в блокчейнах заключается в том, чтобы держать криптографические ключи пользователя под их собственным контролем. Есть несколько приличных способов сделать это без MetaMask. Мне больше всего нравится, если у ваших пользователей есть аппаратный кошелек, например, есть несколько приличных библиотек для Ledger, но у большинства людей нет Ledger.

До появления MetaMask люди делали много небезопасных вещей, чтобы создавать сайты, на которых пользователи могли бы взаимодействовать с Ethereum. Например, требовать от них загрузки закрытых ключей или давать им команды для копирования и вставки в их командные строки.

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

Надеюсь, это ответит на ваш вопрос.

Потрясающе знать. Мне нужно будет проверить это дальше, но я согласен с тем, что у пользователя нет доступа к учетной записи. Сайт, который позволяет вам видеть все, что увидит пользователь Metamask, но без возможности взаимодействия, является прекрасной альтернативой тому, чтобы просто оставить их в пыли. Еще раз спасибо!