cómo funciona myether wallet (sitio web)

Quiero crear un sitio web donde mis usuarios puedan registrarse e iniciar sesión, pero sin usar ningún tipo de base de datos. Quiero usar clave pública/privada. Tomemos https://www.myetherwallet.com/ . Dice que no almacena claves para mí. Entonces, ¿dónde están? cuando quiero iniciar sesión en ese sitio web y escribir la clave privada, ¿cómo me hace iniciar sesión?

La pregunta principal es: ¿Cómo hago el mismo principio usando php y el sitio web que tiene myetherwallet.com en este momento?

¿Puede explicar qué quiere decir con "iniciar sesión en ese sitio web"? ¿De qué funcionalidad del sitio web estás hablando específicamente? (Hasta donde yo sé, no hay ningún lugar para iniciar sesión en MEW...)

Respuestas (4)

Ni MyEtherWallet ni MyCrypto almacenan sus billeteras en ningún lugar. Usted es dueño de sus billeteras. Cada vez que accede a su billetera a través de cualquiera de los servicios, se hace localmente, en su navegador. ¡Incluso puede acceder a sus billeteras sin conexión , sin tener una conexión a Internet!

Su clave privada, archivo de almacén de claves o billetera de hardware derivan su clave pública, que deriva su dirección. MyEtherWallet o MyCrypto nunca tocan sus fondos, la lógica para acceder a su billetera está en la interfaz local. La única vez que cualquiera de los servicios entra en juego es cuando desea recuperar el saldo de la cuenta o enviar una transacción firmada (¡firmada localmente!). Ambas acciones se pueden realizar sin usar MyEtherWallet o MyCrypto, por ejemplo, ejecutando su propio nodo o usando Etherscan .

hola :)

No estoy completamente seguro de php, pero hice el mismo escenario en Node.js:

Debe descargar la biblioteca web3 ( https://www.npmjs.com/package/web3 ) [echar un vistazo]. Cuando lo importe con éxito, podría comenzar a experimentar, ¡y mi cálida recomendación es comenzar y confiar en la documentación! :)

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

Cuando cree las claves, se le devolverán (en forma de devolución de llamada), por lo que luego debe decidir qué hacer con ellas.

La respuesta a su pregunta principal es: es imposible sin algún tipo de 'base de datos' (incluso si es solo un archivo en el disco duro o algo así), porque necesita verificar que existe la clave privada dada para permitir que el usuario ingrese.

Última recomendación: cuando se da cuenta de que es imposible pasar sin algún tipo de base de datos, al menos piense en las preocupaciones de seguridad.

Espero haber ayudado, al menos un poco.

¡Mis mejores deseos! :)

Gracias por tus ideas. Entonces, ¿cómo myetherwallet.com hace este tipo de cosas? Entonces tienen una billetera en su servidor. pero si tienen la billetera, ¿por qué dicen que no guardan mis llaves?

Te respondería en un comentario, pero es demasiado largo (lo siento de antemano).

Bueno, se comunican todo el tiempo con el nodo Ethereum (usted podría hacer lo mismo a través de la biblioteca 'web3' antes mencionada. En primer lugar, crean una billetera para usted (llaman al nodo ethereum a través de web3 y esperan una respuesta), luego devuelven la clave privada y UCT para usted. Luego, si decide 'iniciar sesión' en su sitio web, solo envían la información que les proporcionó para comunicarse con el nodo ethereum y obtener información sobre su cuenta, que luego se le presenta (es exactamente lo mismo como ha iniciado sesión/autenticado, excepto que no guardan esa información en su base de datos, solo se comunican con el nodo de un lado a otro)

Estoy de acuerdo, pero como todos sabemos, el nodo debe estar en su servidor y ese nodo debe comunicarse con la billetera. por lo que tienen nuestras billeteras. myetherwallet.com incluso puede agarrarlo y robar mis éteres.
Oh, no, eso está mal. Todo lo que se le presenta (después de que 'inicie sesión') se puede hacer completamente sin comunicarse con una billetera. (tal vez debería consultar la biblioteca web3, para comprender). Además, el nodo no tiene que estar en sus servidores/infraestructura, podría estar en un servidor de 'terceros' ( infura.io por ejemplo). Siempre se le recomienda proteger sus fondos a través de una billetera de hardware, o activar su propio nodo/billetera si tiene miedo.
Sé que no necesita estar en su servidor y podría comunicarse con otros servidores. pero como la billetera está en el servidor de alguien, es una lástima. es por eso que la gente usa las billeteras binarias. (instalación .exe, porque se guardará localmente). y sobre myetherwallet, la billetera está almacenada en algún lugar en las manos de alguien :)

En el caso de Etheruem Wallet, la clave privada se cifra con una frase de contraseña y se almacena localmente en un archivo de almacén de claves sin extensión (formato JSON, pero sin extensión) con algunos datos adicionales.

La clave pública se genera a partir de la clave privada y luego se cifra en un archivo json (almacén de claves) con su frase de contraseña y algo llamado sal, que es un valor generado aleatoriamente.

La clave pública puede derivarse de la clave privada, pero no es posible lo contrario. No se puede derivar la clave privada de la clave pública. La frase de contraseña se utiliza para cifrar la clave privada. Entonces, con la ayuda de la frase de contraseña, se puede derivar la clave privada y con la ayuda de la clave privada se puede derivar la clave pública. Frase de contraseña -> Clave privada -> Clave pública

Esta es una característica inherente del algoritmo criptográfico asimétrico.

Según una respuesta aceptada de esta pregunta, ethereum utiliza el algoritmo de firma digital de curva elíptica para generar el par de claves. Tendrás que implementar lo mismo en PHP.

pero donde se guarda la billetera? Esa es mi pregunta. mire myetherwallet.com. Dicen que no almacenan mi clave privada/clave pública. cuando ingreso la clave privada en su sitio web, me registra. ¿Qué pasa si no la almacenan? Entonces resulta que lo almacenan, ¿verdad? ¿dónde? en la billetera entonces pueden robar mi dinero.
myetherwallet almacena sus claves privadas en el almacén de datos de su navegador.
¿Entonces no usa ningún tipo de billetera?