move nonce to public execution input

This commit is contained in:
Sergio Chouhy 2025-07-29 16:09:21 -03:00
parent 6a38c2eaa2
commit e9b11af986
8 changed files with 15 additions and 28 deletions

View File

@ -5,6 +5,7 @@ use crate::merkle_tree_public::TreeHashType;
#[derive(Debug, Clone, Serialize, Deserialize)] #[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PublicNativeTokenSend { pub struct PublicNativeTokenSend {
pub from: TreeHashType, pub from: TreeHashType,
pub nonce: u64,
pub to: TreeHashType, pub to: TreeHashType,
pub balance_to_move: u64, pub balance_to_move: u64,
} }

View File

@ -62,8 +62,6 @@ pub struct TransactionBody {
/// ///
/// First value represents vector of changes, second is new length of a state /// First value represents vector of changes, second is new length of a state
pub state_changes: (serde_json::Value, usize), pub state_changes: (serde_json::Value, usize),
pub nonce: u64,
} }
#[derive(Debug, Serialize, Deserialize)] #[derive(Debug, Serialize, Deserialize)]
@ -328,7 +326,6 @@ mod tests {
secret_r: [8; 32], secret_r: [8; 32],
sc_addr: "someAddress".to_string(), sc_addr: "someAddress".to_string(),
state_changes: (serde_json::Value::Null, 10), state_changes: (serde_json::Value::Null, 10),
nonce: 1,
} }
} }

View File

@ -511,7 +511,6 @@ mod tests {
secret_r: [0; 32], secret_r: [0; 32],
sc_addr: "sc_addr".to_string(), sc_addr: "sc_addr".to_string(),
state_changes: (serde_json::Value::Null, 0), state_changes: (serde_json::Value::Null, 0),
nonce: 1,
}; };
Transaction::new(body, SignaturePrivateKey::random(&mut rng)) Transaction::new(body, SignaturePrivateKey::random(&mut rng))
} }

View File

