Properly define the core pallet instead of placing it within the runtime

This commit is contained in:
Luke Parker
2025-09-19 19:05:47 -04:00
parent d74b00b9e4
commit 3f5150b3fa
12 changed files with 260 additions and 122 deletions

View File

@@ -297,6 +297,8 @@ mod substrate {
/// Begin execution of a transaction.
fn start_transaction(&self);
/// Consume the next nonce for an account.
///
/// This MUST NOT be called if the next nonce is `u32::MAX`. The caller MAY panic in that case.
fn consume_next_nonce(&self, signer: &SeraiAddress);
/// Have the transaction pay its SRI fee.
fn pay_fee(&self, signer: &SeraiAddress, fee: Amount) -> Result<(), TransactionValidityError>;
@@ -425,13 +427,20 @@ mod substrate {
Err(TransactionValidityError::Invalid(InvalidTransaction::Stale))?;
}
}
match self.1.next_nonce(signer).cmp(nonce) {
core::cmp::Ordering::Less => {
Err(TransactionValidityError::Invalid(InvalidTransaction::Stale))?
{
let next_nonce = self.1.next_nonce(signer);
if next_nonce == u32::MAX {
Err(TransactionValidityError::Invalid(InvalidTransaction::BadSigner))?;
}
core::cmp::Ordering::Equal => {}
core::cmp::Ordering::Greater => {
Err(TransactionValidityError::Invalid(InvalidTransaction::Future))?
match next_nonce.cmp(nonce) {
core::cmp::Ordering::Less => {
Err(TransactionValidityError::Invalid(InvalidTransaction::Stale))?
}
core::cmp::Ordering::Equal => {}
core::cmp::Ordering::Greater => {
Err(TransactionValidityError::Invalid(InvalidTransaction::Future))?
}
}
}