Wie kann ich eine Transaktion auf Classic wiederholen?

Ich habe versucht, meine usw. aufzuteilen und zu verkaufen, und habe erfolgreich mit Testtransaktionen aufgeteilt, die auf Classic wiedergegeben wurden, aber die Haupttransaktion wurde seit 24 Stunden nicht wiederholt und ich möchte eine Wiederholung erzwingen. Ich habe beide Blockchains zur Verfügung.

Ich habe versucht, die Ausgabe von web3.eth.getTransaction(hash)auf ETH zu nehmen und sie mit ethereumjs-txsigniert und unsigniert auf Classic ohne großen Erfolg neu zu erstellen.

Ich habe keine Methode gesehen, um das rohe Hex einer Transaktion getheinzufügen, um es zu injizierenweb3.eth.sendRawTransaction

Meine Alternative besteht darin, dieselbe Transaktion durchzuführen, die ich an der ETH, aber an der ETC durchgeführt habe

Warum senden Sie nicht einfach dieselbe Transaktion an die andere Kette? Das scheint viel einfacher zu sein, als zu versuchen, es wiederzugeben

Antworten (1)

Nehmen wir an, wir haben diesen TX: https://etherscan.io/tx/0x1f3f3ced1fde1cbc638b3e1ba2b12d890157977208442e8686d03fc4d332225c

  1. Nehmen Sie dieselben Eingabe-Rohdaten und senden Sie sie erneut, ohne die chaindId zu ändern: Nehmen wir rohe TX-Daten:

https://etherscan.io/getRawTx?tx=0x1f3f3ced1fde1cbc638b3e1ba2b12d890157977208442e8686d03fc4d332225c

Also bekommen wir:

0xf8708352d1d685028fa6ae0083015f909465f4dc1a4aef2842c1ae61dfa3db7a69f25b7aff8802e45e9ccc5e1af28026a0ba87b88da31453501f9738e35d6c4f416524f92ea215d6f07b3df5f4216a41f8a0578c288d369a6f9ee073e25e745888f9099e54b604411bce1b456a6dcf3937af

Jetzt können wir versuchen, es an die cURL der POA.network-Kette zu senden:

curl --data '{"method":"eth_sendRawTransaction","params":["0xf8708352d1d685028fa6ae0083015f909465f4dc1a4aef2842c1ae61dfa3db7a69f25b7aff8802e45e9ccc5e1af28026a0ba87b88da31453501f9738e35d6c4f416524f92ea215d6f07b3df5f4216a41f8a0578c288d369a6f9ee073e25e745888f9099e54b604411bce1b456a6dcf3937af"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST https://poa.infura.io

Antwort: {"jsonrpc":"2.0","error":{"code":-32010,"message":"Invalid chain id."},"id":1} Das liegt daran, dass die POA.network-Kette mit EIP-155 geschützt ist und uns nicht erlaubt, sie zu senden.

Nehmen wir also dieselbe tx und ändern Sie den chainId-Wert, um tx erneut zu senden. was, wenn wir den RPC-Server getTransactionByHash fragen

curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0x1f3f3ced1fde1cbc638b3e1ba2b12d890157977208442e8686d03fc4d332225c"],"id":1}' -H "Content-Type: application/json" -X POST https://mainnet.infura.io | jq '.'

-

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "blockHash": "0x35af3597e1496acef6eb972c68243709ffc214c4b4a6f160581c4e670f67dd94",
    "blockNumber": "0x5ab068",
    "from": "0x829bd824b016326a401d083b33d092293333a830",
    "gas": "0x15f90",
    "gasPrice": "0x28fa6ae00",
    "hash": "0x1f3f3ced1fde1cbc638b3e1ba2b12d890157977208442e8686d03fc4d332225c",
    "input": "0x",
    "nonce": "0x52d1d6",
    "to": "0x65f4dc1a4aef2842c1ae61dfa3db7a69f25b7aff",
    "transactionIndex": "0x52",
    "value": "0x2e45e9ccc5e1af2",
    "v": "0x26",
    "r": "0xba87b88da31453501f9738e35d6c4f416524f92ea215d6f07b3df5f4216a41f8",
    "s": "0x578c288d369a6f9ee073e25e745888f9099e54b604411bce1b456a6dcf3937af"
  }
}

Lassen Sie uns jetzt dasselbe TX erneut an die ETC-Kette senden mit ethereumjs-tx: POA.network haschainId = 99

const EthereumTx = require('ethereumjs-tx')
const chain = 99;

const txParams = {
  nonce: '0x52d1d6',
  gasPrice: '0x28fa6ae00',
  gasLimit: '0x15f90',
  to: '0x65f4dc1a4aef2842c1ae61dfa3db7a69f25b7aff',
  value: '0x2e45e9ccc5e1af2',
  data: '0x',
  chainId: chain,
  r: "0xba87b88da31453501f9738e35d6c4f416524f92ea215d6f07b3df5f4216a41f8",
  s: "0x578c288d369a6f9ee073e25e745888f9099e54b604411bce1b456a6dcf3937af",
  v: chain * 2 + 35
}


const tx = new EthereumTx(txParams)

const serializedTx = tx.serialize()
console.log('0x' + serializedTx.toString('hex'))

Bitte beachten Sie, wie wir den Wert neu berechnet vhaben: v: chain * 2 + 35 ODER Sie können Folgendes tun: v: chain * 2 + 36 (Referenz: https://github.com/ethereum/EIPs/blob/master/EIPS/eip -155.md )

Jetzt lass es laufen: node txGenerator.jsund wir bekommen

0xf8718352d1d685028fa6ae0083015f909465f4dc1a4aef2842c1ae61dfa3db7a69f25b7aff8802e45e9ccc5e1af28081e9a0ba87b88da31453501f9738e35d6c4f416524f92ea215d6f07b3df5f4216a41f8a0578c288d369a6f9ee073e25e745888f9099e54b604411bce1b456a6dcf3937af

Senden wir es also an den RPC-Knoten

curl --data '{"method":"eth_sendRawTransaction","params":["0xf8718352d1d685028fa6ae0083015f909465f4dc1a4aef2842c1ae61dfa3db7a69f25b7aff8802e45e9ccc5e1af28081e9a0ba87b88da31453501f9738e35d6c4f416524f92ea215d6f07b3df5f4216a41f8a0578c288d369a6f9ee073e25e745888f9099e54b604411bce1b456a6dcf3937af"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST https://poa.infura.io

Antwort: {"jsonrpc":"2.0","error":{"code":-32010,"message":"Insufficient funds. The account you tried to send transaction from does not have enough funds. Required 209385510302513906 and got: 0."},"id":1}

Wir haben also den V-Wert erfolgreich geändert, aber das Konto hat kein Guthaben, um eine TX zu machen

Auf ähnliche Weise können Sie für alle anderen CHAIN-IDs verwenden