Skip to content

Commit dc36e2f

Browse files
committed
wip
1 parent b9402aa commit dc36e2f

2 files changed

Lines changed: 57 additions & 35 deletions

File tree

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"data": {
3+
"value": "0",
4+
"senderPublicKey": "0243333347c8cbf4e3cbc7a96964181d02a2b0c854faa2fef86b4b8d92afcf473d",
5+
"gasPrice": 5000000000,
6+
"gasLimit": 200000,
7+
"nonce": "1",
8+
"data": "8f062626000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000030b0093ac8f37588e15df7cfb04d0722dc5486cec062233136d3b6a16d41946577a1f332c4c29c0601ccefac1905dbb611000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060a8bb7c80d24ee79cf3f141eae774b7575466d68631834c29433036ac84eb4904b8f071167cccd5bcc9d11e7c187d6fc70b87ce6e046a750b07f6a8a5985e76bf005bb55b8c70c1cefaccd4c37c314ce69ddfd2eb4a21f8775e01da02e77590b3",
9+
"to": "0x535B3D7A252fa034Ed71F0C53ec0C6F784cB64E1",
10+
"validatorPublicKey": "0xb0093ac8f37588e15df7cfb04d0722dc5486cec062233136d3b6a16d41946577a1f332c4c29c0601ccefac1905dbb611",
11+
"validatorProof": "0xa8bb7c80d24ee79cf3f141eae774b7575466d68631834c29433036ac84eb4904b8f071167cccd5bcc9d11e7c187d6fc70b87ce6e046a750b07f6a8a5985e76bf005bb55b8c70c1cefaccd4c37c314ce69ddfd2eb4a21f8775e01da02e77590b3",
12+
"v": 0,
13+
"r": "583edde415ec3f61643b5e2a18c34c4113eb67434adfc4d3633a1469a6fe3895",
14+
"s": "165b3ec00a56227ab3931865a3a63e5e5dbb79e4e42985abe394f8eb74acbc58",
15+
"hash": "917fb0ebbdfdeb2785db0e3d67bb68bf655a6381a529f22676a7a16e07278e1c"
16+
},
17+
"serialized": "f9018d0185012a05f20083030d4094535b3d7a252fa034ed71f0c53ec0c6f784cb64e180b901248f062626000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000030b0093ac8f37588e15df7cfb04d0722dc5486cec062233136d3b6a16d41946577a1f332c4c29c0601ccefac1905dbb611000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060a8bb7c80d24ee79cf3f141eae774b7575466d68631834c29433036ac84eb4904b8f071167cccd5bcc9d11e7c187d6fc70b87ce6e046a750b07f6a8a5985e76bf005bb55b8c70c1cefaccd4c37c314ce69ddfd2eb4a21f8775e01da02e77590b3825c6ba0583edde415ec3f61643b5e2a18c34c4113eb67434adfc4d3633a1469a6fe3895a0165b3ec00a56227ab3931865a3a63e5e5dbb79e4e42985abe394f8eb74acbc58",
18+
"validatorPassphrase": "bless organ december boring ill obvious unaware dinosaur broccoli build hamster rebuild skin airport stay entry denial agent october thought duck trouble decorate way"
19+
}
Lines changed: 38 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,58 @@
1-
from crypto.enums.contract_addresses import ContractAddresses
2-
from crypto.identity.proof_of_possession import ProofOfPossession
31
from crypto.transactions.builder.validator_update_builder import ValidatorUpdateBuilder
42

53

6-
def test_validator_update_derives_bls_keys(passphrase, validator_passphrase):
7-
builder = (
8-
ValidatorUpdateBuilder
9-
.new()
10-
.gas_price(5000000000)
11-
.gas_limit(200000)
12-
.nonce('1')
13-
.validator_passphrase(validator_passphrase)
14-
.sign(passphrase)
15-
)
16-
17-
bls = ProofOfPossession.from_passphrase(validator_passphrase)
18-
19-
assert builder.transaction.data['validatorPublicKey'] == '0x' + bls['pk']
20-
assert builder.transaction.data['validatorProof'] == '0x' + bls['pop']
21-
assert len(builder.transaction.data['validatorPublicKey']) == 98 # 0x + 96 hex = 48 bytes
22-
assert len(builder.transaction.data['validatorProof']) == 194 # 0x + 192 hex = 96 bytes
23-
4+
def test_validator_update_transaction(passphrase, load_transaction_fixture):
5+
fixture = load_transaction_fixture('transactions/validator-update')
246

