Система входа для DAPP

Я создаю Dapp на Ethereum. Главной особенностью этого Dapp является логика регистрации/входа. Я не хочу использовать Metamask, но я хочу сделать систему входа в систему как MyEtherWallet без каких-либо расширений Chrome. Как лучше всего это сделать?

следует ли использовать централизованную базу данных? потому что Dapp больше не будет децентрализованным.

Ответы (4)

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

  1. Управление учетными записями: это основная часть взаимодействия с контрактными функциями. Вот модуль web3.eth.accounts. это объясняет. Web3.eth.accounts содержит функции для создания учетных записей Ethereum и подписи транзакций и данных. вы можете делать почти все, что вы делаете из метамаски.

  2. Сетевая конечная точка RPC: вышеуказанные учетные записи должны находиться в той же сети, где и в которой вы включили порт RPC.

  3. Хостинг децентрализованных приложений: в конечном итоге ваш блокчейн распределен и децентрализован, но ваше децентрализованное приложение не нуждается в распределении и децентрализации. Вы можете разместить где угодно, например AWS, Google Cloud. Вам нужен только закрытый/открытый ключ для взаимодействия с блокчейном. Это означает, что вы должны позаботиться о своей учетной записи и механизме подписи, что означает, что ваш закрытый ключ должен храниться отдельно и в безопасности.

Независимо от того, реализуете ли вы свое децентрализованное приложение с помощью web3, собственного языка go или любого другого . Концепция та же.

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

Послушайте, я не хочу, чтобы мой Node работал, я делаю только демо. Эта демо-версия должна включать в себя также мобильное (ионное) приложение, у вас есть идеи, как это возможно?
Вот некоторая информация ethereum.stackexchange.com/questions/18461/… , я не реализовал в мобильном приложении, но может быть решение. Или вы можете использовать web3js и NodeJS в качестве бэкэнда и использовать ionic для интерфейса, он будет работать нормально.
Но как у сервера NodeJS есть мой закрытый ключ, чтобы сделать, например, функцию sign() в бэкэнде? на веб-сайте я могу подключить провайдера метемаски и функцию позывного() во внешнем интерфейсе.
Если у вас не запущен узел, демонстрация невозможна. Либо вы можете использовать testRPC, либо частную сеть/тестовую сеть. И еще: Ваш сервер nodejs не будет хранить ничего, кроме вашей логики. вам нужно сохранить файл хранилища ключей, и см. эту ссылку, это помогает создать файл хранилища ключей, и вы можете хранить его где угодно, но он должен быть доступен во время процесса транзакции, потому что вам нужен закрытый ключ, medium.com/@julien.maffre/… Вот объяснил весь процесс создания файла хранилища ключей.

Добавление к ответу Гильерме - недавно я наткнулся на проект под названием Fortmatic.

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

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

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

Я знаю некоторых провайдеров, если вы хотите взглянуть на них:

  1. Uport — https://www.uport.me/ uPort возвращает право собственности на личность физическому лицу. Открытая система идентификации uPort позволяет пользователям регистрировать свою личность в Ethereum, отправлять и запрашивать учетные данные, подписывать транзакции и безопасно управлять ключами и данными. Посмотрите, что мы строим:
  2. Civic — https://www.civic.com/ Платформа безопасной идентификации Civic (SIP) использует проверенную личность для многофакторной аутентификации в веб-приложениях и мобильных приложениях без необходимости использования имен пользователей или паролей.
  3. OriginalMy — https://originalmy.com/ Заходите на веб-сайты, не беспокоясь о паролях, и больше никогда не заполняйте формы. Используйте свой Blockchain ID для безопасного выполнения различных действий в Интернете, не беспокоясь о мошенничестве.
Я знаю, вы говорите о децентрализованной идентичности, но это не то, что мне нужно. Представьте, что у меня есть компании для регистрации в моем децентрализованном приложении, я предоставлю им их собственный смарт-контракт и пару открытого и закрытого ключей, которые они будут использовать, чтобы просто разблокировать свою учетную запись и внести какие-то изменения в свой смарт-контракт.
так как должна происходить разблокировка этой учетной записи? Я просто хочу сделать это просто. Может быть, я предоставлю им учетную запись ethereum и просто использую открытый и закрытый ключи этой учетной записи?
Да я неправильно понял. Дай мне подумать об этом.
хорошо, дайте мне знать, если у вас есть какие-либо мысли.

Похоже, вам понадобятся системы ретрансляции транзакций, чтобы ваш пользователь децентрализованного приложения подписывал транзакции, а ретранслятор затем выполнял их на Ethereum. Для этого вы можете взглянуть на https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1077.md и аналогичную реализацию на https://github.com/gnosis/safe-contracts .

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

PS: мы предприняли попытку создать децентрализованную ретрансляционную сеть на хакатоне по адресу https://devpost.com/software/hermes-network , и я надеюсь, что очень скоро появятся другие подобные проекты.