@@ -37,6 +37,7 @@ func Dial(n *enode.Node) (*rlpxConn, error) {
3737 {Name : "eth" , Version : 66 },
3838 {Name : "eth" , Version : 67 },
3939 {Name : "eth" , Version : 68 },
40+ {Name : "wit" , Version : 1 },
4041 },
4142 }
4243
@@ -194,6 +195,7 @@ func (c *rlpxConn) ReadAndServe(count *MessageCount) error {
194195 atomic .AddInt64 (& count .BlockHashes , int64 (len (* msg )))
195196 c .logger .Trace ().Msgf ("Received %v NewBlockHashes" , len (* msg ))
196197
198+ var hashes []common.Hash
197199 for _ , hash := range * msg {
198200 headersRequest := & GetBlockHeaders {
199201 GetBlockHeadersRequest : & eth.GetBlockHeadersRequest {
@@ -215,11 +217,30 @@ func (c *rlpxConn) ReadAndServe(count *MessageCount) error {
215217 if err := c .Write (bodiesRequest ); err != nil {
216218 c .logger .Error ().Err (err ).Msg ("Failed to write GetBlockBodies request" )
217219 }
220+
221+ hashes = append (hashes , hash .Hash )
218222 }
219223
224+ req := GetWitnessPacket {
225+ GetWitnessRequest : & GetWitnessRequest {
226+ Hashes : hashes ,
227+ },
228+ }
229+ if err := c .Write (req ); err != nil {
230+ log .Error ().Err (err ).Msg ("Failed to write GetWitnessPacket request" )
231+ }
220232 case * NewBlock :
221233 atomic .AddInt64 (& count .Blocks , 1 )
222234 c .logger .Trace ().Str ("hash" , msg .Block .Hash ().Hex ()).Msg ("Received NewBlock" )
235+
236+ req := GetWitnessPacket {
237+ GetWitnessRequest : & GetWitnessRequest {
238+ Hashes : []common.Hash {msg .Block .Hash ()},
239+ },
240+ }
241+ if err := c .Write (req ); err != nil {
242+ log .Error ().Err (err ).Msg ("Failed to write GetWitnessPacket request" )
243+ }
223244 case * Transactions :
224245 atomic .AddInt64 (& count .Transactions , int64 (len (* msg )))
225246 c .logger .Trace ().Msgf ("Received %v Transactions" , len (* msg ))
@@ -248,15 +269,27 @@ func (c *rlpxConn) ReadAndServe(count *MessageCount) error {
248269 atomic .AddInt64 (& count .Errors , 1 )
249270 c .logger .Trace ().Err (msg .Unwrap ()).Msg ("Received Error" )
250271
251- if ! strings .Contains (msg .Error (), "timeout" ) {
252- return msg .Unwrap ()
253- }
272+ // if !strings.Contains(msg.Error(), "timeout") {
273+ // return msg.Unwrap()
274+ // }
254275 case * Disconnect :
255276 atomic .AddInt64 (& count .Disconnects , 1 )
256277 c .logger .Debug ().Msgf ("Disconnect received: %v" , msg )
257278 case * Disconnects :
258279 atomic .AddInt64 (& count .Disconnects , 1 )
259280 c .logger .Debug ().Msgf ("Disconnect received: %v" , msg )
281+ case * NewWitnessPacket :
282+ atomic .AddInt64 (& count .NewWitness , 1 )
283+ c .logger .Debug ().Any ("msg" , msg ).Msg ("Received NewWitness" )
284+ case * NewWitnessHashesPacket :
285+ atomic .AddInt64 (& count .NewWitnessHashes , 1 )
286+ c .logger .Debug ().Any ("msg" , msg ).Msg ("Received NewWitnessHashes" )
287+ case * GetWitnessPacket :
288+ atomic .AddInt64 (& count .GetWitnessRequest , 1 )
289+ c .logger .Debug ().Any ("msg" , msg ).Msg ("Received GetWitnessRequest" )
290+ case * WitnessPacketRLPPacket :
291+ atomic .AddInt64 (& count .Witness , 1 )
292+ c .logger .Debug ().Any ("msg" , msg ).Msg ("Received Witness" )
260293 default :
261294 c .logger .Info ().Interface ("msg" , msg ).Int ("code" , msg .Code ()).Msg ("Received message" )
262295 }
0 commit comments