Аутентификация с использованием учетной записи ethereum

Попытка выяснить способ аутентификации пользователей, имеющих учетную запись ethereum. Новое для эфирума и криптографии вообще, и моя мысль может быть недостаточной. По сути, я думаю, чтобы иметь возможность аутентифицировать пользователей по их общедоступному адресу. Я не нашел для этого прямых решений. Было бы возможно, и имеет ли смысл проверять использование подписи некоторой текстовой строки? Приложение попросит пользователя подписать текстовое сообщение (я предполагаю, что это должно быть сделано в geth пользователем или на каком-либо веб-сайте), но тогда есть ли API, который можно использовать для проверки этого сообщения? Также это можно сделать, не тратя лишний эфир на транзакции (первоначальные газовые сборы)? Также как это можно сделать с помощью web3?

Существует аналогичный вопрос здесь однако нет практического кодового решения, и он может быть не 100% связан с моим вопросом.

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

3 голоса | спросил Emil Iakoupov 24 Jpm1000000pmWed, 24 Jan 2018 23:13:51 +030018 2018, 23:13:51

1 ответ


2

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

Чтобы немного узнать о теме, просто узнайте, что я был таким же, как вы, и я разрабатываю прототип dApp через Angular 5, Web3js и трюфель. Основная идея заключалась в том, чтобы мой прототип был полностью децентрализован, что означает, что помимо распространения интерфейсного сервера http не будет делать ничего другого, вся логика входа в сеть ethereum.

Как я выкопал в Solidity, я узнал, как мало я знал, несмотря на чтение сотен тем о развитии dApp.

Я начал использовать объект Web3, предоставленный Metamask, чтобы быстрее реализовать мои первые функции.

Я подготовил раздел моего Приложения, чтобы обрабатывать v3 Keystores, как тот, который был создан на самом деле MyEtherWallet, чтобы получить независимость от Metamask, если пользователь захочет.

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

Ниже несколько моментов о том, какие осложнения избавления от метамаски:

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

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

  • Вы не сможете использовать Web3 для подписания транзакций и должны будете полагаться на другие библиотеки, такие как ethereumjs-tx.
  • Вам нужно будет создать свой собственный менеджер учетных записей, чтобы он мог легко переключаться с учетной записи на другую.

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

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

Удачи.

EDIT (по запросу для кода):

Вы можете найти стартовый пакет небольшого dApp здесь DApp показывает, как обнаружить Metamask (который вводит объект Web3 в окне DOM Object) и как сделать небольшую транзакцию.

Я сделал несколько месяцев назад небольшой прокомментированный фрагмент о том, как назвать метод Контракта, для которого мы знаем ABI. Вы найдете его здесь

Надеюсь, что это поможет!

ответил Asone 25 Jam1000000amThu, 25 Jan 2018 00:52:18 +030018 2018, 00:52:18

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132