как работает myether кошелек (веб-сайт)

Я хочу создать веб-сайт, на котором мои пользователи могут регистрироваться и входить в систему, но не использовать какую-либо базу данных. Я хочу использовать открытый/закрытый ключ. Возьмем https://www.myetherwallet.com/ . Он говорит, что он не хранит ключи для меня. так где они? когда я хочу войти на этот веб-сайт и ввести закрытый ключ, как это вообще заставляет меня войти в систему?

Главный вопрос: как мне сделать тот же принцип, используя php и веб-сайт, который сейчас есть на myetherwallet.com?

Можете ли вы объяснить, что вы подразумеваете под «войдите на этот сайт»? О какой функциональности веб-сайта вы конкретно говорите? (Насколько я знаю, на MEW некуда войти...)

Ответы (4)

Ни MyEtherWallet, ни MyCrypto не хранят ваши кошельки нигде. Вы владеете своими кошельками. Каждый раз, когда вы получаете доступ к своему кошельку через любой сервис, это делается локально, в вашем браузере. Вы даже можете получить доступ к своим кошелькам в автономном режиме , без подключения к Интернету!

Ваш закрытый ключ, файл хранилища ключей или аппаратный кошелек получают ваш открытый ключ, который определяет ваш адрес. MyEtherWallet или MyCrypto никогда не касаются ваших средств, вся логика доступа к вашему кошельку находится в локальном интерфейсе. Единственный раз, когда любая из этих служб вступает в игру, — это когда вы хотите получить баланс учетной записи или отправить подписанную (локально подписанную!) транзакцию. Оба этих действия можно выполнить без использования MyEtherWallet или MyCrypto, например, запустив собственный узел или используя Etherscan .

Алоха :)

Я не совсем уверен в php, но я сделал тот же сценарий в Node.js:

Вы должны загрузить библиотеку web3 ( https://www.npmjs.com/package/web3 ) [взгляните]. Когда вы успешно импортируете его, вы можете начать экспериментировать, и я настоятельно рекомендую начать с документации и полагаться на нее! :)

https://web3js.readthedocs.io/en/1.0/web3-eth-accounts.html#create

Когда вы создадите ключи, они будут возвращены вам (в форме обратного вызова), поэтому впоследствии вы должны решить, что с ними делать.

Ответ на ваш главный вопрос: это невозможно без какой-либо «базы данных» (даже если это просто файл на жестком диске или что-то в этом роде), потому что вам нужно убедиться, что данный закрытый ключ существует, чтобы впустить пользователя.

Последняя рекомендация: когда вы понимаете, что невозможно обойтись без какой-либо базы данных, подумайте хотя бы о проблемах безопасности.

Надеюсь, я помог, хоть немного.

Всего наилучшего! :)

Спасибо за ваши идеи. Так как же myetherwallet.com делает такие вещи? Тогда у них есть кошелек на их сервере. но если у них есть бумажник, почему они говорят, что вообще не хранят мои ключи?

Я бы ответил вам в комментарии, но это слишком долго (извините заранее).

Ну, они все время общаются с узлом Ethereum (вы можете сделать то же самое через вышеупомянутую библиотеку «web3». Сначала они создают для вас кошелек (они вызывают узел ethereum через web3 и ждут ответа), после этого они возвращают закрытый ключ и Вам файл UCT.После этого, если вы решите «войти» на их веб-сайт, они просто отправят информацию, которую вы им предоставили, для связи с узлом ethereum и получите информацию о вашей учетной записи, которая впоследствии будет представлена ​​вам (это точно так же как вы вошли в систему/аутентифицированы, за исключением того, что они не сохраняют эту информацию в своей базе данных, просто обмениваются данными с узлом туда и обратно)

Я согласен, но, как мы все знаем, узел должен находиться на их сервере, и этот узел должен связываться с кошельком. так что у них есть наши кошельки. myetherwallet.com может даже захватить его и украсть мои эфиры.
О, нет, это неправильно. Все, что вам предоставляется (после входа в систему), может быть сделано полностью без связи с кошельком. (возможно, вам следует проверить библиотеку web3, чтобы понять). Кроме того, узел не обязательно должен находиться на их серверах/инфраструктуре, он может быть на «стороннем» сервере ( например , infura.io ). Вам всегда советуют защитить свои средства с помощью аппаратного кошелька или раскрутить свой собственный узел/кошелек, если вы боитесь.
Я знаю, что это не обязательно должно быть на их сервере и может связываться с некоторыми другими серверами. но поскольку кошелек находится на чьем-то сервере, это очень плохо. Вот почему люди используют бинарные кошельки. (установка в формате .exe, потому что он будет сохранен локально). а по поводу myetherwallet, кошелек хранится где-то у кого-то в руках :)

В случае Etheruem Wallet закрытый ключ шифруется парольной фразой и хранится локально в файле хранилища ключей без расширения (формат JSON, но без расширения) с некоторыми дополнительными данными.

Открытый ключ генерируется из закрытого ключа, а затем зашифровывается в файл json (хранилище ключей) с вашей парольной фразой и чем-то, что называется солью, которая является случайно сгенерированным значением.

Открытый ключ может быть получен из закрытого ключа, но обратное невозможно. Нельзя получить закрытый ключ из открытого ключа. Парольная фраза используется для шифрования закрытого ключа. Таким образом, с помощью парольной фразы можно получить закрытый ключ, а с помощью закрытого ключа можно получить открытый ключ. Парольная фраза -> Закрытый ключ -> Открытый ключ

Это неотъемлемая особенность асимметричного криптографического алгоритма.

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

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