mirror of
https://github.com/planetmint/planetmint.git
synced 2025-11-26 15:35:45 +00:00
fixed pr comments
Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com>
This commit is contained in:
parent
ebaa3e1103
commit
a712a3ebf9
@ -244,11 +244,11 @@ class App(BaseApplication):
|
||||
return ResponseCommit(data=data)
|
||||
|
||||
|
||||
def rollback(b):
|
||||
def rollback(planetmint):
|
||||
pre_commit = None
|
||||
|
||||
try:
|
||||
pre_commit = b.get_pre_commit_state()
|
||||
pre_commit = planetmint.get_pre_commit_state()
|
||||
except Exception as e:
|
||||
logger.exception("Unexpected error occurred while executing get_pre_commit_state()", e)
|
||||
|
||||
@ -256,12 +256,12 @@ def rollback(b):
|
||||
# the pre_commit record is first stored in the first `end_block`
|
||||
return
|
||||
|
||||
latest_block = b.get_latest_block()
|
||||
latest_block = planetmint.get_latest_block()
|
||||
if latest_block is None:
|
||||
logger.error("Found precommit state but no blocks!")
|
||||
sys.exit(1)
|
||||
|
||||
# NOTE: the pre-commit state is always at most 1 block ahead of the commited state
|
||||
if latest_block["height"] < pre_commit["height"]:
|
||||
b.rollback_election(pre_commit["height"], pre_commit["transactions"])
|
||||
b.delete_transactions(pre_commit["transactions"])
|
||||
planetmint.rollback_election(pre_commit["height"], pre_commit["transactions"])
|
||||
planetmint.delete_transactions(pre_commit["transactions"])
|
||||
|
||||
@ -9,14 +9,13 @@ MongoDB.
|
||||
"""
|
||||
import logging
|
||||
import json
|
||||
import rapidjson
|
||||
import requests
|
||||
import planetmint
|
||||
|
||||
from collections import namedtuple, OrderedDict
|
||||
from uuid import uuid4
|
||||
|
||||
import rapidjson
|
||||
|
||||
from hashlib import sha3_256
|
||||
|
||||
import requests
|
||||
from transactions import Transaction, Vote
|
||||
from transactions.common.crypto import public_key_from_ed25519_key
|
||||
from transactions.common.exceptions import (
|
||||
@ -37,8 +36,6 @@ from transactions.common.transaction import VALIDATOR_ELECTION, CHAIN_MIGRATION_
|
||||
from transactions.common.transaction_mode_types import BROADCAST_TX_COMMIT, BROADCAST_TX_ASYNC, BROADCAST_TX_SYNC
|
||||
from transactions.types.elections.election import Election
|
||||
from transactions.types.elections.validator_utils import election_id_to_public_key
|
||||
|
||||
import planetmint
|
||||
from planetmint.config import Config
|
||||
from planetmint import backend, config_utils, fastquery
|
||||
from planetmint.tendermint_utils import (
|
||||
@ -393,16 +390,10 @@ class Planetmint(object):
|
||||
logger.warning("Invalid transaction (%s): %s", type(e).__name__, e)
|
||||
return False
|
||||
|
||||
input_conditions = []
|
||||
|
||||
if transaction.operation == Transaction.CREATE:
|
||||
duplicates = any(txn for txn in current_transactions if txn.id == transaction.id)
|
||||
if self.is_committed(transaction.id) or duplicates:
|
||||
raise DuplicateTransaction("transaction `{}` already exists".format(transaction.id))
|
||||
|
||||
if not transaction.inputs_valid(input_conditions):
|
||||
raise InvalidSignature("Transaction signature is invalid.")
|
||||
|
||||
elif transaction.operation in [Transaction.TRANSFER, Transaction.VOTE]:
|
||||
self.validate_transfer_inputs(transaction, current_transactions)
|
||||
|
||||
@ -441,6 +432,9 @@ class Planetmint(object):
|
||||
if asset_id != tx.asset["id"]:
|
||||
raise AssetIdMismatch(("The asset id of the input does not" " match the asset id of the" " transaction"))
|
||||
|
||||
if not tx.inputs_valid(input_conditions):
|
||||
raise InvalidSignature("Transaction signature is invalid.")
|
||||
|
||||
input_amount = sum([input_condition.amount for input_condition in input_conditions])
|
||||
output_amount = sum([output_condition.amount for output_condition in tx.outputs])
|
||||
|
||||
@ -451,9 +445,6 @@ class Planetmint(object):
|
||||
).format(input_amount, output_amount)
|
||||
)
|
||||
|
||||
if not tx.inputs_valid(input_conditions):
|
||||
raise InvalidSignature("Transaction signature is invalid.")
|
||||
|
||||
return True
|
||||
|
||||
def is_valid_transaction(self, tx, current_transactions=[]):
|
||||
@ -653,15 +644,11 @@ class Planetmint(object):
|
||||
Raises:
|
||||
ValidationError: If the election is invalid
|
||||
"""
|
||||
input_conditions = []
|
||||
|
||||
duplicates = any(txn for txn in current_transactions if txn.id == transaction.id)
|
||||
if self.is_committed(transaction.id) or duplicates:
|
||||
raise DuplicateTransaction("transaction `{}` already exists".format(transaction.id))
|
||||
|
||||
if not transaction.inputs_valid(input_conditions):
|
||||
raise InvalidSignature("Transaction signature is invalid.")
|
||||
|
||||
current_validators = self.get_validators_dict()
|
||||
|
||||
# NOTE: Proposer should be a single node
|
||||
@ -678,11 +665,11 @@ class Planetmint(object):
|
||||
raise UnequalValidatorSet("Validator set much be exactly same to the outputs of election")
|
||||
|
||||
if transaction.operation == VALIDATOR_ELECTION:
|
||||
self.validate_validator_election(transaction, current_transactions)
|
||||
self.validate_validator_election(transaction)
|
||||
|
||||
return transaction
|
||||
|
||||
def validate_validator_election(self, transaction, current_transactions=[]): # TODO: move somewhere else
|
||||
def validate_validator_election(self, transaction): # TODO: move somewhere else
|
||||
"""For more details refer BEP-21: https://github.com/planetmint/BEPs/tree/master/21"""
|
||||
|
||||
current_validators = self.get_validators_dict()
|
||||
@ -691,8 +678,6 @@ class Planetmint(object):
|
||||
if transaction.asset["data"]["power"] >= (1 / 3) * sum(current_validators.values()):
|
||||
raise InvalidPowerChange("`power` change must be less than 1/3 of total power")
|
||||
|
||||
return transaction
|
||||
|
||||
def get_election_status(self, transaction):
|
||||
election = self.get_election(transaction.id)
|
||||
if election and election["is_concluded"]:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user