Transaction strictness

This commit is contained in:
obscuren 2014-12-02 00:14:34 +01:00
parent 2df8ad6307
commit b4eeffa8f1

@ -102,11 +102,15 @@ func (pool *TxPool) ValidateTransaction(tx *Transaction) error {
block := pool.Ethereum.ChainManager().CurrentBlock block := pool.Ethereum.ChainManager().CurrentBlock
// Something has gone horribly wrong if this happens // Something has gone horribly wrong if this happens
if block == nil { if block == nil {
return fmt.Errorf("[TXPL] No last block on the block chain") return fmt.Errorf("No last block on the block chain")
} }
if len(tx.Recipient) != 0 && len(tx.Recipient) != 20 { if len(tx.Recipient) != 0 && len(tx.Recipient) != 20 {
return fmt.Errorf("[TXPL] Invalid recipient. len = %d", len(tx.Recipient)) return fmt.Errorf("Invalid recipient. len = %d", len(tx.Recipient))
}
if tx.v > 28 || tx.v < 27 {
return fmt.Errorf("tx.v != (28 || 27)")
} }
if tx.GasPrice.Cmp(MinGasPrice) < 0 { if tx.GasPrice.Cmp(MinGasPrice) < 0 {
@ -120,12 +124,12 @@ func (pool *TxPool) ValidateTransaction(tx *Transaction) error {
// Make sure there's enough in the sender's account. Having insufficient // Make sure there's enough in the sender's account. Having insufficient
// funds won't invalidate this transaction but simple ignores it. // funds won't invalidate this transaction but simple ignores it.
if sender.Balance().Cmp(totAmount) < 0 { if sender.Balance().Cmp(totAmount) < 0 {
return fmt.Errorf("[TXPL] Insufficient amount in sender's (%x) account", tx.Sender()) return fmt.Errorf("Insufficient amount in sender's (%x) account", tx.Sender())
} }
if tx.IsContract() { if tx.IsContract() {
if tx.GasPrice.Cmp(big.NewInt(minGasPrice)) < 0 { if tx.GasPrice.Cmp(big.NewInt(minGasPrice)) < 0 {
return fmt.Errorf("[TXPL] Gasprice too low, %s given should be at least %d.", tx.GasPrice, minGasPrice) return fmt.Errorf("Gasprice too low, %s given should be at least %d.", tx.GasPrice, minGasPrice)
} }
} }