-
Notifications
You must be signed in to change notification settings - Fork 233
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add mev-boost RPC test, with docs (#3430)
* bump nim-web3 and add mev-boost RPC test, with docs * remove trailing space * use specific commithash
- Loading branch information
Showing
5 changed files
with
149 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
# Clone repos | ||
|
||
``` | ||
git clone https://github.com/flashbots/mev-boost.git | ||
# On the thegostep/docs branch | ||
git checkout 977d487e6eae38afbc9e4108e8c5c24689a8c222 | ||
``` | ||
|
||
Apply | ||
```diff | ||
diff --git a/lib/service.go b/lib/service.go | ||
index cd3e88e..b477fb5 100644 | ||
--- a/lib/service.go | ||
+++ b/lib/service.go | ||
@@ -8,6 +8,7 @@ import ( | ||
"io" | ||
"io/ioutil" | ||
"log" | ||
+ "math/big" | ||
"net/http" | ||
|
||
"github.com/ethereum/go-ethereum/common" | ||
@@ -165,6 +166,11 @@ func (m *RelayService) ProposeBlindedBlockV1(r *http.Request, args *SignedBlinde | ||
blockHash = body.ExecutionPayloadCamel.BlockHashCamel | ||
} | ||
|
||
+ var foo ExecutionPayloadWithTxRootV1 | ||
+ foo = ExecutionPayloadWithTxRootV1{BaseFeePerGas: big.NewInt(4)} | ||
+ *result = foo | ||
+ return nil | ||
+ | ||
payloadCached := m.store.Get(common.HexToHash(blockHash)) | ||
if payloadCached != nil { | ||
log.Println(green("ProposeBlindedBlockV1: ✓ revealing previous payload from execution client: "), payloadCached.BlockHash, payloadCached.Number, payloadCached.TransactionsRoot) | ||
@@ -197,6 +203,11 @@ var nilHash = common.Hash{} | ||
|
||
// GetPayloadHeaderV1 TODO | ||
func (m *RelayService) GetPayloadHeaderV1(r *http.Request, args *string, result *ExecutionPayloadWithTxRootV1) error { | ||
+ var foo ExecutionPayloadWithTxRootV1 | ||
+ foo = ExecutionPayloadWithTxRootV1{BaseFeePerGas: big.NewInt(4)} | ||
+ *result = foo | ||
+ return nil; | ||
+ | ||
executionResp, executionErr := makeRequest(m.executionURL, "engine_getPayloadV1", []interface{}{*args}) | ||
relayResp, relayErr := makeRequest(m.relayURL, "engine_getPayloadV1", []interface{}{*args}) | ||
``` | ||
if one wants to just test the RPC without a relay or execution client, only the builder. | ||
|
||
# Build and run the mev-boost command | ||
|
||
In the `mev-boost/cmd/mev-boost` directory, run `go build . && ./mev_boost`: | ||
``` | ||
$ go build . && ./mev-boost | ||
mev-boost: 2022/02/23 06:45:07 main.go:29: listening on: 18550 | ||
``` | ||
|
||
# Run the Nimbus-side RPC test | ||
|
||
This currently accesses a field in eth1_monitor directly: | ||
```nim | ||
diff --git a/beacon_chain/eth1/eth1_monitor.nim b/beacon_chain/eth1/eth1_monitor.nim | ||
index b2cebda8..06d55f15 100644 | ||
--- a/beacon_chain/eth1/eth1_monitor.nim | ||
+++ b/beacon_chain/eth1/eth1_monitor.nim | ||
@@ -127,3 +127,3 @@ type | ||
url: string | ||
- web3: Web3 | ||
+ web3*: Web3 | ||
ns: Sender[DepositContract] | ||
``` | ||
Pending further integration into eth1_monitor. | ||
|
||
If that's in place, run: | ||
``` | ||
$ ./env.sh nim c --hints:off -r scripts/test_mev_boost | ||
[Suite] mev-boost RPC | ||
DBG 2022-02-23 06:47:19.710+01:00 Message sent to RPC server topics="JSONRPC-HTTP-CLIENT" tid=635228 file=httpclient.nim:68 address="ok((id: \"127.0.0.1:18550\", scheme: NonSecure, hostname: \"127.0.0.1\", port: 18550, path: \"\", query: \"\", anchor: \"\", username: \"\", password: \"\", addresses: @[127.0.0.1:18550]))" msg_len=553 | ||
[OK] builder_ProposeBlindedBlockV1 | ||
DBG 2022-02-23 06:47:19.713+01:00 Message sent to RPC server topics="JSONRPC-HTTP-CLIENT" tid=635228 file=httpclient.nim:68 address="ok((id: \"127.0.0.1:18550\", scheme: NonSecure, hostname: \"127.0.0.1\", port: 18550, path: \"\", query: \"\", anchor: \"\", username: \"\", password: \"\", addresses: @[127.0.0.1:18550]))" msg_len=94 | ||
[OK] builder_getPayloadHeaderV1 | ||
$ | ||
``` | ||
|
||
The RPC traffic looks like: | ||
``` | ||
POST / HTTP/1.1\r | ||
Accept: */*\r | ||
Content-Length: 553\r | ||
Content-Type: application/json\r | ||
Host: 127.0.0.1\r | ||
Connection: keep-alive\r | ||
User-Agent: nim-chronos/3.0.2 (amd64/linux)\r | ||
\r | ||
{"jsonrpc":"2.0","method":"builder_proposeBlindedBlockV1","params":[{"message":{"slot":"0x0","proposer_index":"0x0","parent_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0x0000000000000000000000000000000000000000000000000000000000000000","body":{"execution_payload_header":{"blockHash":""}}},"signature":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}],"id":1}< 2022/02/23 06:28:43.588446 length=887 from=0 to=886 | ||
HTTP/1.1 200 OK\r | ||
Content-Type: application/json; charset=utf-8\r | ||
X-Content-Type-Options: nosniff\r | ||
Date: Wed, 23 Feb 2022 05:28:43 GMT\r | ||
Content-Length: 730\r | ||
\r | ||
{"jsonrpc":"2.0","result":{"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","feeRecipient":"0x0000000000000000000000000000000000000000","stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","receiptsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","logsBloom":"0x","random":"0x0000000000000000000000000000000000000000000000000000000000000000","blockNumber":"0x0","gasLimit":"0x0","gasUsed":"0x0","timestamp":"0x0","extraData":"0x","baseFeePerGas":"0x4","blockHash":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"error":null,"id":1} | ||
> 2022/02/23 06:28:43.590617 length=264 from=0 to=263 | ||
POST / HTTP/1.1\r | ||
Accept: */*\r | ||
Content-Length: 94\r | ||
Content-Type: application/json\r | ||
Host: 127.0.0.1\r | ||
Connection: keep-alive\r | ||
User-Agent: nim-chronos/3.0.2 (amd64/linux)\r | ||
\r | ||
{"jsonrpc":"2.0","method":"builder_getPayloadHeaderV1","params":["0x0000000000000000"],"id":1}< 2022/02/23 06:28:43.591736 length=887 from=0 to=886 | ||
HTTP/1.1 200 OK\r | ||
Content-Type: application/json; charset=utf-8\r | ||
X-Content-Type-Options: nosniff\r | ||
Date: Wed, 23 Feb 2022 05:28:43 GMT\r | ||
Content-Length: 730\r | ||
\r | ||
{"jsonrpc":"2.0","result":{"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","feeRecipient":"0x0000000000000000000000000000000000000000","stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","receiptsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","logsBloom":"0x","random":"0x0000000000000000000000000000000000000000000000000000000000000000","blockNumber":"0x0","gasLimit":"0x0","gasUsed":"0x0","timestamp":"0x0","extraData":"0x","baseFeePerGas":"0x4","blockHash":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"error":null,"id":1} | ||
``` | ||
|
||
This exercises the RPC serialization and deserialization. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 0 additions & 2 deletions
2
tests/test_merge_vectors.nim → scripts/test_merge_vectors.nim
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Monitor traffic: socat -v TCP-LISTEN:19550,fork TCP-CONNECT:127.0.0.1:18550 | ||
|
||
import | ||
unittest2, | ||
chronos, web3/[builder_api, builder_api_types, engine_api_types, ethtypes], | ||
../beacon_chain/eth1/eth1_monitor, | ||
../beacon_chain/spec/[digest, presets], | ||
./testutil | ||
|
||
suite "mev-boost RPC": | ||
setup: | ||
let web3Provider = (waitFor Web3DataProvider.new( | ||
default(Eth1Address), "http://127.0.0.1:18550")).get.web3.provider | ||
|
||
test "builder_ProposeBlindedBlockV1": | ||
let proposedBlindedBlockResp = | ||
waitFor web3Provider.builder_proposeBlindedBlockV1(default(SignedBlindedBeaconBlock)) | ||
|
||
test "builder_getPayloadHeaderV1": | ||
let getPayloadHeaderResp = | ||
waitFor web3Provider.builder_getPayloadHeaderV1(default(PayloadID)) |