Problem: all blocks are valid

Solution: remove the status from transactions
This commit is contained in:
codegeschrei 2018-07-16 16:37:33 +02:00
parent a48259afb1
commit daf4568a32
2 changed files with 5 additions and 15 deletions

View File

@ -1,8 +1,6 @@
from bigchaindb.common.exceptions import (InvalidSignature, DoubleSpend, from bigchaindb.common.exceptions import (InvalidSignature, DoubleSpend,
InputDoesNotExist, InputDoesNotExist, AssetIdMismatch,
TransactionNotInValidBlock, AmountError, DuplicateTransaction)
AssetIdMismatch, AmountError,
DuplicateTransaction)
from bigchaindb.common.transaction import Transaction from bigchaindb.common.transaction import Transaction
from bigchaindb.common.utils import (validate_txn_obj, validate_key) from bigchaindb.common.utils import (validate_txn_obj, validate_key)
from bigchaindb.common.schema import validate_transaction_schema from bigchaindb.common.schema import validate_transaction_schema
@ -36,26 +34,18 @@ class Transaction(Transaction):
input_txs = [] input_txs = []
for input_ in self.inputs: for input_ in self.inputs:
input_txid = input_.fulfills.txid input_txid = input_.fulfills.txid
input_tx, status = bigchain.\ input_tx = bigchain.\
get_transaction(input_txid, include_status=True) get_transaction(input_txid)
if input_tx is None: if input_tx is None:
for ctxn in current_transactions: for ctxn in current_transactions:
# assume that the status as valid for previously validated
# transactions in current round
if ctxn.id == input_txid: if ctxn.id == input_txid:
input_tx = ctxn input_tx = ctxn
status = 'valid'
if input_tx is None: if input_tx is None:
raise InputDoesNotExist("input `{}` doesn't exist" raise InputDoesNotExist("input `{}` doesn't exist"
.format(input_txid)) .format(input_txid))
if status != 'valid':
raise TransactionNotInValidBlock(
'input `{}` does not exist in a valid block'.format(
input_txid))
spent = bigchain.get_spent(input_txid, input_.fulfills.output, spent = bigchain.get_spent(input_txid, input_.fulfills.output,
current_transactions) current_transactions)
if spent and spent.id != self.id: if spent and spent.id != self.id:

View File

@ -28,7 +28,7 @@ class TransactionApi(Resource):
pool = current_app.config['bigchain_pool'] pool = current_app.config['bigchain_pool']
with pool() as bigchain: with pool() as bigchain:
tx, status = bigchain.get_transaction(tx_id, include_status=True) tx = bigchain.get_transaction(tx_id)
if not tx: if not tx:
return make_error(404) return make_error(404)