Verfügt Web3.js über die Funktionalität, neue Konten zu erstellen und ein Konto für einen bestimmten Zeitraum für eine Reihe von Transaktionen zu entsperren?

Ich möchte über meine Dapp-Weboberfläche neue Konten erstellen und ein bestimmtes Konto entsperren, damit Transaktionen verarbeitet werden können. Ich habe es nicht in der web3.js-Dokumentation gesehen, also frage ich mich, ob das auf der web3.js-Roadmap steht?

Antworten (4)

Aktualisierte Antwort per 4. Januar 2018

Web3.js bietet ab Version 1.0.0 umfassende Unterstützung für die Kontoverwaltung, einschließlich der Erstellung eines neuen Kontos . v1.0.0 befindet sich noch in der Beta-Phase, steht aber kurz vor der Produktion und ist bereits die Version, die bis veröffentlicht wurde npm. Danke Thom Ives für den Hinweis.

Vollständiges Beispiel aus der web3.js-Dokumentation:

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){...}
}

Alte Antwort von 2016

Web3.js hat diese Fähigkeit nicht eingebaut und wird es wahrscheinlich nie haben. Es gibt jedoch benutzerdefinierte Lösungen wie https://github.com/SilentCicero/ethereumjs-accounts/ .

ethereumjs-accountsermöglicht es Ihnen, Konten im Browser zu erstellen und diese Adressen dann für web3.jsTransaktionen zu verwenden. Private Schlüssel werden aufbewahrt localStorageund können verschlüsselt werden. Lesen Sie unbedingt die Sicherheitswarnungen und verstehen Sie, was Sie tun.

https://metamask.io/ ist ein breiterer Ansatz, um DApps über einen normalen Browser zugänglich zu machen. Es enthält auch Identitätsmanagement (z. B. Konten).

Meiner Ansicht ethereumjs-accountsnach können Lösungen wie und Metamask ein guter Einstieg sein, um DApps einem breiten Publikum zugänglich zu machen, für Transaktionen mit geringem Wert oder sogar nur für den schreibgeschützten Zugriff auf DApps.

oder Gemeinschaft im Allgemeinen, Vieles hat sich seit Arons Antwort geändert. Gibt es neue Möglichkeiten, diese Frage zu beantworten?
web3js 0.20.x ermöglicht das Erstellen eines neuen Kontos mit der web3.personal.newAccountFunktion.

Es ist unwahrscheinlich, dass Funktionen in Bezug auf Konten zu web3.js hinzugefügt werden.

Mist ist ein Browser zum Ausführen von DApps und zum Verwalten von Konten. Es mist.requestAccountscheint die erwartete API zu sein, die DApps verwenden sollten.

Wahrscheinlich ist der Hauptgrund, warum Mist und nicht web3.js, dass ein Browser selbst mehr Sicherheit bieten kann als Javascript. Beispielsweise ist ein modaler Dialog in Mist, der einen Benutzer zur Eingabe seines Kontos und Passworts auffordert, schwieriger zu fälschen, zu manipulieren oder abzufangen als ein HTML/CSS/JS-Dialog.

Im Moment erfordert Mist, dass Sie einen vollständigen Knoten ausführen. Aber das ist nicht allzu benutzerfreundlich, wenn man bedenkt, dass die Blockchain bereits bei 10 GB liegt. Wenn ich einige Endbenutzeranwendungen entwickeln möchte, müssen wir einen Weg finden, damit die Benutzer Nebel vermeiden oder Nebel weniger ressourcenintensiv machen können, finden Sie nicht?
Sobald das LES-Protokoll abgeschlossen ist, kann Mist arbeiten, ohne die vollständige Blockchain herunterzuladen.

Nachdem ich in meinen Kommentaren zu Arons Antwort eine Aktualisierung angefordert hatte, habe ich eine Suche mit einer Modifikation dieses Titels durchgeführt und festgestellt, dass web3.js Ihnen jetzt tatsächlich erlaubt, neue Konten zu erstellen. SIEHE HIER . Wenn Sie diese web3.js-Dokumente zum Erstellen lesen, scheint es, dass Konten auf eine Weise erstellt werden, die so sicher ist wie MetaMask.

In der Tat sieht das nach einer vollwertigen Kontoverwaltungsfunktion innerhalb von web3.js aus. Ich bin froh, dass ich mich diesbezüglich als falsch erwiesen habe :)
@AronVanAmmers, ich denke, als Sie ursprünglich geantwortet haben, war es nicht verfügbar. Um jedoch zu lernen, wie man andere Adressen zusammen mit ihren privaten Schlüsseln verwaltet, ohne ihre privaten Schlüssel zu kennen, müssen wir eine Reihe neuer Best Practices lernen und teilen.

Sie können sich ethers.js ansehen

Ethers.js hat ein vollständiges Wallet-Management, getrennt von Geth (wie es sein sollte, da es nur Krypto ist). Sie können dann einen Anbieter an Ihr Wallet anhängen (web3 macht es im Grunde umgekehrt). Sie fügen dann diese Brieftasche + Anbieter an das Vertragsartefakt an und Sie haben eine Vertragsinstanz, die Sie aufrufen können.