25-
def test_validator_update_targets_consensus_contract(passphrase, validator_passphrase):
267
builder = (
278
ValidatorUpdateBuilder
289
.new()
29-
.validator_passphrase(validator_passphrase)
10+
.gas_price(fixture['data']['gasPrice'])
11+
.gas_limit(fixture['data']['gasLimit'])
12+
.nonce(fixture['data']['nonce'])
13+
.validator_passphrase(fixture['validatorPassphrase'])
14+
.to(fixture['data']['to'])
3015
.sign(passphrase)
3116
)
3217

33-
assert builder.transaction.data['to'].lower() == ContractAddresses.CONSENSUS.value.lower()
34-
35-
36-
def test_validator_update_value_is_zero(passphrase, validator_passphrase):
37-
builder = (
38-
ValidatorUpdateBuilder
39-
.new()
40-
.validator_passphrase(validator_passphrase)
41-
.sign(passphrase)
42-
)
18+
assert builder.transaction.data['gasPrice'] == int(fixture['data']['gasPrice'])
19+
assert builder.transaction.data['gasLimit'] == int(fixture['data']['gasLimit'])
20+
assert builder.transaction.data['nonce'] == fixture['data']['nonce']
21+
assert builder.transaction.data['to'] == fixture['data']['to']
22+
assert builder.transaction.data['value'] == int(fixture['data']['value'])
23+
assert builder.transaction.data['validatorPublicKey'] == fixture['data']['validatorPublicKey']
24+
assert builder.transaction.data['validatorProof'] == fixture['data']['validatorProof']
25+
assert builder.transaction.data['v'] == fixture['data']['v']
26+
assert builder.transaction.data['r'] == fixture['data']['r']
27+
assert builder.transaction.data['s'] == fixture['data']['s']
28+
assert builder.transaction.data['hash'] == fixture['data']['hash']
29+
assert builder.transaction.serialize().hex() == fixture['serialized']
30+
assert builder.verify()
4331

44-
assert builder.transaction.data['value'] == 0
4532

33+
def test_validator_update_transaction_with_default_to(passphrase, load_transaction_fixture):
34+
fixture = load_transaction_fixture('transactions/validator-update')
4635

47-
def test_validator_update_verifies(passphrase, validator_passphrase):
4836
builder = (
4937
ValidatorUpdateBuilder
5038
.new()
51-
.validator_passphrase(validator_passphrase)
39+
.gas_price(fixture['data']['gasPrice'])
40+
.gas_limit(fixture['data']['gasLimit'])
41+
.nonce(fixture['data']['nonce'])
42+
.validator_passphrase(fixture['validatorPassphrase'])
5243
.sign(passphrase)
5344
)
5445

46+
assert builder.transaction.data['gasPrice'] == int(fixture['data']['gasPrice'])
47+
assert builder.transaction.data['gasLimit'] == int(fixture['data']['gasLimit'])
48+
assert builder.transaction.data['nonce'] == fixture['data']['nonce']
49+
assert builder.transaction.data['to'].lower() == fixture['data']['to'].lower()
50+
assert builder.transaction.data['value'] == int(fixture['data']['value'])
51+
assert builder.transaction.data['validatorPublicKey'] == fixture['data']['validatorPublicKey']
52+
assert builder.transaction.data['validatorProof'] == fixture['data']['validatorProof']
53+
assert builder.transaction.data['v'] == fixture['data']['v']
54+
assert builder.transaction.data['r'] == fixture['data']['r']
55+
assert builder.transaction.data['s'] == fixture['data']['s']
56+
assert builder.transaction.data['hash'] == fixture['data']['hash']
57+
assert builder.transaction.serialize().hex() == fixture['serialized']
5558
assert builder.verify()

0 commit comments

Comments
 (0)