Skip to content

Commit 0426677

Browse files
committed
EthJson Rpc flavor
1 parent 63ddf6b commit 0426677

File tree

4 files changed

+79
-79
lines changed

4 files changed

+79
-79
lines changed

beacon_chain/libnimbus_lc/libnimbus_lc.nim

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import
1515
eth/p2p/discoveryv5/random2,
1616
eth/rlp,
1717
eth/trie/ordered_trie,
18-
json_rpc/jsonmarshal,
1918
secp256k1,
2019
web3/[engine_api_types, eth_api_types, conversions],
2120
../el/engine_api_conversions,
@@ -1215,10 +1214,10 @@ proc ETHExecutionBlockHeaderCreateFromJson(
12151214
## See:
12161215
## * https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbyhash
12171216
let data = try:
1218-
# a direct parameter like JrpcConv.decode($blockHeaderJson, BlockObject)
1217+
# a direct parameter like EthJson.decode($blockHeaderJson, BlockObject)
12191218
# will cause premature garbage collector kick in.
12201219
let jsonBytes = $blockHeaderJson
1221-
JrpcConv.decode(jsonBytes, BlockObject)
1220+
EthJson.decode(jsonBytes, BlockObject)
12221221
except SerializationError:
12231222
return nil
12241223
if data == nil:
@@ -1474,10 +1473,10 @@ proc ETHTransactionsCreateFromJson(
14741473
## See:
14751474
## * https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbyhash
14761475
var datas = try:
1477-
# a direct parameter like JrpcConv.decode($transactionsJson, seq[TransactionObject])
1476+
# a direct parameter like EthJson.decode($transactionsJson, seq[TransactionObject])
14781477
# will cause premature garbage collector kick in.
14791478
let jsonBytes = $transactionsJson
1480-
JrpcConv.decode(jsonBytes, seq[TransactionObject])
1479+
EthJson.decode(jsonBytes, seq[TransactionObject])
14811480
except SerializationError:
14821481
return nil
14831482

@@ -2283,10 +2282,10 @@ proc ETHReceiptsCreateFromJson(
22832282
## See:
22842283
## * https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactionreceipt
22852284
var datas = try:
2286-
# a direct parameter like JrpcConv.decode($receiptsJson, seq[ReceiptObject])
2285+
# a direct parameter like EthJson.decode($receiptsJson, seq[ReceiptObject])
22872286
# will cause premature garbage collector kick in.
22882287
let jsonBytes = $receiptsJson
2289-
JrpcConv.decode(jsonBytes, seq[ReceiptObject])
2288+
EthJson.decode(jsonBytes, seq[ReceiptObject])
22902289
except SerializationError:
22912290
return nil
22922291
if datas.len != ETHTransactionsGetCount(transactions):

ncli/ncli_testnet.nim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import
1111
std/[json, options, times],
1212
chronos, bearssl/rand, chronicles, confutils, stint, json_serialization,
1313
web3, eth/common/keys, eth/p2p/discoveryv5/random2,
14-
stew/[io2, byteutils], json_rpc/jsonmarshal,
14+
stew/[io2, byteutils],
1515
../beacon_chain/conf,
1616
../beacon_chain/el/el_manager,
1717
../beacon_chain/networking/eth2_network,
@@ -399,7 +399,7 @@ proc doCreateTestnet*(config: CliConfig,
399399

400400
try:
401401
let blockAsJson = genesisBlockContents.get
402-
genesisBlock = JrpcConv.decode(blockAsJson, BlockObject)
402+
genesisBlock = EthJson.decode(blockAsJson, BlockObject)
403403
except CatchableError as err:
404404
error "Failed to load the genesis block from json",
405405
err = err.msg

research/fakeee.nim

Lines changed: 70 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -17,75 +17,76 @@ import
1717
chronicles
1818

1919
proc setupEngineAPI*(server: RpcServer) =
20-
# https://github.com/ethereum/execution-apis/blob/v1.0.0-beta.4/src/engine/paris.md#engine_newpayloadv1
21-
# cannot use `params` as param name. see https:#github.com/status-im/nim-json-rpc/issues/128
22-
server.rpc("engine_newPayloadV1") do(payload: ExecutionPayloadV1) -> PayloadStatusV1:
23-
info "engine_newPayloadV1",
24-
number = $(distinctBase payload.blockNumber), hash = payload.blockHash
25-
26-
return PayloadStatusV1(
27-
status: PayloadExecutionStatus.syncing,
28-
)
29-
30-
# https://github.com/ethereum/execution-apis/blob/v1.0.0-beta.4/src/engine/shanghai.md#engine_newpayloadv2
31-
server.rpc("engine_newPayloadV2") do(payload: ExecutionPayloadV2) -> PayloadStatusV1:
32-
info "engine_newPayloadV2", payload
33-
34-
return PayloadStatusV1(
35-
status: PayloadExecutionStatus.syncing,
36-
)
37-
38-
# https://github.com/ethereum/execution-apis/blob/v1.0.0-beta.4/src/engine/paris.md#engine_getpayloadv1
39-
server.rpc("engine_getPayloadV1") do(payloadId: Bytes8) -> ExecutionPayloadV1:
40-
info "engine_getPayloadV1",
41-
id = payloadId.toHex
42-
43-
raise (ref ApplicationError)(
44-
code: engineApiUnknownPayload,
45-
msg: "Unknown payload"
46-
)
47-
48-
# https://github.com/ethereum/execution-apis/blob/v1.0.0-beta.4/src/engine/paris.md#engine_forkchoiceupdatedv1
49-
server.rpc("engine_forkchoiceUpdatedV1") do(
50-
update: ForkchoiceStateV1,
51-
payloadAttributes: Opt[PayloadAttributesV1]) -> ForkchoiceUpdatedResponse:
52-
info "engine_forkchoiceUpdatedV1",
53-
update,
54-
payloadAttributes
55-
56-
return ForkchoiceUpdatedResponse(
57-
payloadStatus: PayloadStatusV1(
58-
status: PayloadExecutionStatus.syncing))
59-
60-
# https://github.com/ethereum/execution-apis/blob/v1.0.0-beta.4/src/engine/shanghai.md#engine_forkchoiceupdatedv2
61-
server.rpc("engine_forkchoiceUpdatedV2") do(
62-
forkchoiceState: ForkchoiceStateV1, payloadAttributes: Opt[PayloadAttributesV2]) -> ForkchoiceUpdatedResponse:
63-
info "engine_forkchoiceUpdatedV2",
64-
forkchoiceState, payloadAttributes
65-
66-
return ForkchoiceUpdatedResponse(
67-
payloadStatus: PayloadStatusV1(
68-
status: PayloadExecutionStatus.syncing))
69-
70-
server.rpc("eth_getBlockByNumber") do(
71-
quantityTag: string, fullTransactions: bool) -> JsonString:
72-
info "eth_getBlockByNumber", quantityTag, fullTransactions
73-
74-
return if quantityTag == "latest":
75-
JrpcConv.encode(BlockObject(number: 1000.Quantity)).JsonString
76-
else:
77-
"{}".JsonString
78-
79-
server.rpc("eth_getBlockByHash") do(
80-
data: string, fullTransactions: bool) -> BlockObject:
81-
info "eth_getBlockByHash", data = toHex(data), fullTransactions
82-
83-
return BlockObject(number: 1000.Quantity)
84-
85-
server.rpc("eth_chainId") do() -> UInt256:
86-
info "eth_chainId"
87-
88-
return 1.u256
20+
server.rpc(EthJson):
21+
# https://github.com/ethereum/execution-apis/blob/v1.0.0-beta.4/src/engine/paris.md#engine_newpayloadv1
22+
# cannot use `params` as param name. see https:#github.com/status-im/nim-json-rpc/issues/128
23+
proc engine_newPayloadV1(payload: ExecutionPayloadV1): PayloadStatusV1 =
24+
info "engine_newPayloadV1",
25+
number = $(distinctBase payload.blockNumber), hash = payload.blockHash
26+
27+
return PayloadStatusV1(
28+
status: PayloadExecutionStatus.syncing,
29+
)
30+
31+
# https://github.com/ethereum/execution-apis/blob/v1.0.0-beta.4/src/engine/shanghai.md#engine_newpayloadv2
32+
proc engine_newPayloadV2(payload: ExecutionPayloadV2): PayloadStatusV1 =
33+
info "engine_newPayloadV2", payload
34+
35+
return PayloadStatusV1(
36+
status: PayloadExecutionStatus.syncing,
37+
)
38+
39+
# https://github.com/ethereum/execution-apis/blob/v1.0.0-beta.4/src/engine/paris.md#engine_getpayloadv1
40+
proc engine_getPayloadV1(payloadId: Bytes8): ExecutionPayloadV1 =
41+
info "engine_getPayloadV1",
42+
id = payloadId.toHex
43+
44+
raise (ref ApplicationError)(
45+
code: engineApiUnknownPayload,
46+
msg: "Unknown payload"
47+
)
48+
49+
# https://github.com/ethereum/execution-apis/blob/v1.0.0-beta.4/src/engine/paris.md#engine_forkchoiceupdatedv1
50+
proc engine_forkchoiceUpdatedV1(
51+
update: ForkchoiceStateV1,
52+
payloadAttributes: Opt[PayloadAttributesV1]): ForkchoiceUpdatedResponse =
53+
info "engine_forkchoiceUpdatedV1",
54+
update,
55+
payloadAttributes
56+
57+
return ForkchoiceUpdatedResponse(
58+
payloadStatus: PayloadStatusV1(
59+
status: PayloadExecutionStatus.syncing))
60+
61+
# https://github.com/ethereum/execution-apis/blob/v1.0.0-beta.4/src/engine/shanghai.md#engine_forkchoiceupdatedv2
62+
proc engine_forkchoiceUpdatedV2(
63+
forkchoiceState: ForkchoiceStateV1, payloadAttributes: Opt[PayloadAttributesV2]): ForkchoiceUpdatedResponse =
64+
info "engine_forkchoiceUpdatedV2",
65+
forkchoiceState, payloadAttributes
66+
67+
return ForkchoiceUpdatedResponse(
68+
payloadStatus: PayloadStatusV1(
69+
status: PayloadExecutionStatus.syncing))
70+
71+
proc eth_getBlockByNumber(
72+
quantityTag: string, fullTransactions: bool): JsonString =
73+
info "eth_getBlockByNumber", quantityTag, fullTransactions
74+
75+
return if quantityTag == "latest":
76+
EthJson.encode(BlockObject(number: 1000.Quantity)).JsonString
77+
else:
78+
"{}".JsonString
79+
80+
proc eth_getBlockByHash(
81+
data: string, fullTransactions: bool): BlockObject =
82+
info "eth_getBlockByHash", data = toHex(data), fullTransactions
83+
84+
return BlockObject(number: 1000.Quantity)
85+
86+
proc eth_chainId(): UInt256 =
87+
info "eth_chainId"
88+
89+
return 1.u256
8990

9091
when isMainModule:
9192
let server = newRpcHttpServer(

0 commit comments

Comments
 (0)