mirror of
https://github.com/status-im/EIPs.git
synced 2025-02-23 12:18:16 +00:00
EIP-2481: Added testcases (#3228)
* EIP-2481: add testcases * EIP-2481: propose unpacking of GetHeadersPacket * EIP-2481: revert spec changes
This commit is contained in:
parent
3ec9510e81
commit
de2fbc8527
280
EIPS/eip-2481.md
280
EIPS/eip-2481.md
@ -43,14 +43,7 @@ Let's consider a client making many simultaneous requests for `GetBlockHeaders`
|
||||
|
||||
This can be particular tricky for responses that are ambiguous such as empty responses.
|
||||
|
||||
This EIP proposes to change the `GetBlockHeaders` and the `BlockHeaders` command to include a `request_id` as shown below.
|
||||
|
||||
* `GetBlockHeaders (0x03)`
|
||||
* **Current (eth/65):** `[block: {P, B_32}, maxHeaders: P, skip: P, reverse: P in {0, 1}]`
|
||||
* **Then (eth/66)**: `[request_id: P, [block: {P, B_32}, maxHeaders: P, skip: P, reverse: P in {0, 1}]]`
|
||||
* `BlockHeaders (0x04)`
|
||||
* **Current (eth/65):** `[blockHeader_0, blockHeader_1, ...]`
|
||||
* **Then (eth/66)**: `[request_id: P, [blockHeader_0, blockHeader_1, ...]]`
|
||||
This EIP proposes to change the `GetBlockHeaders` and the `BlockHeaders` command to include a `request_id`.
|
||||
|
||||
The `request_id` is a 64-bit integer set by the client when it makes the request. On the responding side, the exact same `request_id` from the incoming request is put back into the response object.
|
||||
|
||||
@ -103,8 +96,6 @@ To elaborate, each command is altered in the following way:
|
||||
1. Create a list with the `request_id` being the first element.
|
||||
2. Make the second element the list that defines the whole command in the current scheme.
|
||||
|
||||
This is consistent with the request / response pairs in the `les` protocol.
|
||||
|
||||
The ``request_id`` has the following characteristics:
|
||||
|
||||
* 64 bit integer
|
||||
@ -151,10 +142,279 @@ This EIP does not change the consensus engine, thus does *not* require a hard fo
|
||||
## Implementation
|
||||
|
||||
Trinity has a [draft PR](https://github.com/ethereum/trinity/pull/1672) with an implementation.
|
||||
Geth [PR](https://github.com/ethereum/go-ethereum/pull/22241).
|
||||
|
||||
## Security Considerations
|
||||
|
||||
None
|
||||
|
||||
## Test cases
|
||||
|
||||
These testcases cover RLP-encoding of all the redefined messages types, where the `rlp` portion is the rlp-encoding of the message defined in the `data` portion.
|
||||
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "GetBlockHeadersPacket66",
|
||||
"rlp": "0xe8820457e4a000000000000000000000000000000000000000000000000000000000deadc0de050580",
|
||||
"data": {
|
||||
"RequestId": 1111,
|
||||
"Origin": {
|
||||
"Hash": "0x00000000000000000000000000000000000000000000000000000000deadc0de",
|
||||
"Number": 0
|
||||
},
|
||||
"Amount": 5,
|
||||
"Skip": 5,
|
||||
"Reverse": false
|
||||
}
|
||||
}
|
||||
```
|
||||
```json
|
||||
{
|
||||
"type": "GetBlockHeadersPacket66",
|
||||
"rlp": "0xca820457c682270f050580",
|
||||
"data": {
|
||||
"RequestId": 1111,
|
||||
"Origin": {
|
||||
"Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"Number": 9999
|
||||
},
|
||||
"Amount": 5,
|
||||
"Skip": 5,
|
||||
"Reverse": false
|
||||
}
|
||||
}
|
||||
```
|
||||
```json
|
||||
{
|
||||
"type": "BlockHeadersPacket66",
|
||||
"rlp": "0xf90202820457f901fcf901f9a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000940000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008208ae820d0582115c8215b3821a0a827788a00000000000000000000000000000000000000000000000000000000000000000880000000000000000",
|
||||
"data": {
|
||||
"RequestId": 1111,
|
||||
"BlockHeadersPacket": [
|
||||
{
|
||||
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"sha3Uncles": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"miner": "0x0000000000000000000000000000000000000000",
|
||||
"stateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"transactionsRoot": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"receiptsRoot": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
||||
"difficulty": "0x8ae",
|
||||
"number": "0xd05",
|
||||
"gasLimit": "0x115c",
|
||||
"gasUsed": "0x15b3",
|
||||
"timestamp": "0x1a0a",
|
||||
"extraData": "0x7788",
|
||||
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"nonce": "0x0000000000000000",
|
||||
"hash": "0x8c2f2af15b7b563b6ab1e09bed0e9caade7ed730aec98b70a993597a797579a9"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
```json
|
||||
{
|
||||
"type": "GetBlockBodiesPacket66",
|
||||
"rlp": "0xf847820457f842a000000000000000000000000000000000000000000000000000000000deadc0dea000000000000000000000000000000000000000000000000000000000feedbeef",
|
||||
"data": {
|
||||
"RequestId": 1111,
|
||||
"GetBlockBodiesPacket": [
|
||||
"0x00000000000000000000000000000000000000000000000000000000deadc0de",
|
||||
"0x00000000000000000000000000000000000000000000000000000000feedbeef"
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
```json
|
||||
{
|
||||
"type": "BlockBodiesPacket66",
|
||||
"rlp": "0xf902dc820457f902d6f902d3f8d2f867088504a817c8088302e2489435353535353535353535353535353535353535358202008025a064b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c12a064b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10f867098504a817c809830334509435353535353535353535353535353535353535358202d98025a052f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afba052f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afbf901fcf901f9a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000940000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008208ae820d0582115c8215b3821a0a827788a00000000000000000000000000000000000000000000000000000000000000000880000000000000000",
|
||||
"data": {
|
||||
"RequestId": 1111,
|
||||
"BlockBodiesPacket": [
|
||||
{
|
||||
"Transactions": [
|
||||
{
|
||||
"nonce": "0x8",
|
||||
"gasPrice": "0x4a817c808",
|
||||
"gas": "0x2e248",
|
||||
"to": "0x3535353535353535353535353535353535353535",
|
||||
"value": "0x200",
|
||||
"input": "0x",
|
||||
"v": "0x25",
|
||||
"r": "0x64b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c12",
|
||||
"s": "0x64b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10",
|
||||
"hash": "0x588df025c4c2d757d3e314bd3dfbfe352687324e6b8557ad1731585e96928aed"
|
||||
},
|
||||
{
|
||||
"nonce": "0x9",
|
||||
"gasPrice": "0x4a817c809",
|
||||
"gas": "0x33450",
|
||||
"to": "0x3535353535353535353535353535353535353535",
|
||||
"value": "0x2d9",
|
||||
"input": "0x",
|
||||
"v": "0x25",
|
||||
"r": "0x52f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb",
|
||||
"s": "0x52f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb",
|
||||
"hash": "0xf39c7dac06a9f3abf09faf5e30439a349d3717611b3ed337cd52b0d192bc72da"
|
||||
}
|
||||
],
|
||||
"Uncles": [
|
||||
{
|
||||
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"sha3Uncles": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"miner": "0x0000000000000000000000000000000000000000",
|
||||
"stateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"transactionsRoot": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"receiptsRoot": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
||||
"difficulty": "0x8ae",
|
||||
"number": "0xd05",
|
||||
"gasLimit": "0x115c",
|
||||
"gasUsed": "0x15b3",
|
||||
"timestamp": "0x1a0a",
|
||||
"extraData": "0x7788",
|
||||
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"nonce": "0x0000000000000000",
|
||||
"hash": "0x8c2f2af15b7b563b6ab1e09bed0e9caade7ed730aec98b70a993597a797579a9"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
```json
|
||||
{
|
||||
"type": "GetNodeDataPacket66",
|
||||
"rlp": "0xf847820457f842a000000000000000000000000000000000000000000000000000000000deadc0dea000000000000000000000000000000000000000000000000000000000feedbeef",
|
||||
"data": {
|
||||
"RequestId": 1111,
|
||||
"GetNodeDataPacket": [
|
||||
"0x00000000000000000000000000000000000000000000000000000000deadc0de",
|
||||
"0x00000000000000000000000000000000000000000000000000000000feedbeef"
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
```json
|
||||
{
|
||||
"type": "NodeDataPacket66",
|
||||
"rlp": "0xce820457ca84deadc0de84feedbeef",
|
||||
"data": {
|
||||
"RequestId": 1111,
|
||||
"NodeDataPacket": [
|
||||
"0xdeadcode",
|
||||
"0xfeedbeef"
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
```json
|
||||
{
|
||||
"type": "GetReceiptsPacket66",
|
||||
"rlp": "0xf847820457f842a000000000000000000000000000000000000000000000000000000000deadc0dea000000000000000000000000000000000000000000000000000000000feedbeef",
|
||||
"data": {
|
||||
"RequestId": 1111,
|
||||
"GetReceiptsPacket": [
|
||||
"0x00000000000000000000000000000000000000000000000000000000deadc0de",
|
||||
"0x00000000000000000000000000000000000000000000000000000000feedbeef"
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
```json
|
||||
{
|
||||
"type": "ReceiptsPacket66",
|
||||
"rlp": "0xf90172820457f9016cf90169f901668001b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f85ff85d940000000000000000000000000000000000000011f842a0000000000000000000000000000000000000000000000000000000000000deada0000000000000000000000000000000000000000000000000000000000000beef830100ff",
|
||||
"data": {
|
||||
"RequestId": 1111,
|
||||
"ReceiptsPacket": [
|
||||
[
|
||||
{
|
||||
"root": "0x",
|
||||
"status": "0x0",
|
||||
"cumulativeGasUsed": "0x1",
|
||||
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
||||
"logs": [
|
||||
{
|
||||
"address": "0x0000000000000000000000000000000000000011",
|
||||
"topics": [
|
||||
"0x000000000000000000000000000000000000000000000000000000000000dead",
|
||||
"0x000000000000000000000000000000000000000000000000000000000000beef"
|
||||
],
|
||||
"data": "0x0100ff",
|
||||
"blockNumber": "0x0",
|
||||
"transactionHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"transactionIndex": "0x0",
|
||||
"blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"logIndex": "0x0",
|
||||
"removed": false
|
||||
}
|
||||
],
|
||||
"transactionHash": "0x00000000000000000000000000000000000000000000000000000000deadc0de",
|
||||
"contractAddress": "0x0000000000000000000000000000000000011111",
|
||||
"gasUsed": "0x1b207",
|
||||
"blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"transactionIndex": "0x0"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "GetPooledTransactionsPacket66",
|
||||
"rlp": "0xf847820457f842a000000000000000000000000000000000000000000000000000000000deadc0dea000000000000000000000000000000000000000000000000000000000feedbeef",
|
||||
"data": {
|
||||
"RequestId": 1111,
|
||||
"GetPooledTransactionsPacket": [
|
||||
"0x00000000000000000000000000000000000000000000000000000000deadc0de",
|
||||
"0x00000000000000000000000000000000000000000000000000000000feedbeef"
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
```json
|
||||
{
|
||||
"type": "PooledTransactionsPacket66",
|
||||
"rlp": "0xf8d7820457f8d2f867088504a817c8088302e2489435353535353535353535353535353535353535358202008025a064b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c12a064b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10f867098504a817c809830334509435353535353535353535353535353535353535358202d98025a052f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afba052f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb",
|
||||
"data": {
|
||||
"RequestId": 1111,
|
||||
"PooledTransactionsPacket": [
|
||||
{
|
||||
"nonce": "0x8",
|
||||
"gasPrice": "0x4a817c808",
|
||||
"gas": "0x2e248",
|
||||
"to": "0x3535353535353535353535353535353535353535",
|
||||
"value": "0x200",
|
||||
"input": "0x",
|
||||
"v": "0x25",
|
||||
"r": "0x64b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c12",
|
||||
"s": "0x64b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10",
|
||||
"hash": "0x588df025c4c2d757d3e314bd3dfbfe352687324e6b8557ad1731585e96928aed"
|
||||
},
|
||||
{
|
||||
"nonce": "0x9",
|
||||
"gasPrice": "0x4a817c809",
|
||||
"gas": "0x33450",
|
||||
"to": "0x3535353535353535353535353535353535353535",
|
||||
"value": "0x2d9",
|
||||
"input": "0x",
|
||||
"v": "0x25",
|
||||
"r": "0x52f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb",
|
||||
"s": "0x52f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb",
|
||||
"hash": "0xf39c7dac06a9f3abf09faf5e30439a349d3717611b3ed337cd52b0d192bc72da"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Copyright
|
||||
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).
|
||||
|
Loading…
x
Reference in New Issue
Block a user