BankServer::send_transaction_with_context() now performs signature verification (#13932)
(cherry picked from commit 3b39e98298
)
Co-authored-by: Michael Vines <mvines@gmail.com>
This commit is contained in:
@ -122,6 +122,16 @@ impl BanksServer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn verify_transaction(transaction: &Transaction) -> transaction::Result<()> {
|
||||||
|
if let Err(err) = transaction.verify() {
|
||||||
|
Err(err)
|
||||||
|
} else if let Err(err) = transaction.verify_precompiles() {
|
||||||
|
Err(err)
|
||||||
|
} else {
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[tarpc::server]
|
#[tarpc::server]
|
||||||
impl Banks for BanksServer {
|
impl Banks for BanksServer {
|
||||||
async fn send_transaction_with_context(self, _: Context, transaction: Transaction) {
|
async fn send_transaction_with_context(self, _: Context, transaction: Transaction) {
|
||||||
@ -183,6 +193,10 @@ impl Banks for BanksServer {
|
|||||||
transaction: Transaction,
|
transaction: Transaction,
|
||||||
commitment: CommitmentLevel,
|
commitment: CommitmentLevel,
|
||||||
) -> Option<transaction::Result<()>> {
|
) -> Option<transaction::Result<()>> {
|
||||||
|
if let Err(err) = verify_transaction(&transaction) {
|
||||||
|
return Some(Err(err));
|
||||||
|
}
|
||||||
|
|
||||||
let blockhash = &transaction.message.recent_blockhash;
|
let blockhash = &transaction.message.recent_blockhash;
|
||||||
let last_valid_slot = self
|
let last_valid_slot = self
|
||||||
.bank_forks
|
.bank_forks
|
||||||
|
Reference in New Issue
Block a user