Я пытаюсь понять, как пользователь может пройти аутентификацию (например, войти в систему) с помощью MetaMask, подобно тому, как Cryptokitties заставляет вас регистрироваться/входить в систему?
Насколько я понимаю, нам нужно, чтобы пользователь подписал сообщение, чтобы подтвердить право собственности на закрытый ключ, который генерирует адрес пользователя. Итак, если у меня есть экземпляр web3 в моем файле .js, как я могу предложить пользователю войти в систему с помощью метамаски, например Cryptokitties?
У меня есть это в моем файле javascript:
// Is there is an injected web3 instance?
if (typeof web3 !== 'undefined') {
App.web3Provider = web3.currentProvider;
web3 = new Web3(web3.currentProvider);
} else {
// If no injected web3 instance is detected, fallback to Ganache.
App.web3Provider = new web3.providers.HttpProvider('http://127.0.0.1:7545');
web3 = new Web3(App.web3Provider);
}
Это включает в себя получение подписей сообщений на стороне клиента и их проверку на стороне сервера.
Вы можете увидеть недавнюю запись в блоге MetaMask об одном из наших последних методов подписи здесь:
https://medium.com/metamask/scaling-web3-with-signtypeddata-91d6efc8b290
Web3 Auth — отличный проект, который, я думаю, поможет вам не только понять, как подписывать сообщения, но и покажет вам лучшие методы хранения ключей аутентификации в браузере клиентов.