Crear cuentas sin conexión y firmar transacciones

Tengo una pregunta sobre el lado del cliente de Ethereum, tal vez alguien pueda dar una pista...

Se trata de construir una DApp, necesitamos un cliente web capaz de crear sin conexión una clave privada y una clave pública, y también enviar transacciones firmadas a un nodo Ethereum.

Después de investigar por un tiempo llegamos a la conclusión de que esto es posible a través de la biblioteca web3.js (y otras como ethereumjs), pero implica usar nodejs y browserfy, ¿no? La pregunta es:

¿Hay alguna otra solución más simple, como usar un archivo js simple?

¡Gracias de antemano!

Respuestas (2)

Estás haciendo una suposición equivocada. El uso de Web3.js no requiere Browserify o Node.JS. Puede colocar la dependencia de web3.js en el código HTML como cualquier otra biblioteca de JavaScript. Solo la compilación de la distribución Web3.js requiere esta cadena de herramientas de compilación.

Aquí hay una aplicación simple "index.html" que usa web3.js.

¿Es web3.js suficiente para crear claves privadas y públicas? ¿Y suficiente para firmar transacciones? ¿O debería usar ethereumjs también?
Si no necesita claves deterministas, una clave privada es cualquier número aleatorio seguro. web3.js puede derivar una clave/dirección pública de una clave privada.
¿Puedo usar web3.js de forma independiente para firmar transacciones?

Pruebe la billetera ligera consensys

Las funciones de txutils se pueden usar para construir transacciones cuando están fuera de línea, para usar, por ejemplo, en implementaciones de billetera fría con espacio de aire.

https://github.com/ConsenSys/eth-lightwallet

¡Gracias! Cuando probé eth-lightwallet-master/example/webwallet.html sin conexión, obtuve estos errores en la consola de JavaScript: Uncaught ReferenceError: asíncrono no está definido en getBalances (webwallet.html:52) en HTMLButtonElement.onclick (webwallet.html:154) Es eso normal?