@ -274,7 +274,6 @@ impl NodeCore {
secret_r, secret_r,
sc_addr, sc_addr,
state_changes, state_changes,
nonce: 1,
}; };
let key_to_sign_transaction = account.key_holder.get_pub_account_signing_key(); let key_to_sign_transaction = account.key_holder.get_pub_account_signing_key();
@ -371,7 +370,6 @@ impl NodeCore {
secret_r, secret_r,
sc_addr, sc_addr,
state_changes, state_changes,
nonce: 1,
}; };
let key_to_sign_transaction = account.key_holder.get_pub_account_signing_key(); let key_to_sign_transaction = account.key_holder.get_pub_account_signing_key();
@ -486,7 +484,6 @@ impl NodeCore {
secret_r, secret_r,
sc_addr, sc_addr,
state_changes, state_changes,
nonce: 1,
}; };
let key_to_sign_transaction = account.key_holder.get_pub_account_signing_key(); let key_to_sign_transaction = account.key_holder.get_pub_account_signing_key();
@ -632,7 +629,6 @@ impl NodeCore {
secret_r, secret_r,
sc_addr, sc_addr,
state_changes, state_changes,
nonce: 1,
}; };
let key_to_sign_transaction = account.key_holder.get_pub_account_signing_key(); let key_to_sign_transaction = account.key_holder.get_pub_account_signing_key();
@ -761,7 +757,6 @@ impl NodeCore {
secret_r, secret_r,
sc_addr, sc_addr,
state_changes, state_changes,
nonce: 1,
}; };
let key_to_sign_transaction = account.key_holder.get_pub_account_signing_key(); let key_to_sign_transaction = account.key_holder.get_pub_account_signing_key();
@ -851,7 +846,6 @@ impl NodeCore {
secret_r, secret_r,
sc_addr, sc_addr,
state_changes, state_changes,
nonce: 1,
}; };
let key_to_sign_transaction = account.key_holder.get_pub_account_signing_key(); let key_to_sign_transaction = account.key_holder.get_pub_account_signing_key();
@ -962,6 +956,7 @@ impl NodeCore {
pub async fn send_public_native_token_transfer( pub async fn send_public_native_token_transfer(
&self, &self,
from: AccountAddress, from: AccountAddress,
nonce: u64,
to: AccountAddress, to: AccountAddress,
balance_to_move: u64, balance_to_move: u64,
) -> Result<SendTxResponse, ExecutionFailureKind> { ) -> Result<SendTxResponse, ExecutionFailureKind> {
@ -989,6 +984,7 @@ impl NodeCore {
sc_core::transaction_payloads_tools::create_public_transaction_payload( sc_core::transaction_payloads_tools::create_public_transaction_payload(
serde_json::to_vec(&PublicNativeTokenSend { serde_json::to_vec(&PublicNativeTokenSend {
from, from,
nonce,
to, to,
balance_to_move, balance_to_move,
}) })
@ -998,7 +994,6 @@ impl NodeCore {
secret_r, secret_r,
sc_addr, sc_addr,
state_changes, state_changes,
1,
); );
tx.log(); tx.log();
@ -1555,7 +1550,6 @@ impl NodeCore {
secret_r, secret_r,
sc_addr, sc_addr,
state_changes, state_changes,
nonce: 1,
}; };
let key_to_sign_transaction = account.key_holder.get_pub_account_signing_key(); let key_to_sign_transaction = account.key_holder.get_pub_account_signing_key();

View File

@ -15,7 +15,6 @@ pub fn create_public_transaction_payload(
secret_r: [u8; 32], secret_r: [u8; 32],
sc_addr: String, sc_addr: String,
state_changes: (serde_json::Value, usize), state_changes: (serde_json::Value, usize),
nonce: u64,
) -> TransactionBody { ) -> TransactionBody {
TransactionBody { TransactionBody {
tx_kind: TxKind::Public, tx_kind: TxKind::Public,
@ -32,7 +31,6 @@ pub fn create_public_transaction_payload(
secret_r, secret_r,
sc_addr, sc_addr,
state_changes, state_changes,
nonce,
} }
} }

View File

@ -221,22 +221,24 @@ impl SequencerCore {
ref utxo_commitments_created_hashes, ref utxo_commitments_created_hashes,
ref nullifier_created_hashes, ref nullifier_created_hashes,
execution_input, execution_input,
nonce,
.. ..
} = mempool_tx.auth_tx.transaction().body(); } = mempool_tx.auth_tx.transaction().body();
let tx_hash = *mempool_tx.auth_tx.hash(); let tx_hash = *mempool_tx.auth_tx.hash();
// Nonce check
let signer_addres = address::from_public_key(&mempool_tx.auth_tx.transaction().public_key);
if self.store.acc_store.get_account_nonce(&signer_addres) != *nonce {
return Err(TransactionMalformationErrorKind::NonceMismatch { tx: tx_hash });
}
//Balance move //Balance move
if let Ok(native_transfer_action) = if let Ok(native_transfer_action) =
serde_json::from_slice::<PublicNativeTokenSend>(execution_input) serde_json::from_slice::<PublicNativeTokenSend>(execution_input)
{ {
// Nonce check
let signer_addres =
address::from_public_key(&mempool_tx.auth_tx.transaction().public_key);
if self.store.acc_store.get_account_nonce(&signer_addres)
!= native_transfer_action.nonce
{
return Err(TransactionMalformationErrorKind::NonceMismatch { tx: tx_hash });
}
let from_balance = self let from_balance = self
.store .store
.acc_store .acc_store
@ -406,7 +408,6 @@ mod tests {
secret_r: [0; 32], secret_r: [0; 32],
sc_addr: "sc_addr".to_string(), sc_addr: "sc_addr".to_string(),
state_changes: (serde_json::Value::Null, 0), state_changes: (serde_json::Value::Null, 0),
nonce: 0,
}; };
Transaction::new(body, SignaturePrivateKey::random(&mut rng)) Transaction::new(body, SignaturePrivateKey::random(&mut rng))
} }
@ -422,6 +423,7 @@ mod tests {
let native_token_transfer = PublicNativeTokenSend { let native_token_transfer = PublicNativeTokenSend {
from, from,
nonce,
to, to,
balance_to_move, balance_to_move,
}; };
@ -441,7 +443,6 @@ mod tests {
secret_r: [0; 32], secret_r: [0; 32],
sc_addr: "sc_addr".to_string(), sc_addr: "sc_addr".to_string(),
state_changes: (serde_json::Value::Null, 0), state_changes: (serde_json::Value::Null, 0),
nonce,
}; };
Transaction::new(body, signing_key) Transaction::new(body, signing_key)
} }

