6
6
from rlp .utils import decode_hex
7
7
from ethereum .utils import encode_hex
8
8
import ethereum .ethpow as ethpow
9
- import ethereum .utils as utils
9
+ from ethereum .utils import (
10
+ sha3 ,
11
+ privtoaddr ,
12
+ denoms ,
13
+ dump_state ,
14
+ )
10
15
from ethereum .chain import Chain
11
16
from ethereum .db import EphemDB
12
17
from ethereum .tests .utils import new_db
@@ -29,10 +34,10 @@ def env(db):
29
34
30
35
@pytest .fixture (scope = "module" )
31
36
def accounts ():
32
- k = utils . sha3 (b'cow' )
33
- v = utils . privtoaddr (k )
34
- k2 = utils . sha3 (b'horse' )
35
- v2 = utils . privtoaddr (k2 )
37
+ k = sha3 (b'cow' )
38
+ v = privtoaddr (k )
39
+ k2 = sha3 (b'horse' )
40
+ v2 = privtoaddr (k2 )
36
41
return k , v , k2 , v2
37
42
38
43
@@ -106,7 +111,7 @@ def get_transaction(gasprice=0, nonce=0):
106
111
k , v , k2 , v2 = accounts ()
107
112
tx = transactions .Transaction (
108
113
nonce , gasprice , startgas = 100000 ,
109
- to = v2 , value = utils . denoms .finney * 10 , data = '' ).sign (k )
114
+ to = v2 , value = denoms .finney * 10 , data = '' ).sign (k )
110
115
return tx
111
116
112
117
@@ -115,9 +120,19 @@ def store_block(blk):
115
120
assert blocks .get_block (env (blk .db ), blk .hash ) == blk
116
121
117
122
118
- def test_transfer (db ):
123
+ @pytest .mark .parametrize ('balance' , [
124
+ denoms .wei * 10000 ,
125
+ denoms .babbage ,
126
+ denoms .lovelace ,
127
+ denoms .shannon ,
128
+ denoms .szabo ,
129
+ denoms .finney ,
130
+ denoms .ether ,
131
+ denoms .turing
132
+ ])
133
+ def test_transfer (db , balance ):
119
134
k , v , k2 , v2 = accounts ()
120
- blk = blocks .genesis (env (db ), start_alloc = {v : {"balance" : utils . denoms . ether * 1 }})
135
+ blk = blocks .genesis (env (db ), start_alloc = {v : {"balance" : balance }})
121
136
b_v = blk .get_balance (v )
122
137
b_v2 = blk .get_balance (v2 )
123
138
value = 42
@@ -129,10 +144,10 @@ def test_transfer(db):
129
144
130
145
def test_failing_transfer (db ):
131
146
k , v , k2 , v2 = accounts ()
132
- blk = blocks .genesis (env (db ), start_alloc = {v : {"balance" : utils . denoms .ether * 1 }})
147
+ blk = blocks .genesis (env (db ), start_alloc = {v : {"balance" : denoms .ether * 1 }})
133
148
b_v = blk .get_balance (v )
134
149
b_v2 = blk .get_balance (v2 )
135
- value = utils . denoms .ether * 2
150
+ value = denoms .ether * 2
136
151
# should fail
137
152
success = blk .transfer_value (v , v2 , value )
138
153
assert not success
@@ -149,19 +164,19 @@ def test_serialize_block(db):
149
164
150
165
def test_genesis (db , alt_db ):
151
166
k , v , k2 , v2 = accounts ()
152
- blk = blocks .genesis (env (db ), start_alloc = {v : {"balance" : utils . denoms .ether * 1 }})
167
+ blk = blocks .genesis (env (db ), start_alloc = {v : {"balance" : denoms .ether * 1 }})
153
168
# sr = blk.state_root
154
169
assert blk .state .db .db == db .db
155
170
db .put (blk .hash , rlp .encode (blk ))
156
171
blk .state .db .commit ()
157
172
# assert sr in db
158
173
db .commit ()
159
174
# assert sr in db
160
- blk2 = blocks .genesis (env (db ), start_alloc = {v : {"balance" : utils . denoms .ether * 1 }})
175
+ blk2 = blocks .genesis (env (db ), start_alloc = {v : {"balance" : denoms .ether * 1 }})
161
176
blk3 = blocks .genesis (env (db ))
162
177
assert blk == blk2
163
178
assert blk != blk3
164
- blk2 = blocks .genesis (env (alt_db ), start_alloc = {v : {"balance" : utils . denoms .ether * 1 }})
179
+ blk2 = blocks .genesis (env (alt_db ), start_alloc = {v : {"balance" : denoms .ether * 1 }})
165
180
blk3 = blocks .genesis (env (alt_db ))
166
181
assert blk == blk2
167
182
assert blk != blk3
@@ -184,21 +199,21 @@ def test_deserialize_commit(db):
184
199
185
200
def test_genesis_db (db , alt_db ):
186
201
k , v , k2 , v2 = accounts ()
187
- blk = blocks .genesis (env (db ), start_alloc = {v : {"balance" : utils . denoms .ether * 1 }})
202
+ blk = blocks .genesis (env (db ), start_alloc = {v : {"balance" : denoms .ether * 1 }})
188
203
store_block (blk )
189
- blk2 = blocks .genesis (env (db ), start_alloc = {v : {"balance" : utils . denoms .ether * 1 }})
204
+ blk2 = blocks .genesis (env (db ), start_alloc = {v : {"balance" : denoms .ether * 1 }})
190
205
blk3 = blocks .genesis (env (db ))
191
206
assert blk == blk2
192
207
assert blk != blk3
193
- blk2 = blocks .genesis (env (alt_db ), start_alloc = {v : {"balance" : utils . denoms .ether * 1 }})
208
+ blk2 = blocks .genesis (env (alt_db ), start_alloc = {v : {"balance" : denoms .ether * 1 }})
194
209
blk3 = blocks .genesis (env (alt_db ))
195
210
assert blk == blk2
196
211
assert blk != blk3
197
212
198
213
199
214
def test_mine_block (db ):
200
215
k , v , k2 , v2 = accounts ()
201
- blk = mkquickgenesis ({v : {"balance" : utils . denoms .ether * 1 }}, db )
216
+ blk = mkquickgenesis ({v : {"balance" : denoms .ether * 1 }}, db )
202
217
store_block (blk )
203
218
blk2 = mine_next_block (blk , coinbase = v )
204
219
store_block (blk2 )
@@ -220,21 +235,21 @@ def test_block_serialization_with_transaction_empty_genesis(db):
220
235
221
236
def test_mine_block_with_transaction (db ):
222
237
k , v , k2 , v2 = accounts ()
223
- blk = mkquickgenesis ({v : {"balance" : utils . denoms .ether * 1 }}, db = db )
238
+ blk = mkquickgenesis ({v : {"balance" : denoms .ether * 1 }}, db = db )
224
239
store_block (blk )
225
240
tx = get_transaction ()
226
241
blk = mine_next_block (blk , transactions = [tx ])
227
242
assert tx in blk .get_transactions ()
228
243
assert blk .get_transaction (0 ) == tx
229
244
with pytest .raises (IndexError ):
230
245
blk .get_transaction (1 )
231
- assert blk .get_balance (v ) == utils . denoms .finney * 990
232
- assert blk .get_balance (v2 ) == utils . denoms .finney * 10
246
+ assert blk .get_balance (v ) == denoms .finney * 990
247
+ assert blk .get_balance (v2 ) == denoms .finney * 10
233
248
234
249
235
250
def test_mine_block_with_transaction2 (db ):
236
251
k , v , k2 , v2 = accounts ()
237
- blk = mkquickgenesis ({v : {"balance" : utils . denoms .ether * 1 }}, db )
252
+ blk = mkquickgenesis ({v : {"balance" : denoms .ether * 1 }}, db )
238
253
store_block (blk )
239
254
tx = get_transaction ()
240
255
blk2 = mine_next_block (blk , coinbase = v , transactions = [tx ])
@@ -253,18 +268,18 @@ def test_mine_block_with_transaction2(db):
253
268
254
269
def test_mine_block_with_transaction3 (db ):
255
270
k , v , k2 , v2 = accounts ()
256
- blk = mkquickgenesis ({v : {"balance" : utils . denoms .ether * 1 }}, db )
271
+ blk = mkquickgenesis ({v : {"balance" : denoms .ether * 1 }}, db )
257
272
store_block (blk )
258
273
tx = get_transaction ()
259
274
blk = mine_next_block (blk , transactions = [tx ])
260
275
assert tx in blk .get_transactions ()
261
- assert blk .get_balance (v ) == utils . denoms .finney * 990
262
- assert blk .get_balance (v2 ) == utils . denoms .finney * 10
276
+ assert blk .get_balance (v ) == denoms .finney * 990
277
+ assert blk .get_balance (v2 ) == denoms .finney * 10
263
278
264
279
265
280
def test_block_serialization_same_db (db ):
266
281
k , v , k2 , v2 = accounts ()
267
- blk = mkquickgenesis ({v : {"balance" : utils . denoms .ether * 1 }}, db )
282
+ blk = mkquickgenesis ({v : {"balance" : denoms .ether * 1 }}, db )
268
283
assert blk .hash == rlp .decode (rlp .encode (blk ), blocks .Block , env = env (db )).hash
269
284
store_block (blk )
270
285
blk2 = mine_next_block (blk )
@@ -299,20 +314,20 @@ def test_block_serialization_with_transaction_other_db():
299
314
k , v , k2 , v2 = accounts ()
300
315
a_db , b_db = db (), db ()
301
316
# mine two blocks
302
- a_blk = mkquickgenesis ({v : {"balance" : utils . denoms .ether * 1 }}, db = a_db )
317
+ a_blk = mkquickgenesis ({v : {"balance" : denoms .ether * 1 }}, db = a_db )
303
318
store_block (a_blk )
304
319
tx = get_transaction ()
305
320
logger .debug ('a: state_root before tx %r' % hx (a_blk .state_root ))
306
- logger .debug ('a: state:\n %s' % utils . dump_state (a_blk .state ))
321
+ logger .debug ('a: state:\n %s' % dump_state (a_blk .state ))
307
322
a_blk2 = mine_next_block (a_blk , transactions = [tx ])
308
323
logger .debug ('a: state_root after tx %r' % hx (a_blk2 .state_root ))
309
- logger .debug ('a: state:\n %s' % utils . dump_state (a_blk2 .state ))
324
+ logger .debug ('a: state:\n %s' % dump_state (a_blk2 .state ))
310
325
assert tx in a_blk2 .get_transactions ()
311
326
store_block (a_blk2 )
312
327
assert tx in a_blk2 .get_transactions ()
313
328
logger .debug ('preparing receiving chain ---------------------' )
314
329
# receive in other db
315
- b_blk = mkquickgenesis ({v : {"balance" : utils . denoms .ether * 1 }}, b_db )
330
+ b_blk = mkquickgenesis ({v : {"balance" : denoms .ether * 1 }}, b_db )
316
331
store_block (b_blk )
317
332
318
333
assert b_blk .number == 0
@@ -332,15 +347,15 @@ def test_block_serialization_with_transaction_other_db():
332
347
333
348
def test_transaction (db ):
334
349
k , v , k2 , v2 = accounts ()
335
- blk = mkquickgenesis ({v : {"balance" : utils . denoms .ether * 1 }}, db = db )
350
+ blk = mkquickgenesis ({v : {"balance" : denoms .ether * 1 }}, db = db )
336
351
store_block (blk )
337
352
blk = mine_next_block (blk )
338
353
tx = get_transaction ()
339
354
assert tx not in blk .get_transactions ()
340
355
success , res = processblock .apply_transaction (blk , tx )
341
356
assert tx in blk .get_transactions ()
342
- assert blk .get_balance (v ) == utils . denoms .finney * 990
343
- assert blk .get_balance (v2 ) == utils . denoms .finney * 10
357
+ assert blk .get_balance (v ) == denoms .finney * 990
358
+ assert blk .get_balance (v2 ) == denoms .finney * 10
344
359
345
360
346
361
def test_transaction_serialization ():
@@ -353,12 +368,12 @@ def test_transaction_serialization():
353
368
354
369
def test_invalid_transaction (db ):
355
370
k , v , k2 , v2 = accounts ()
356
- blk = mkquickgenesis ({v2 : {"balance" : utils . denoms .ether * 1 }}, db = db )
371
+ blk = mkquickgenesis ({v2 : {"balance" : denoms .ether * 1 }}, db = db )
357
372
store_block (blk )
358
373
tx = get_transaction ()
359
374
blk = mine_next_block (blk , transactions = [tx ])
360
375
assert blk .get_balance (v ) == 0
361
- assert blk .get_balance (v2 ) == utils . denoms .ether * 1
376
+ assert blk .get_balance (v2 ) == denoms .ether * 1
362
377
assert tx not in blk .get_transactions ()
363
378
364
379
@@ -371,7 +386,7 @@ def test_prevhash(db):
371
386
372
387
def test_genesis_chain (db ):
373
388
k , v , k2 , v2 = accounts ()
374
- blk = mkquickgenesis ({v : {"balance" : utils . denoms .ether * 1 }}, db = db )
389
+ blk = mkquickgenesis ({v : {"balance" : denoms .ether * 1 }}, db = db )
375
390
chain = Chain (env = env (blk .db ), genesis = blk )
376
391
377
392
assert chain .has_block (blk .hash )
@@ -392,7 +407,7 @@ def test_genesis_chain(db):
392
407
393
408
def test_simple_chain (db ):
394
409
k , v , k2 , v2 = accounts ()
395
- blk = mkquickgenesis ({v : {"balance" : utils . denoms .ether * 1 }}, db = db )
410
+ blk = mkquickgenesis ({v : {"balance" : denoms .ether * 1 }}, db = db )
396
411
store_block (blk )
397
412
chain = Chain (env = env (blk .db ), genesis = blk )
398
413
tx = get_transaction ()
@@ -437,15 +452,15 @@ def test_add_side_chain(db, alt_db):
437
452
"""
438
453
k , v , k2 , v2 = accounts ()
439
454
# Remote: mine one block
440
- R0 = mkquickgenesis ({v : {"balance" : utils . denoms .ether * 1 }}, db = db )
455
+ R0 = mkquickgenesis ({v : {"balance" : denoms .ether * 1 }}, db = db )
441
456
store_block (R0 )
442
457
tx0 = get_transaction (nonce = 0 )
443
458
R1 = mine_next_block (R0 , transactions = [tx0 ])
444
459
store_block (R1 )
445
460
assert tx0 .hash in [x .hash for x in R1 .get_transactions ()]
446
461
447
462
# Local: mine two blocks
448
- L0 = mkquickgenesis ({v : {"balance" : utils . denoms .ether * 1 }}, alt_db )
463
+ L0 = mkquickgenesis ({v : {"balance" : denoms .ether * 1 }}, alt_db )
449
464
chain = Chain (env = env (L0 .db ), genesis = L0 )
450
465
tx0 = get_transaction (nonce = 0 )
451
466
L1 = mine_next_block (L0 , transactions = [tx0 ])
@@ -470,7 +485,7 @@ def test_add_longer_side_chain(db, alt_db):
470
485
"""
471
486
k , v , k2 , v2 = accounts ()
472
487
# Remote: mine one block
473
- blk = mkquickgenesis ({v : {"balance" : utils . denoms .ether * 1 }}, db = db )
488
+ blk = mkquickgenesis ({v : {"balance" : denoms .ether * 1 }}, db = db )
474
489
store_block (blk )
475
490
remote_blocks = [blk ]
476
491
for i in range (3 ):
@@ -479,7 +494,7 @@ def test_add_longer_side_chain(db, alt_db):
479
494
store_block (blk )
480
495
remote_blocks .append (blk )
481
496
# Local: mine two blocks
482
- L0 = mkquickgenesis ({v : {"balance" : utils . denoms .ether * 1 }}, db = alt_db )
497
+ L0 = mkquickgenesis ({v : {"balance" : denoms .ether * 1 }}, db = alt_db )
483
498
chain = Chain (env = env (L0 .db ), genesis = L0 )
484
499
tx0 = get_transaction (nonce = 0 )
485
500
L1 = mine_next_block (L0 , transactions = [tx0 ])
0 commit comments