Ich verwende web3, um die folgende Transaktion zu signieren und sie mit sendSignedTransaction an einen Knoten zu senden. Allerdings bekomme ich immer den Fehler "ungültiger Absender".
Ich habe die Netzwerk-ID in genesis.json auf 6454 gesetzt und der Knoten wurde mit derselben Netzwerk-ID gestartet. Ich habe das gleiche auch für die Unterzeichnung der Transaktion verwendet.
{
"to": "0x609be532b4411da754c55295f9a067819d2b563c",
"value": "0xff",
"gas": "0x61a8",
"gasPrice": "0x1e8f1c10800",
"from": "0x55eb76b1d8ff63ffbe211913a7f91a17cb98063c",
"nonce": "0x0",
"chainId": 6454,
"data": ""
}
BEARBEITEN; Hier ist meine genesis.json
{
"config": {
"chainId": 6454,
"homesteadBlock": 1,
"eip150Block": 2,
"eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"eip155Block": 3,
"eip158Block": 3,
"byzantiumBlock": 4,
"clique": {
"period": 1,
"epoch": 30000
}
},
"nonce": "0x0",
"timestamp": "0x5b33af98",
"extraData": "0x0000000000000000000000000000000000000000000000000000000000000000240ebbd4e36bce0071994d62c78319d028fb651bac65b46b5c6257bd7c790fa51eb54d9f68f559d20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"gasLimit": "0x47b760",
"difficulty": "0x1",
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": {
"240ebbd4e36bce0071994d62c78319d028fb651b": {
"balance": "0x500000000000000000000000000000000000000000000000000000000000000"
},
"ac65b46b5c6257bd7c790fa51eb54d9f68f559d2": {
"balance": "0x500000000000000000000000000000000000000000000000000000000000000"
}
},
"number": "0x0",
"gasUsed": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
Der wahrscheinlichste Fehler ist, dass Sie falsch verwendet haben chainId
oder Ihre private Kette die EIP155-Blocknummer nicht konfiguriert hat. Setzen Sie die EIP155-Blocknummer auf 1, um dies zu beheben. Auch die Brieftasche, die Sie zum Senden der Transaktion verwenden, muss EIP155-fähig sein.
Andernfalls müssen Sie Ihren Signaturprozess debuggen, da Ihre Frage keine detaillierten Informationen enthält, um eine genauere Vermutung anzustellen.
Aus den Quellen:
// Make sure the transaction is signed properly
from, err := types.Sender(pool.signer, tx)
if err != nil {
return ErrInvalidSender
}
Eine weitere Sache, die Sie überprüfen sollten, ist, ob Ihr POA-Knoten SSL verwendet. Wenn ja, geben Sie beim Verbinden des Knotens bitte die https-basierte URL an. Ich hatte das gleiche Problem und hatte lange Zeit mit der Ketten-ID zu kämpfen. Überprüfen Sie dann schließlich, ob die Knoten-URL https anstelle von http war, und es hat wie ein Zauber funktioniert
Dies sieht nach einem Problem mit Version 2.0.0 von ethereumjs-tx aus:
https://github.com/ethereumjs/ethereumjs-tx/issues/165 16
Sie müssen Ihre Transaktion wie folgt aufbauen:
const tx = new Tx(txObject, {chain:'ropsten', hardfork: 'petersburg'})
Shahul Hamed
Nulik
geth
die Quelladresse nicht aus Ihrer Signatur ableiten kann. Führen Sie eine getTransaction() aus und hängen Sie die Ausgabe an Ihre Frage an. Vielleicht entdeckt jemand einen Fehler in Ihren R-, S-, V-FeldernNulik