fixed election and voting backward compatibility issues

Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com>
This commit is contained in:
Jürgen Eckel 2023-02-14 17:04:47 +01:00
parent f104b0979d
commit 4c7d9ae468
No known key found for this signature in database
2 changed files with 11 additions and 6 deletions

View File

@ -684,7 +684,7 @@ class Planetmint(object):
current_validators = self.get_validators_dict()
# NOTE: change more than 1/3 of the current power is not allowed
if transaction.assets[0]["data"]["power"] >= (1 / 3) * sum(current_validators.values()):
if Transaction.get_asset_array( transaction )[0]["data"]["power"] >= (1 / 3) * sum(current_validators.values()):
raise InvalidPowerChange("`power` change must be less than 1/3 of total power")
def get_election_status(self, transaction):
@ -740,7 +740,7 @@ class Planetmint(object):
return recipients
def show_election_status(self, transaction):
data = transaction.assets[0]["data"]
data = transaction.get_assets()[0]["data"]
if "public_key" in data.keys():
data["public_key"] = public_key_to_base64(data["public_key"]["value"])
response = ""
@ -821,8 +821,7 @@ class Planetmint(object):
for tx in txns:
if not isinstance(tx, Vote):
continue
election_id = tx.assets[0]["id"]
election_id = Transaction.read_out_asset_id(tx)
if election_id not in elections:
elections[election_id] = []
elections[election_id].append(tx)
@ -956,7 +955,7 @@ class Planetmint(object):
if election.operation == CHAIN_MIGRATION_ELECTION:
self.migrate_abci_chain()
if election.operation == VALIDATOR_ELECTION:
validator_updates = [election.assets[0]["data"]]
validator_updates = [election.get_assets()[0]["data"]]
curr_validator_set = self.get_validators(new_height)
updated_validator_set = new_validator_set(curr_validator_set, validator_updates)
@ -964,7 +963,7 @@ class Planetmint(object):
# TODO change to `new_height + 2` when upgrading to Tendermint 0.24.0.
self.store_validator_set(new_height + 1, updated_validator_set)
return encode_validator(election.assets[0]["data"])
return encode_validator(election.get_assets()[0]["data"])
Block = namedtuple("Block", ("app_hash", "height", "transactions"))

View File

@ -259,3 +259,9 @@ def test_validate_version(b, create_tx, alice):
create_tx._id = None
create_tx.sign([alice.private_key])
validate_raises(create_tx)
def test_upgrade_issue_validation(b):
tx_dict = {"inputs": [{"owners_before": ["HY2gviZVW1fvsshx21kRCcGUJFBKQwf37xA959cTNFzP"], "fulfills": None, "fulfillment": "pGSAIPWt56ud3H3z0qf6hPKcMsJtOSc_goPAo3AXkH8T4mzAgUBuGTrhGQQ0oePAgxC_9pHNWzHiykddAuhMSnSDoatPExkDp2nAmq8D6pvc3ECqMUUj04GBEq2aROmAylDBKrgG"}], "outputs": [{"public_keys": ["6G8TmxcbRgYuQviBg9Us5h4B8D94fNJ4kbMMKRwmY5sy"], "condition": {"details": {"type": "ed25519-sha-256", "public_key": "6G8TmxcbRgYuQviBg9Us5h4B8D94fNJ4kbMMKRwmY5sy"}, "uri": "ni:///sha-256;jf_gG_7GnA7bTzelkz_Du2kMHzw7OS20TVNHD8XZSq4?fpt=ed25519-sha-256&cost=131072"}, "amount": "10"}, {"public_keys": ["CwHvbpvaWQu9wBuVVLRsc2rxUcGM7j1tR3RsVPWtgbXj"], "condition": {"details": {"type": "ed25519-sha-256", "public_key": "CwHvbpvaWQu9wBuVVLRsc2rxUcGM7j1tR3RsVPWtgbXj"}, "uri": "ni:///sha-256;4VrA0c8Pvb4DA7Bvrx7or0JBKExRCfWyKSFiLYxpr7A?fpt=ed25519-sha-256&cost=131072"}, "amount": "10"}, {"public_keys": ["HY2gviZVW1fvsshx21kRCcGUJFBKQwf37xA959cTNFzP"], "condition": {"details": {"type": "ed25519-sha-256", "public_key": "HY2gviZVW1fvsshx21kRCcGUJFBKQwf37xA959cTNFzP"}, "uri": "ni:///sha-256;-uhNj2-VQAytXDoz0z2n9PHUbJrzME4syF1EJCQ9cKw?fpt=ed25519-sha-256&cost=131072"}, "amount": "10"}, {"public_keys": ["2mxYGVViSHfTFJNydAKQQZaz8HAUjUSCDobPCF2q1hjk"], "condition": {"details": {"type": "ed25519-sha-256", "public_key": "2mxYGVViSHfTFJNydAKQQZaz8HAUjUSCDobPCF2q1hjk"}, "uri": "ni:///sha-256;fTF2N2feWDvfEeMoTXss5KlWkYwnP4g2jUWKF2cmFRI?fpt=ed25519-sha-256&cost=131072"}, "amount": "10"}, {"public_keys": ["Dxy87xVCbGueayzmzo1csFFp47mhsvCYqX7dJJSTZmvB"], "condition": {"details": {"type": "ed25519-sha-256", "public_key": "Dxy87xVCbGueayzmzo1csFFp47mhsvCYqX7dJJSTZmvB"}, "uri": "ni:///sha-256;Ga2y8alLY9f1tQ-Jvly68UZZ7csLLWbL7v7240_-uvo?fpt=ed25519-sha-256&cost=131072"}, "amount": "10"}], "operation": "VALIDATOR_ELECTION", "metadata": None, "asset": {"data": {"public_key": {"value": "EEE57EEEE18BCC60B951C0672B09D70F52B20AC8C8DE9A191F956BB09083BF96", "type": "ed25519-base16"}, "power": 10, "node_id": "a4ee5afed56efbfbc0d08c1d030b1d0291451c59", "seed": "99430bfa-26e7-422d-a816-37166a05818c"}}, "version": "2.0", "id": "d2a58e4bb788e6594b4e8570b881b8b9859be34881fd4cba40b49481b0af2e98"}
tx = Transaction.from_dict(tx_dict, False)
print(tx)