Quiero crear nuevas cuentas a través de mi interfaz web Dapp y desbloquear una cuenta específica para que se puedan procesar las transacciones. No lo vi en la documentación de web3.js, así que me pregunto si eso está en la hoja de ruta de web3.js.
Web3.js tiene soporte completo para la administración de cuentas a partir de v1.0.0, incluida la creación de una nueva cuenta . v1.0.0 todavía está en versión beta, pero está cerca de la producción y ya es la versión lanzada a través de npm
. Gracias Thom Ives por señalar esto.
Ejemplo completo procedente de la documentación de web3.js:
web3.eth.accounts.create();
> {
address: "0xb8CE9ab6943e0eCED004cDe8e3bBed6568B2Fa01",
privateKey: "0x348ce564d427a3311b6536bbcff9390d69395b06ed6c486954e971d960fe8709",
signTransaction: function(tx){...},
sign: function(data){...},
encrypt: function(password){...}
}
web3.eth.accounts.create('2435@#@#@±±±±!!!!678543213456764321§34567543213456785432134567');
> {
address: "0xF2CD2AA0c7926743B1D4310b2BC984a0a453c3d4",
privateKey: "0xd7325de5c2c1cf0009fac77d3d04a9c004b038883446b065871bc3e831dcd098",
signTransaction: function(tx){...},
sign: function(data){...},
encrypt: function(password){...}
}
web3.eth.accounts.create(web3.utils.randomHex(32));
> {
address: "0xe78150FaCD36E8EB00291e251424a0515AA1FF05",
privateKey: "0xcc505ee6067fba3f6fc2050643379e190e087aeffe5d958ab9f2f3ed3800fa4e",
signTransaction: function(tx){...},
sign: function(data){...},
encrypt: function(password){...}
}
Web3.js no tiene esta capacidad incorporada y probablemente nunca la tendrá. Sin embargo, existen soluciones personalizadas como https://github.com/SilentCicero/ethereumjs-accounts/ .
ethereumjs-accounts
le permite crear cuentas en el navegador, luego usar estas direcciones para web3.js
transacciones. Las claves privadas se guardan localStorage
y se pueden cifrar. Asegúrese de leer las advertencias de seguridad y comprender lo que está haciendo.
https://metamask.io/ es un enfoque más amplio para hacer que las DApps sean accesibles a través de un navegador normal. También contiene administración de identidades (por ejemplo, cuentas).
En mi opinión, las soluciones como ethereumjs-accounts
Metamask pueden ser una buena vía de acceso para hacer que las DApps sean accesibles para una amplia audiencia, para transacciones de bajo valor o incluso solo para acceso de solo lectura a las DApps.
Es poco probable que se agregue funcionalidad relacionada con las cuentas a web3.js.
Mist es un navegador diseñado para ejecutar DApps y administrar cuentas. Tiene lo mist.requestAccount
que parece ser la API esperada que deberían usar las DApps.
Probablemente la razón principal por la que Mist y no web3.js es que un navegador en sí mismo puede proporcionar más seguridad que Javascript. Por ejemplo, un cuadro de diálogo modal en Mist que solicita al usuario su cuenta y contraseña es más difícil de falsificar, manipular o interceptar que un cuadro de diálogo HTML/CSS/JS.
Después de solicitar una actualización en mis comentarios a la respuesta de Aron, hice una búsqueda usando una modificación de este título y descubrí que web3.js ahora, de hecho, le permite crear nuevas cuentas. VER AQUÍ . Al leer estos documentos web3.js en la creación, parece crear cuentas de una manera tan segura como MetaMask.
Puedes consultar ethers.js
Ethers.js tiene una administración completa de billetera, separada de geth (como debería ser, ya que es solo criptografía). Luego puede adjuntar un proveedor a su billetera (web3 lo hace básicamente al revés). Luego adjunta esta billetera + proveedor al artefacto del contrato y tiene una instancia de contrato a la que puede llamar.
tom ives
lanoxx
web3.personal.newAccount
función.