@@ -1003,7 +1003,17 @@ proc readValue*[BlockType: ForkedBeaconBlock](
1003
1003
reader.raiseUnexpectedValue (" Incorrect capella block format" )
1004
1004
value = ForkedBeaconBlock .init (res.get ()).BlockType
1005
1005
of ConsensusFork .Deneb :
1006
- reader.raiseUnexpectedValue ($ denebImplementationMissing)
1006
+ let res =
1007
+ try :
1008
+ some (RestJson .decode (string (data.get ()),
1009
+ deneb.BeaconBlock ,
1010
+ requireAllFields = true ,
1011
+ allowUnknownFields = true ))
1012
+ except SerializationError :
1013
+ none [deneb.BeaconBlock ]()
1014
+ if res.isNone ():
1015
+ reader.raiseUnexpectedValue (" Incorrect deneb block format" )
1016
+ value = ForkedBeaconBlock .init (res.get ()).BlockType
1007
1017
1008
1018
proc readValue * [BlockType: ForkedBlindedBeaconBlock ](
1009
1019
reader: var JsonReader [RestJson ],
@@ -1066,7 +1076,17 @@ proc readValue*[BlockType: ForkedBlindedBeaconBlock](
1066
1076
value = ForkedBlindedBeaconBlock (kind: ConsensusFork .Capella ,
1067
1077
capellaData: res)
1068
1078
of ConsensusFork .Deneb :
1069
- reader.raiseUnexpectedValue ($ denebImplementationMissing)
1079
+ let res =
1080
+ try :
1081
+ RestJson .decode (string (data.get ()),
1082
+ capella_mev.BlindedBeaconBlock ,
1083
+ requireAllFields = true ,
1084
+ allowUnknownFields = true )
1085
+ except SerializationError as exc:
1086
+ reader.raiseUnexpectedValue (" Incorrect deneb block format, [" &
1087
+ exc.formatMsg (" BlindedBlock" ) & " ]" )
1088
+ value = ForkedBlindedBeaconBlock (kind: ConsensusFork .Deneb ,
1089
+ denebData: res)
1070
1090
1071
1091
proc readValue * [BlockType: Web3SignerForkedBeaconBlock ](
1072
1092
reader: var JsonReader [RestJson ],
@@ -1136,7 +1156,19 @@ proc readValue*[BlockType: Web3SignerForkedBeaconBlock](
1136
1156
kind: ConsensusFork .Capella ,
1137
1157
capellaData: res.get ())
1138
1158
of ConsensusFork .Deneb :
1139
- reader.raiseUnexpectedValue ($ denebImplementationMissing)
1159
+ let res =
1160
+ try :
1161
+ some (RestJson .decode (string (data.get ()),
1162
+ BeaconBlockHeader ,
1163
+ requireAllFields = true ,
1164
+ allowUnknownFields = true ))
1165
+ except SerializationError :
1166
+ none [BeaconBlockHeader ]()
1167
+ if res.isNone ():
1168
+ reader.raiseUnexpectedValue (" Incorrect deneb block format" )
1169
+ value = Web3SignerForkedBeaconBlock (
1170
+ kind: ConsensusFork .Deneb ,
1171
+ denebData: res.get ())
1140
1172
1141
1173
proc writeValue * [
1142
1174
BlockType: Web3SignerForkedBeaconBlock ](
@@ -1493,7 +1525,15 @@ proc readValue*(reader: var JsonReader[RestJson],
1493
1525
)
1494
1526
)
1495
1527
of ConsensusFork .Deneb :
1496
- reader.raiseUnexpectedValue ($ denebImplementationMissing)
1528
+ ForkedBeaconBlock .init (
1529
+ deneb.BeaconBlock (
1530
+ slot: slot.get (),
1531
+ proposer_index: proposer_index.get (),
1532
+ parent_root: parent_root.get (),
1533
+ state_root: state_root.get (),
1534
+ body: body.denebBody
1535
+ )
1536
+ )
1497
1537
)
1498
1538
1499
1539
# # RestPublishedSignedBeaconBlock
@@ -1554,7 +1594,12 @@ proc readValue*(reader: var JsonReader[RestJson],
1554
1594
)
1555
1595
)
1556
1596
of ConsensusFork .Deneb :
1557
- reader.raiseUnexpectedValue ($ denebImplementationMissing)
1597
+ ForkedSignedBeaconBlock .init (
1598
+ deneb.SignedBeaconBlock (
1599
+ message: blck.denebData,
1600
+ signature: signature.get ()
1601
+ )
1602
+ )
1558
1603
)
1559
1604
1560
1605
# # ForkedSignedBeaconBlock
@@ -1648,7 +1693,17 @@ proc readValue*(reader: var JsonReader[RestJson],
1648
1693
reader.raiseUnexpectedValue (" Incorrect capella block format" )
1649
1694
value = ForkedSignedBeaconBlock .init (res.get ())
1650
1695
of ConsensusFork .Deneb :
1651
- reader.raiseUnexpectedValue ($ denebImplementationMissing)
1696
+ let res =
1697
+ try :
1698
+ some (RestJson .decode (string (data.get ()),
1699
+ deneb.SignedBeaconBlock ,
1700
+ requireAllFields = true ,
1701
+ allowUnknownFields = true ))
1702
+ except SerializationError :
1703
+ none [deneb.SignedBeaconBlock ]()
1704
+ if res.isNone ():
1705
+ reader.raiseUnexpectedValue (" Incorrect deneb block format" )
1706
+ value = ForkedSignedBeaconBlock .init (res.get ())
1652
1707
withBlck (value):
1653
1708
blck.root = hash_tree_root (blck.message)
1654
1709
@@ -2731,7 +2786,14 @@ proc decodeBody*(
2731
2786
return err (" Unexpected deserialization error" )
2732
2787
ok (RestPublishedSignedBeaconBlock (ForkedSignedBeaconBlock .init (blck)))
2733
2788
of ConsensusFork .Deneb :
2734
- return err ($ denebImplementationMissing)
2789
+ let blck =
2790
+ try :
2791
+ SSZ .decode (body.data, deneb.SignedBeaconBlock )
2792
+ except SerializationError :
2793
+ return err (" Unable to deserialize data" )
2794
+ except CatchableError :
2795
+ return err (" Unexpected deserialization error" )
2796
+ ok (RestPublishedSignedBeaconBlock (ForkedSignedBeaconBlock .init (blck)))
2735
2797
else :
2736
2798
return err (" Unsupported or invalid content media type" )
2737
2799
0 commit comments