Wie erhalte ich Signaturparameter aus einer Transaktion?

In meiner Anwendung muss ich bestimmte Transaktionssignaturen auf der Ethereum-Blockchain manuell überprüfen. Atm Ich führe Geth- und Paritätsknoten aus und frage Transaktionsinformationen über die RPC-Schnittstelle ab, aber es scheint, dass die ecdsa-Sig-Parameter fehlen.

Soweit ich sehe, scheinen sowohl Geth als auch Parität keine Signaturparameter über die RPC-Schnittstelle verfügbar zu machen, wie es Bitcoin tut (es legt die Ein- und Ausgabeskripte mit offen get_rawtransaction). Gibt es eine einfache Möglichkeit, auf sie zuzugreifen oder sowohl Geth- als auch Parity-Strip-Signaturen in ihren lokalen Blockchain-Caches durchzuführen, sobald Signaturen aus irgendeinem Grund verifiziert wurden? Ich frage mich, weil sogar ecp nur die Rohtransaktionen von Blöcken in txhash, rcpt, from, amount, price, gaslimit, payload(= Daten) zu analysieren scheint, blockidwobei die Signaturparameter fehlen (oder sind sie im Nutzlastfeld versteckt?).

Was wäre eine Option, um vollständige Rohtransaktionsinformationen zu erhalten, als hätte ich sie gerade mit signiert web3.eth.sign()?

Antworten (1)

In dem von eth_getTransactionmeiner Geth-Instanz zurückgegebenen Transaktionsobjekt sind die ECDSA-Parameter enthalten:

curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params": ["0x47ced780ecca7c273243dded62c6a240f3ba4332ab067345909a304d7294cfda"],"id":1}' localhost:8545

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "blockHash": "0x7126318b5736f655049fcb7c3f6ef02d0986a5553cb1b1fbc0ca188543b1e60a",
    "blockNumber": "0x339d04",
    "from": "0xea674fdde714fd979de3edf0f56aa9716b898ec8",
    "gas": "0x15f90",
    "gasPrice": "0x4a817c800",
    "hash": "0x47ced780ecca7c273243dded62c6a240f3ba4332ab067345909a304d7294cfda",
    "input": "0x",
    "nonce": "0x15dcf8",
    "to": "0xf34a762291e2578b79646cbf296abf4f5a242b3d",
    "transactionIndex": "0x0",
    "value": "0x16978c7c04171dc",
    "v": "0x26",
    "r": "0xe448b291661c63d8add23a8be2eb726e92ace5c100e902ee75a6396f8df8d221",
    "s": "0x197fb2e88dc2d4e8f606faf6abdb8012d21b024939756ceaf2d39b4bef619fa4"
  }
}

Beachten Sie die Parameter v, r, und s: Diese benötigen Sie, um die Signatur zu verifizieren. Ich bin mir nicht sicher, warum diese nicht in der offiziellen RPC-Spezifikation enthalten sind, aber sie sind verfügbar, wenn Sie sie benötigen

Gleiches bei Parität.