Prevent rent-paying account creation (#22292)
* Fixup typo * Add new feature * Add new TransactionError * Add framework for checking account state before and after transaction processing * Fail transactions that leave new rent-paying accounts * Only check rent-state of writable tx accounts * Review comments: combine process_result success behavior; log and metrics before feature activation * Fix tests that assume rent-exempt accounts are okay * Remove test no longer relevant * Remove native/sysvar special case * Move metrics submission to report legacy->legacy rent paying transitions as well
This commit is contained in:
@@ -51,6 +51,7 @@ enum TransactionErrorType {
|
||||
INVALID_ADDRESS_LOOKUP_TABLE_OWNER = 24;
|
||||
INVALID_ADDRESS_LOOKUP_TABLE_DATA = 25;
|
||||
INVALID_ADDRESS_LOOKUP_TABLE_INDEX = 26;
|
||||
INVALID_RENT_PAYING_ACCOUNT = 27;
|
||||
}
|
||||
|
||||
message InstructionError {
|
||||
|
@@ -574,6 +574,7 @@ impl TryFrom<tx_by_addr::TransactionError> for TransactionError {
|
||||
24 => TransactionError::InvalidAddressLookupTableOwner,
|
||||
25 => TransactionError::InvalidAddressLookupTableData,
|
||||
26 => TransactionError::InvalidAddressLookupTableIndex,
|
||||
27 => TransactionError::InvalidRentPayingAccount,
|
||||
_ => return Err("Invalid TransactionError"),
|
||||
})
|
||||
}
|
||||
@@ -662,6 +663,10 @@ impl From<TransactionError> for tx_by_addr::TransactionError {
|
||||
TransactionError::InvalidAddressLookupTableIndex => {
|
||||
tx_by_addr::TransactionErrorType::InvalidAddressLookupTableIndex
|
||||
}
|
||||
|
||||
TransactionError::InvalidRentPayingAccount => {
|
||||
tx_by_addr::TransactionErrorType::InvalidRentPayingAccount
|
||||
}
|
||||
} as i32,
|
||||
instruction_error: match transaction_error {
|
||||
TransactionError::InstructionError(index, ref instruction_error) => {
|
||||
|
Reference in New Issue
Block a user