Fehler „existiert nicht“ bei Verwendung von web3.eth.personal.sign

In Error using web3.eth.personal.sign wurde das Problem mit der Anzahl der Argumente behoben. Aber jetzt, wo ich den eigentlichen Anruf versuchen kann, erhalte ich die Fehlermeldung „existiert nicht“.

console.log("Calling personal.sign");
this.web3.eth.personal.sign(this.bottleDataToSign, this.addressProdFrom, this.passwordProd)
  .then((sig)=>{
    console.log("sig="+sig);

Konsole:

Calling personal.sign
ERROR
Error: Uncaught (in promise): Error: Returned error: The method personal_sign does not exist/is not available ErrorResponse onreadystatechange wrapFn onInvokeTask runTask invokeTask invokeTask globalZoneAwareCallback

In node_modules/web3-eth-personal/src/index.js sieht es so aus, als ob „sign“ tatsächlich „personal_sign“ aufruft:

new Method({
        name: 'sign',
        call: 'personal_sign',
        params: 3,
        inputFormatter: [formatters.inputSignFormatter, formatters.inputAddressFormatter, null]
    }),

Beim Herumstöbern in anderen node_modules/web3-Verzeichnissen/Dateien habe ich keine Deklaration dafür gesehen:

$ grep -r "personal_sign" web3*
web3-core-helpers/src/formatters.js: * Hex encodes the data passed to eth_sign and personal_sign
web3-eth-personal/src/index.js:            call: 'personal_signTransaction',
web3-eth-personal/src/index.js:            call: 'personal_sign',

Bedeutet dies also, dass der Code einfach fehlt? Nenne ich es richtig? Ich verwende immer noch das npm web3-Paket: 1.0.0-beta.33 und habe es von einem import Web3 from "web3";Anything other to try? Danke.

Hat Ihr Web3-Anbieter personalRPC aktiviert?
Ich weiß nicht. Ich habe eine web3 = new Web3('http://localhost:8545'); // port# from geth's rpcportZeile für die eigentliche web3-Variable, aber ich dachte, das wäre nur nötig, um mit einem Geth-Knoten zu sprechen, was meiner Meinung nach personal.sign nicht tun musste. Wenn nötig, wie würde ich das machen? Danke.
@gkd720 Welche Befehlszeile verwenden Sie, um Geth zu starten?
Ich rufe geth auf mit: $ geth --identity "TestNode1" --rpc --rpcport "8545" --rpccorsdomain "*" --datadir "~/ethereum/TestChain1" --port "30303" --nodiscover --ipcdisable --rpcapi "db,eth,net,web3" --networkid 2429 --keystore ~/Library/Ethereum/keystore consoleAber warum ist das überhaupt wichtig? Ich rufe nur eine web3-Paketmethode auf und versuche noch nicht, eine Transaktion über Geth auszugeben. Das war mein nächster Schritt im Flow. Danke.
@Ayusha möchte erarbeiten, wie??

Antworten (1)

Nach weiterer intensiver Suche sehe ich jetzt, worauf @Ayushya und @Ismael hinauswollten. Nachdem ich „personal“ zur Liste der Elemente für die Option --rcapi hinzugefügt habe, kann ich die Methode eth.personal.sign erfolgreich aufrufen. Sieht so aus, als müsste die typings.d.ts noch manuell angepasst werden, aber ich denke, deshalb nennen sie es "Beta". Danke an beide.

aktualisiert: --rcapi ist jetzt veraltet und verwendet stattdessen --http.api