Wallets mit Web3j erstellen

Ich generiere einen Code, um Brieftaschen für eine private Kette zu erstellen, die mit Ethereum erstellt wurde.

String password = unlockAccountParameter.getPass();
        ECKeyPair keyPair = Keys.createEcKeyPair();
        WalletFile wallet = Wallet.createStandard(password, keyPair);

        System.out.println("Private key: " + keyPair.getPrivateKey().toString(16));
        System.out.println("Account: " + wallet.getAddress());

        String fileName = WalletUtils.generateNewWalletFile(unlockAccountParameter.getPass(), new File("C:\\Users\\emendez\\Wallet"), true);

        System.out.println("File name: " + fileName);

Das gibt mir diese Ausgabe zurück:

Priatenschlüssel: 67f7a218d5d595dff19cafca9384b5a6e0693bc085d7c16468b8a8a44e20135a Konto: bf29892787a79bb66188f9c44ca9ffd9ccff37aa

Dateiname: UTC--2018-11-15T12-26-51.672000000Z--252209a58e16be3c43776e38ff4bfaeb70660cfb.json

Die JSON-Datei befindet sich in dem Pfad, in dem Code geschrieben wird (in der realen Maschine). Aber wenn ich zur Geth-Konsole gehe, um das Konto aufzulisten, das im Knoten (virtualmachine) erstellt wurde, wird das Konto, das ich gerade erstellt habe, nicht angezeigt.

Also denke ich, dass ich keine Transaktion zwischen ihnen machen kann.

Irgendeine Hilfe??

Antworten (1)

Das Problem hängt möglicherweise mit dem Ort zusammen, an dem Sie Ihre Brieftasche aufbewahren.

Um automatisch erkannt zu werden, muss die Wallet-Datei in einem Ordner namens keystoreinnerhalb des Ordners gespeichert werden, in dem geth installiert ist. Dies sind die häufigsten Wege:

– Mac: ~/Library/Ethereum

– Linux: ~/.ethereum

– Windows: %USERPROFILE%\AppData\Roaming\Ethereum

Wenn Sie nicht auf diesen Ordner zugreifen können, können Sie Ihr Konto mit diesem Befehl importieren:

geth account import --datadir /fileWithOnlyPrivateKey --password /fileWithPasswordStringToEncryptThatKey ./key.prv

Und Ihre endgültige Lösung wäre, die Transaktion in Ihrem Code zu generieren und die bereits signierte Transaktion an den Knoten zu senden (Dies wäre der sicherste Ansatz, wenn Sie Ihren privaten Schlüssel sicher aufbewahren können). Sehen Sie sich web3 an, um zu erfahren, wie das geht

Und hat es Sinn meinen Geldbeutel im Netz zu schonen?? Ich meine mein persönliches Portemonnaie, das ich in meiner Tasche aufbewahre. Ich bin neu, also ist es wahrscheinlich eine Idiotenfrage. Danke
Dies würde Ihre Brieftasche auf Ihrem Geth-Knoten speichern, nicht im Netz, Sie können es sogar so machen, dass Informationen nur von localhost zugänglich sind. In einigen Fällen möchten Sie jedoch, dass sich Ihre App auf einem anderen Server als Ihrem Knoten befindet. In diesem Fall möchten Sie Ihre Brieftasche nicht im Knoten aufbewahren. Sie können sie überall aufbewahren, den privaten Schlüssel lesen und unterschreiben die Transaktionen vor Ort und senden Sie diese signiert. Dies sind die wichtigsten Bibliotheken dafür: web3, ether.js oder die ethereumjs-Bibliotheken (ich empfehle web3)