View File

@ -95,7 +95,6 @@ mod tests {
secret_r: Default::default(), secret_r: Default::default(),
sc_addr: Default::default(), sc_addr: Default::default(),
state_changes: Default::default(), state_changes: Default::default(),
nonce: 1,
}; };
let tx = Transaction::new(body, SignaturePrivateKey::from_slice(&[1; 32]).unwrap()); let tx = Transaction::new(body, SignaturePrivateKey::from_slice(&[1; 32]).unwrap());
( (

View File

@ -288,7 +288,6 @@ mod tests {
secret_r: Default::default(), secret_r: Default::default(),
sc_addr: Default::default(), sc_addr: Default::default(),
state_changes: Default::default(), state_changes: Default::default(),
nonce: 0,
}; };
let tx = Transaction::new(tx_body, SignaturePrivateKey::from_slice(&[1; 32]).unwrap()); let tx = Transaction::new(tx_body, SignaturePrivateKey::from_slice(&[1; 32]).unwrap());
@ -500,7 +499,7 @@ mod tests {
let request = serde_json::json!({ let request = serde_json::json!({
"jsonrpc": "2.0", "jsonrpc": "2.0",
"method": "get_transaction_by_hash", "method": "get_transaction_by_hash",
"params": { "hash": "b70b861373b99a509b27a0c61d6340762c9a0c0026520921d92218712efc3bca"}, "params": { "hash": "a5210ef33912a448cfe6eda43878c144df81f7bdf51d19b5ddf97be11806a6ed"},
"id": 1 "id": 1
}); });
@ -524,10 +523,9 @@ mod tests {
"tx_kind": "Shielded", "tx_kind": "Shielded",
"utxo_commitments_created_hashes": [], "utxo_commitments_created_hashes": [],
"utxo_commitments_spent_hashes": [], "utxo_commitments_spent_hashes": [],
"nonce": 0,
}, },
"public_key": "3056301006072A8648CE3D020106052B8104000A034200041B84C5567B126440995D3ED5AABA0565D71E1834604819FF9C17F5E9D5DD078F70BEAF8F588B541507FED6A642C5AB42DFDF8120A7F639DE5122D47A69A8E8D1", "public_key": "3056301006072A8648CE3D020106052B8104000A034200041B84C5567B126440995D3ED5AABA0565D71E1834604819FF9C17F5E9D5DD078F70BEAF8F588B541507FED6A642C5AB42DFDF8120A7F639DE5122D47A69A8E8D1",
"signature": "50AEACE783026D0B6CE221474A928A05A99E2942246DF1C79162C08175F80744746E4A00D6C7F70BDBCF6D7B3668334396B9378FB0F58DC2E8A9B13F3BF001C4" "signature": "A4E0D6A25BE829B006124F0DFD766427967AA3BEA96C29219E79BB2CC871891F384748C27E28718A4450AA78709FBF1A57DB33BCD575A2C819D2A439C2D878E6"
} }
} }
}); });