def validate_daejun_transaction(state : StateAPI, transaction: SignedTransactionAPI) -> None: ## homesated logic ## if transaction.s > SECPK1_N // 2 or transaction.s == 0: raise ValidationError("Invalid signature S value") ## frontier logic ## # gas_cost = transaction.gas * transaction.gas_price sender_balance = state.get_balance(transaction.sender) # if sender_balance < gas_cost: # raise ValidationError( # f"Sender {transaction.sender!r} cannot afford txn gas " # f"{gas_cost} with account balance {sender_balance}" # ) # total_cost = transaction.value + gas_cost total_cost = transaction.value if sender_balance < total_cost: raise ValidationError("Sender account balance cannot afford txn") sender_nonce = state.get_nonce(transaction.sender) if sender_nonce != transaction.nonce: raise ValidationError( f"Invalid transaction nonce: Expected {sender_nonce}, but got {transaction.nonce}" )
def validate_frontier_transaction(state: StateAPI, transaction: SignedTransactionAPI) -> None: gas_cost = transaction.gas * transaction.gas_price sender_balance = state.get_balance(transaction.sender) if sender_balance < gas_cost: raise ValidationError( f"Sender {transaction.sender!r} cannot afford txn gas " f"{gas_cost} with account balance {sender_balance}" ) total_cost = transaction.value + gas_cost if sender_balance < total_cost: raise ValidationError("Sender account balance cannot afford txn") sender_nonce = state.get_nonce(transaction.sender) if sender_nonce != transaction.nonce: raise ValidationError( f"Invalid transaction nonce: Expected {sender_nonce}, but got {transaction.nonce}" )
def validate_frontier_transaction(state: StateAPI, transaction: SignedTransactionAPI) -> None: gas_cost = transaction.gas * transaction.gas_price sender_balance = state.get_balance(transaction.sender) if sender_balance < gas_cost: raise ValidationError( "Sender {} cannot afford txn gas {} with account balance {}". format( transaction.sender, gas_cost, sender_balance, )) total_cost = transaction.value + gas_cost if sender_balance < total_cost: raise ValidationError("Sender account balance cannot afford txn") if state.get_nonce(transaction.sender) != transaction.nonce: raise ValidationError("Invalid transaction nonce")
def validate_frontier_transaction(state: StateAPI, transaction: SignedTransactionAPI) -> None: max_gas_cost = transaction.gas * state.get_gas_price(transaction) sender_balance = state.get_balance(transaction.sender) if sender_balance < max_gas_cost: raise ValidationError( f"Sender {transaction.sender!r} cannot afford txn gas " f"{max_gas_cost} with account balance {sender_balance}") total_cost = transaction.value + max_gas_cost if sender_balance < total_cost: raise ValidationError( f"Sender does not have enough balance to cover transaction value and gas " f" (has {sender_balance}, needs {total_cost})") sender_nonce = state.get_nonce(transaction.sender) if sender_nonce != transaction.nonce: raise ValidationError( f"Invalid transaction nonce: Expected {sender_nonce}, but got {transaction.nonce}" )