¿Puede un dapp admitir metamask y otros medios para el almacén de claves?

Estoy usando Metamask para el almacenamiento de claves en mi dapp. Tengo entendido que la aplicación Metamask inyecta un objeto web3 y maneja todas las funciones de firma cuando es necesario. Pero Metamask actualmente brinda soporte solo para Chrome y Firefox (que yo sepa) y el complemento de Firefox todavía tiene algunos problemas (recibo errores extraños y el complemento se cuelga a veces). No estoy seguro de si hay soporte para Android todavía. Así que quiero que haya una opción alternativa para usar metamask o firmar todo pidiéndole al usuario la clave. No sé cómo hacer esto último y si es posible hacer ambas cosas en la misma aplicación.

Respuestas (3)

Si sigue las pautas de compatibilidad sobre el desarrollo de MetaMask , es muy probable que su dapp también funcione correctamente con las alternativas de MetaMask, como Mist, Parity Browser, Toshi y SpaceSuit.

Es posible pedirles a los usuarios una clave (EtherDelta les da a los usuarios esta opción, por ejemplo), pero también es un muy mal hábito enseñar a sus usuarios (EtherDelta fue pirateado hace un tiempo y a los usuarios que hicieron esto les robaron su éter).

Una alternativa es hacer que la interfaz de sus contratos inteligentes sea lo suficientemente simple como para que llamar a los contratos directamente (a través de algo como MyEtherWallet o la consola Truffle) no sea demasiado confuso.

Usar metamask es solo una forma de hacerlo. También puede usar MIST o cualquier otra billetera que admita web3. Aunque el uso de metamask hace el trabajo rápidamente. Si puede proporcionarme más detalles de lo que hace exactamente su aplicación, entonces puedo darle una solución más específica.

Quiero decir si puedo hacer fácilmente el proceso de firma de la aplicación sin quitar el mecanismo "descentralizado". Estoy pensando en usar directamente infura en lugar de usar metamask. Entiendo el uso de un nodo implementado que realiza infura, pero el proceso de firma es algo que no puedo entender. No quiero almacenar la clave de los usuarios.

Esto es lo que necesitas:

https://github.com/MetaMask/provider-engine

Puede permitir que el usuario con metamask aún se conecte, O permitir que el usuario ingrese la clave privada y luego inyecte este nuevo web3.

Hice una aplicación móvil y una aplicación de escritorio a partir de una aplicación web que usa este código y funciona con fluidez.