Transaction Queue banning (#2524)

* Blacklisting transaction queue

* Using blacklisting queue in miner

* Restoring todo [ci:skip]

* Blacklisting recipients and code

* Renaming blacklisting->banning

* CLI option for banning.

* Fixing submodule commit [ci:skip]

* Fixing RPC tests

* Additional logging when dropping transactions

* whitespace

[ci:skip]

* Configurable ban duration

* Reverting fix for pruning history from config file
This commit is contained in:
Tomasz Drwięga
2016-10-27 19:28:34 +02:00
committed by Gav Wood
parent ce37b6dcb9
commit 152a551e8b
13 changed files with 457 additions and 15 deletions

View File

@@ -63,6 +63,12 @@ pub enum TransactionError {
},
/// Transaction's gas limit (aka gas) is invalid.
InvalidGasLimit(OutOfBounds<U256>),
/// Transaction sender is banned.
SenderBanned,
/// Transaction receipient is banned.
RecipientBanned,
/// Contract creation code is banned.
CodeBanned,
}
impl fmt::Display for TransactionError {
@@ -81,6 +87,9 @@ impl fmt::Display for TransactionError {
GasLimitExceeded { limit, got } =>
format!("Gas limit exceeded. Limit={}, Given={}", limit, got),
InvalidGasLimit(ref err) => format!("Invalid gas limit. {}", err),
SenderBanned => "Sender is temporarily banned.".into(),
RecipientBanned => "Recipient is temporarily banned.".into(),
CodeBanned => "Contract code is temporarily banned.".into(),
};
f.write_fmt(format_args!("Transaction error ({})", msg))