File tree Expand file tree Collapse file tree 3 files changed +20
-7
lines changed Expand file tree Collapse file tree 3 files changed +20
-7
lines changed Original file line number Diff line number Diff line change 16
16
BaseService ,
17
17
)
18
18
19
+ from trinity .chains .full import FullChain
19
20
from trinity .db .header import (
20
21
AsyncHeaderDB ,
21
22
)
@@ -40,6 +41,8 @@ class Node(BaseService):
40
41
Create usable nodes by adding subclasses that define the following
41
42
unset attributes.
42
43
"""
44
+ _full_chain : FullChain = None
45
+
43
46
def __init__ (self , event_bus : Endpoint , trinity_config : TrinityConfig ) -> None :
44
47
super ().__init__ ()
45
48
self .trinity_config = trinity_config
@@ -84,6 +87,13 @@ def chain_config(self) -> ChainConfig:
84
87
def get_chain (self ) -> BaseChain :
85
88
raise NotImplementedError ("Node classes must implement this method" )
86
89
90
+ def get_full_chain (self ) -> FullChain :
91
+ if self ._full_chain is None :
92
+ chain_class = self .chain_config .full_chain_class
93
+ self ._full_chain = chain_class (self .db_manager .get_db ()) # type: ignore
94
+
95
+ return self ._full_chain
96
+
87
97
@abstractmethod
88
98
def get_peer_pool (self ) -> BasePeerPool :
89
99
"""
Original file line number Diff line number Diff line change @@ -28,18 +28,15 @@ def chain_class(self) -> Type[FullChain]:
28
28
return self .chain_config .full_chain_class
29
29
30
30
def get_chain (self ) -> FullChain :
31
- if self ._chain is None :
32
- self ._chain = self .chain_class (self .db_manager .get_db ()) # type: ignore
33
-
34
- return self ._chain
31
+ return self .get_full_chain ()
35
32
36
33
def get_p2p_server (self ) -> FullServer :
37
34
if self ._p2p_server is None :
38
35
manager = self .db_manager
39
36
self ._p2p_server = FullServer (
40
37
privkey = self ._node_key ,
41
38
port = self ._node_port ,
42
- chain = self .get_chain (),
39
+ chain = self .get_full_chain (),
43
40
chaindb = manager .get_chaindb (), # type: ignore
44
41
headerdb = self .headerdb ,
45
42
base_db = manager .get_db (), # type: ignore
Original file line number Diff line number Diff line change 4
4
)
5
5
6
6
from eth_keys .datatypes import PrivateKey
7
+ from eth_utils import (
8
+ ValidationError ,
9
+ )
7
10
8
11
from lahja import Endpoint
9
12
@@ -56,7 +59,10 @@ def get_chain(self) -> LightDispatchChain:
56
59
if self ._chain is None :
57
60
if self .chain_class is None :
58
61
raise AttributeError ("LightNode subclass must set chain_class" )
59
- self ._chain = self .chain_class (self .headerdb , peer_chain = self ._peer_chain )
62
+ elif self ._peer_chain is None :
63
+ raise ValidationError ("peer chain is not initialized!" )
64
+ else :
65
+ self ._chain = self .chain_class (self .headerdb , peer_chain = self ._peer_chain )
60
66
61
67
return self ._chain
62
68
@@ -66,7 +72,7 @@ def get_p2p_server(self) -> LightServer:
66
72
self ._p2p_server = LightServer (
67
73
privkey = self ._nodekey ,
68
74
port = self ._port ,
69
- chain = self .get_chain (),
75
+ chain = self .get_full_chain (),
70
76
chaindb = manager .get_chaindb (), # type: ignore
71
77
headerdb = self .headerdb ,
72
78
base_db = manager .get_db (), # type: ignore
You can’t perform that action at this time.
0 commit comments