mirror of
https://github.com/planetmint/planetmint.git
synced 2025-11-24 14:35:45 +00:00
moved election_id_to_public_key to validator_utils
Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com>
This commit is contained in:
parent
20b9a08f7f
commit
2fd0ac0755
@ -19,6 +19,7 @@ from planetmint.transactions.common.transaction_mode_types import BROADCAST_TX_C
|
|||||||
from planetmint.transactions.common.exceptions import DatabaseDoesNotExist, ValidationError
|
from planetmint.transactions.common.exceptions import DatabaseDoesNotExist, ValidationError
|
||||||
from planetmint.transactions.types.elections.vote import Vote
|
from planetmint.transactions.types.elections.vote import Vote
|
||||||
from planetmint.transactions.types.elections.chain_migration_election import ChainMigrationElection
|
from planetmint.transactions.types.elections.chain_migration_election import ChainMigrationElection
|
||||||
|
from planetmint.transactions.types.elections.validator_utils import election_id_to_public_key
|
||||||
import planetmint
|
import planetmint
|
||||||
from planetmint import ValidatorElection, Planetmint
|
from planetmint import ValidatorElection, Planetmint
|
||||||
from planetmint.backend import schema
|
from planetmint.backend import schema
|
||||||
@ -197,7 +198,7 @@ def run_election_approve(args, planet):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
inputs = [i for i in tx.to_inputs() if key.public_key in i.owners_before]
|
inputs = [i for i in tx.to_inputs() if key.public_key in i.owners_before]
|
||||||
election_pub_key = ValidatorElection.to_public_key(tx.id)
|
election_pub_key = election_id_to_public_key(tx.id)
|
||||||
approval = Vote.generate(inputs, [([election_pub_key], voting_power)], tx.id).sign([key.private_key])
|
approval = Vote.generate(inputs, [([election_pub_key], voting_power)], tx.id).sign([key.private_key])
|
||||||
planet.validate_transaction(approval)
|
planet.validate_transaction(approval)
|
||||||
|
|
||||||
|
|||||||
@ -10,11 +10,10 @@ from typing import Optional
|
|||||||
|
|
||||||
from planetmint import backend
|
from planetmint import backend
|
||||||
from planetmint.transactions.types.elections.vote import Vote
|
from planetmint.transactions.types.elections.vote import Vote
|
||||||
from planetmint.tendermint_utils import key_from_base64, public_key_to_base64
|
|
||||||
from planetmint.transactions.common.crypto import public_key_from_ed25519_key
|
|
||||||
from planetmint.transactions.common.transaction import Transaction
|
from planetmint.transactions.common.transaction import Transaction
|
||||||
from planetmint.transactions.common.schema import _validate_schema, TX_SCHEMA_COMMON
|
from planetmint.transactions.common.schema import _validate_schema, TX_SCHEMA_COMMON
|
||||||
|
|
||||||
|
from .validator_utils import election_id_to_public_key
|
||||||
|
|
||||||
class Election(Transaction):
|
class Election(Transaction):
|
||||||
"""Represents election transactions.
|
"""Represents election transactions.
|
||||||
@ -74,9 +73,6 @@ class Election(Transaction):
|
|||||||
if cls.TX_SCHEMA_CUSTOM:
|
if cls.TX_SCHEMA_CUSTOM:
|
||||||
_validate_schema(cls.TX_SCHEMA_CUSTOM, tx)
|
_validate_schema(cls.TX_SCHEMA_CUSTOM, tx)
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def to_public_key(cls, election_id): # TODO: move somewhere else
|
|
||||||
return base58.b58encode(bytes.fromhex(election_id)).decode()
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def count_votes(cls, election_pk, transactions, getter=getattr): # TODO: move somewhere else
|
def count_votes(cls, election_pk, transactions, getter=getattr): # TODO: move somewhere else
|
||||||
@ -93,7 +89,7 @@ class Election(Transaction):
|
|||||||
|
|
||||||
def get_commited_votes(self, planet, election_pk=None): # TODO: move somewhere else
|
def get_commited_votes(self, planet, election_pk=None): # TODO: move somewhere else
|
||||||
if election_pk is None:
|
if election_pk is None:
|
||||||
election_pk = self.to_public_key(self.id)
|
election_pk = election_id_to_public_key(self.id)
|
||||||
txns = list(backend.query.get_asset_tokens_for_public_key(planet.connection, self.id, election_pk))
|
txns = list(backend.query.get_asset_tokens_for_public_key(planet.connection, self.id, election_pk))
|
||||||
return self.count_votes(election_pk, txns, dict.get)
|
return self.count_votes(election_pk, txns, dict.get)
|
||||||
|
|
||||||
@ -109,7 +105,7 @@ class Election(Transaction):
|
|||||||
if planet.has_validator_set_changed(self):
|
if planet.has_validator_set_changed(self):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
election_pk = self.to_public_key(self.id)
|
election_pk = election_id_to_public_key(self.id)
|
||||||
votes_committed = self.get_commited_votes(planet, election_pk)
|
votes_committed = self.get_commited_votes(planet, election_pk)
|
||||||
votes_current = self.count_votes(election_pk, current_votes)
|
votes_current = self.count_votes(election_pk, current_votes)
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import base58
|
||||||
import base64
|
import base64
|
||||||
import binascii
|
import binascii
|
||||||
import codecs
|
import codecs
|
||||||
@ -77,3 +78,7 @@ def get_public_key_decoder(pk):
|
|||||||
raise InvalidPublicKey("Invalid `type` specified for public key `value`")
|
raise InvalidPublicKey("Invalid `type` specified for public key `value`")
|
||||||
|
|
||||||
return decoder
|
return decoder
|
||||||
|
|
||||||
|
|
||||||
|
def election_id_to_public_key(election_id):
|
||||||
|
return base58.b58encode(bytes.fromhex(election_id)).decode()
|
||||||
|
|||||||
@ -14,6 +14,7 @@ from planetmint.transactions.common.crypto import generate_key_pair
|
|||||||
from planetmint.transactions.common.exceptions import ValidationError
|
from planetmint.transactions.common.exceptions import ValidationError
|
||||||
from planetmint.transactions.common.transaction_mode_types import BROADCAST_TX_COMMIT
|
from planetmint.transactions.common.transaction_mode_types import BROADCAST_TX_COMMIT
|
||||||
from planetmint.transactions.types.elections.vote import Vote
|
from planetmint.transactions.types.elections.vote import Vote
|
||||||
|
from planetmint.transactions.types.elections.validator_utils import election_id_to_public_key
|
||||||
from tests.utils import generate_block, gen_vote
|
from tests.utils import generate_block, gen_vote
|
||||||
|
|
||||||
pytestmark = [pytest.mark.execute]
|
pytestmark = [pytest.mark.execute]
|
||||||
@ -28,7 +29,7 @@ def test_upsert_validator_valid_election_vote(b_mock, valid_upsert_validator_ele
|
|||||||
public_key0 = input0.owners_before[0]
|
public_key0 = input0.owners_before[0]
|
||||||
key0 = ed25519_node_keys[public_key0]
|
key0 = ed25519_node_keys[public_key0]
|
||||||
|
|
||||||
election_pub_key = ValidatorElection.to_public_key(valid_upsert_validator_election.id)
|
election_pub_key = election_id_to_public_key(valid_upsert_validator_election.id)
|
||||||
|
|
||||||
vote = Vote.generate([input0], [([election_pub_key], votes)], election_id=valid_upsert_validator_election.id).sign(
|
vote = Vote.generate([input0], [([election_pub_key], votes)], election_id=valid_upsert_validator_election.id).sign(
|
||||||
[key0.private_key]
|
[key0.private_key]
|
||||||
@ -46,7 +47,7 @@ def test_upsert_validator_valid_non_election_vote(b_mock, valid_upsert_validator
|
|||||||
public_key0 = input0.owners_before[0]
|
public_key0 = input0.owners_before[0]
|
||||||
key0 = ed25519_node_keys[public_key0]
|
key0 = ed25519_node_keys[public_key0]
|
||||||
|
|
||||||
election_pub_key = ValidatorElection.to_public_key(valid_upsert_validator_election.id)
|
election_pub_key = election_id_to_public_key(valid_upsert_validator_election.id)
|
||||||
|
|
||||||
# Ensure that threshold conditions are now allowed
|
# Ensure that threshold conditions are now allowed
|
||||||
with pytest.raises(ValidationError):
|
with pytest.raises(ValidationError):
|
||||||
@ -76,7 +77,7 @@ def test_upsert_validator_delegate_election_vote(b_mock, valid_upsert_validator_
|
|||||||
assert b_mock.validate_transaction(delegate_vote)
|
assert b_mock.validate_transaction(delegate_vote)
|
||||||
|
|
||||||
b_mock.store_bulk_transactions([delegate_vote])
|
b_mock.store_bulk_transactions([delegate_vote])
|
||||||
election_pub_key = ValidatorElection.to_public_key(valid_upsert_validator_election.id)
|
election_pub_key = election_id_to_public_key(valid_upsert_validator_election.id)
|
||||||
|
|
||||||
alice_votes = delegate_vote.to_inputs()[0]
|
alice_votes = delegate_vote.to_inputs()[0]
|
||||||
alice_casted_vote = Vote.generate(
|
alice_casted_vote = Vote.generate(
|
||||||
@ -102,7 +103,7 @@ def test_upsert_validator_invalid_election_vote(b_mock, valid_upsert_validator_e
|
|||||||
public_key0 = input0.owners_before[0]
|
public_key0 = input0.owners_before[0]
|
||||||
key0 = ed25519_node_keys[public_key0]
|
key0 = ed25519_node_keys[public_key0]
|
||||||
|
|
||||||
election_pub_key = ValidatorElection.to_public_key(valid_upsert_validator_election.id)
|
election_pub_key = election_id_to_public_key(valid_upsert_validator_election.id)
|
||||||
|
|
||||||
vote = Vote.generate(
|
vote = Vote.generate(
|
||||||
[input0], [([election_pub_key], votes + 1)], election_id=valid_upsert_validator_election.id
|
[input0], [([election_pub_key], votes + 1)], election_id=valid_upsert_validator_election.id
|
||||||
@ -133,7 +134,7 @@ def test_valid_election_votes_received(b_mock, valid_upsert_validator_election,
|
|||||||
b_mock.store_bulk_transactions([delegate_vote])
|
b_mock.store_bulk_transactions([delegate_vote])
|
||||||
assert valid_upsert_validator_election.get_commited_votes(b_mock) == 0
|
assert valid_upsert_validator_election.get_commited_votes(b_mock) == 0
|
||||||
|
|
||||||
election_public_key = ValidatorElection.to_public_key(valid_upsert_validator_election.id)
|
election_public_key = election_id_to_public_key(valid_upsert_validator_election.id)
|
||||||
alice_votes = delegate_vote.to_inputs()[0]
|
alice_votes = delegate_vote.to_inputs()[0]
|
||||||
key0_votes = delegate_vote.to_inputs()[1]
|
key0_votes = delegate_vote.to_inputs()[1]
|
||||||
|
|
||||||
|
|||||||
@ -16,6 +16,7 @@ from planetmint.transactions.common import crypto
|
|||||||
from planetmint.transactions.common.transaction_mode_types import BROADCAST_TX_COMMIT
|
from planetmint.transactions.common.transaction_mode_types import BROADCAST_TX_COMMIT
|
||||||
from planetmint.transactions.types.assets.create import Create
|
from planetmint.transactions.types.assets.create import Create
|
||||||
from planetmint.transactions.types.elections.election import Election, Vote
|
from planetmint.transactions.types.elections.election import Election, Vote
|
||||||
|
from planetmint.transactions.types.elections.validator_utils import election_id_to_public_key
|
||||||
from planetmint.tendermint_utils import key_to_base64
|
from planetmint.tendermint_utils import key_to_base64
|
||||||
|
|
||||||
|
|
||||||
@ -73,7 +74,7 @@ def to_inputs(election, i, ed25519_node_keys):
|
|||||||
|
|
||||||
def gen_vote(election, i, ed25519_node_keys):
|
def gen_vote(election, i, ed25519_node_keys):
|
||||||
(input_i, votes_i, key_i) = to_inputs(election, i, ed25519_node_keys)
|
(input_i, votes_i, key_i) = to_inputs(election, i, ed25519_node_keys)
|
||||||
election_pub_key = Election.to_public_key(election.id)
|
election_pub_key = election_id_to_public_key(election.id)
|
||||||
return Vote.generate([input_i], [([election_pub_key], votes_i)], election_id=election.id).sign([key_i.private_key])
|
return Vote.generate([input_i], [([election_pub_key], votes_i)], election_id=election.id).sign([key_i.private_key])
|
||||||
|
|
||||||
|
|
||||||
@ -123,7 +124,7 @@ def generate_election(b, cls, public_key, private_key, asset_data, voter_keys):
|
|||||||
election = cls.generate([public_key], voters, asset_data, None).sign([private_key])
|
election = cls.generate([public_key], voters, asset_data, None).sign([private_key])
|
||||||
|
|
||||||
votes = [
|
votes = [
|
||||||
Vote.generate([election.to_inputs()[i]], [([Election.to_public_key(election.id)], power)], election.id)
|
Vote.generate([election.to_inputs()[i]], [([election_id_to_public_key(election.id)], power)], election.id)
|
||||||
for i, (_, power) in enumerate(voters)
|
for i, (_, power) in enumerate(voters)
|
||||||
]
|
]
|
||||||
for key, v in zip(voter_keys, votes):
|
for key, v in zip(voter_keys, votes):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user