13
13
import rlp
14
14
from rlp .utils import decode_hex , encode_hex , ascii_chr
15
15
16
+ try :
17
+ import serpent
18
+ HAS_SERPENT = True
19
+ except ImportError :
20
+ HAS_SERPENT = False
21
+
16
22
17
23
TRACE_LVL_MAP = [
18
24
':info' ,
24
30
]
25
31
26
32
27
- serpent = None
28
-
29
33
u = ethereum .utils
30
34
t = ethereum .transactions
31
35
b = ethereum .blocks
@@ -131,10 +135,6 @@ def kall(*args, **kwargs):
131
135
class state ():
132
136
133
137
def __init__ (self , num_accounts = len (keys )):
134
- global serpent
135
- if not serpent :
136
- serpent = __import__ ('serpent' )
137
-
138
138
self .temp_data_dir = tempfile .mkdtemp ()
139
139
self .db = db .EphemDB ()
140
140
self .env = Env (self .db )
@@ -243,6 +243,8 @@ def send(self, *args, **kwargs):
243
243
return self ._send (* args , ** kwargs )["output" ]
244
244
245
245
def mkspv (self , sender , to , value , data = [], funid = None , abi = None ):
246
+ if not HAS_SERPENT :
247
+ raise RuntimeError ("ethereum-serpent package not installed" )
246
248
sendnonce = self .block .get_nonce (u .privtoaddr (sender ))
247
249
if funid is not None :
248
250
evmdata = serpent .encode_abi (funid , * abi )
@@ -253,8 +255,9 @@ def mkspv(self, sender, to, value, data=[], funid=None, abi=None):
253
255
tx .sign (sender )
254
256
return spv .mk_transaction_spv_proof (self .block , tx )
255
257
256
- def verifyspv (self , sender , to , value , data = [],
257
- funid = None , abi = None , proof = []):
258
+ def verifyspv (self , sender , to , value , data = [], funid = None , abi = None , proof = []):
259
+ if not HAS_SERPENT :
260
+ raise RuntimeError ("ethereum-serpent package not installed" )
258
261
sendnonce = self .block .get_nonce (u .privtoaddr (sender ))
259
262
if funid is not None :
260
263
evmdata = serpent .encode_abi (funid , * abi )
0 commit comments