Entsperren von Konten für eine Backoffice-App

Ich schreibe eine "Backoffice"-App und brauche eine Möglichkeit, ein Konto automatisiert zu entsperren.

Ja, ich weiß, dass die Sicherheit von nodejs fragwürdig ist, aber es gibt Möglichkeiten, dies zu lösen. Web3 daran zu hindern, dies überhaupt zu tun, scheint keine umfassende Lösung zu sein.

Die aktuelle Antwort lautet "use a browser/mist", weil sie dafür eine browserbasierte API haben, aber das ist für eine in nodejs (oder python oder ...) geschriebene Backoffice-App nicht akzeptabel. Was ist also eine gute Antwort?

web3 unterstützt diese API gemäß einer verwandten Antwort nicht .

Diese Antwort wird auch für so etwas wie eine Entsperrung mit geteiltem Schlüssel benötigt (z. B. wie einige der neueren Bitcoin-Geldbörsen). Ich würde sowieso eine n-Wege-Split-Key-Entsperrung für meinen Gebrauch bevorzugen. Hmm, können wir dafür einen Smart Contract schreiben?...

Antworten (2)

Anscheinend fragen Sie: „ Wie kann ich einen Vertrag erstellen, den Benutzer als Konto verwenden können, der jedoch durch serverseitige Aufrufe gesperrt und entsperrt werden kann? '.

Der Mist-Multisig-Wallet-Code ist hier verfügbar, er läuft unabhängig von Mist und kann wie jeder normale Vertrag aufgerufen werden. Sie können diesen Vertragscode an Ihren Anwendungsfall anpassen und diesen Vertrag dann von nodejs (unter Verwendung von web3 als serverseitiges Modul) oder anderen Sprachen (unter Verwendung anderer json-rpc- oder IPC-Bibliotheken ) aufrufen.

Nun, ich möchte dafür keinen Vertrag erstellen müssen ... das ist eher eine Unternehmens-Brieftasche, bei der mehrere Führungskräfte unterschreiben müssen, um Ether auszugeben.
Ich habe mir den Code angesehen und verstehe es jetzt. Jeder, der Sicherheit will, wird, sobald er Ether abgebaut hat, ihn sofort an eine Multi-Sig-Wallet senden und alle Transaktionen über diese Wallet übertragen. Ich stimme für diese Lösung

Ich habe gerade eine verwandte Frage unter Wie entsperre ich Konten programmgesteuert nach dem Start des Knotens beantwortet? .

Die Lösung in der obigen Frage verwendet die IPC-API von geth, die über einen Datei-Socket wie /home/user/.ethereum/geth.ipc.

Möglicherweise müssen Sie die RPC-API von geth verwenden, die über das TCP/IP-Protokoll kommuniziert. personalIn diesem Fall müssen Sie den --rpcapiParameter ergänzen . Das Relevante geth --helpist unten dargestellt:

API AND CONSOLE OPTIONS:
  --rpc                                 Enable the HTTP-RPC server
  --rpcaddr "127.0.0.1"                         HTTP-RPC server listening interface
  --rpcport "8545"                          HTTP-RPC server listening port
  --rpcapi "db,eth,net,web3"                        API's offered over the HTTP-RPC interface
  --ipcdisable                              Disable the IPC-RPC server
  --ipcapi "admin,db,eth,debug,miner,net,shh,txpool,personal,web3"  API's offered over the IPC-RPC interface
  --ipcpath "/home/user/.ethereum/geth.ipc"             Filename for IPC socket/pipe
  --rpccorsdomain                           Domains from which to accept cross origin requests (browser enforced)
  --jspath "."                              JavaSript root path for `loadScript` and document root for `admin.httpGet`
  --exec                                Execute JavaScript statement (only in combination with console/attach)