diff --git a/rpc/src/rpc.rs b/rpc/src/rpc.rs index 2d8a4a54d2e1e8..656172722ecfee 100644 --- a/rpc/src/rpc.rs +++ b/rpc/src/rpc.rs @@ -4488,8 +4488,8 @@ pub mod rpc_obsolete_v1_7 { // These values need to be updated if TransactionPacket::DATA_SIZE changes. The // correct values can be found by hand or by simply encoding `TransactionPacket::DATA_SIZE` // bytes and checking length. `test_max_encoded_tx_goldens` ensures these values are correct. -const MAX_BASE58_SIZE: usize = 1683; // Golden, bump if TransactionPacket::DATA_SIZE changes -const MAX_BASE64_SIZE: usize = 1644; // Golden, bump if TransactionPacket::DATA_SIZE changes +const MAX_BASE58_SIZE: usize = 3365; // Golden, bump if TransactionPacket::DATA_SIZE changes +const MAX_BASE64_SIZE: usize = 3288; // Golden, bump if TransactionPacket::DATA_SIZE changes fn decode_and_deserialize( encoded: String, encoding: TransactionBinaryEncoding, @@ -8831,7 +8831,7 @@ pub mod tests { assert_eq!( decode_and_deserialize::(tx64, TransactionBinaryEncoding::Base64) .unwrap_err(), - Error::invalid_params("invalid base64 encoding: InvalidByte(1640, 33)".to_string()) + Error::invalid_params("invalid base64 encoding: InvalidByte(3284, 33)".to_string()) ); let mut tx58 = bs58::encode(&tx_ser).into_string(); @@ -8850,7 +8850,7 @@ pub mod tests { decode_and_deserialize::(tx58, TransactionBinaryEncoding::Base58) .unwrap_err(), Error::invalid_params( - "invalid base58 encoding: InvalidCharacter { character: '!', index: 1680 }" + "invalid base58 encoding: InvalidCharacter { character: '!', index: 3363 }" .to_string(), ) ); diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index 65c2d82553a717..34ed7cc1a5e268 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -18266,7 +18266,7 @@ pub(crate) mod tests { } // Big transaction. { - let tx = make_transaction(25); + let tx = make_transaction(50); assert!(bincode::serialized_size(&tx).unwrap() > TransactionPacket::DATA_SIZE as u64); assert_eq!( bank.verify_transaction(tx.into(), TransactionVerificationMode::FullVerification) @@ -18276,7 +18276,7 @@ pub(crate) mod tests { } // Assert that verify fails as soon as serialized // size exceeds packet data size. - for size in 1..30 { + for size in 1..60 { let tx = make_transaction(size); assert_eq!( bincode::serialized_size(&tx).unwrap() <= TransactionPacket::DATA_SIZE as u64, diff --git a/sdk/src/packet.rs b/sdk/src/packet.rs index 220fd4dbdf505d..f50b9ca6b0fc14 100644 --- a/sdk/src/packet.rs +++ b/sdk/src/packet.rs @@ -17,9 +17,9 @@ static_assertions::const_assert_eq!(PACKET_DATA_SIZE, 1232); /// 8 bytes is the size of the fragment header pub const PACKET_DATA_SIZE: usize = 1280 - 40 - 8; #[cfg(test)] -static_assertions::const_assert_eq!(TRANSACTION_DATA_SIZE, 1232); +static_assertions::const_assert_eq!(TRANSACTION_DATA_SIZE, 2464); /// Maximum over-the-wire size of a transaction, currently two packets -pub const TRANSACTION_DATA_SIZE: usize = PACKET_DATA_SIZE; +pub const TRANSACTION_DATA_SIZE: usize = PACKET_DATA_SIZE * 2; bitflags! { #[repr(C)] diff --git a/web3.js/src/transaction/constants.ts b/web3.js/src/transaction/constants.ts index 075337e8dce161..d2ec8a6d73fc11 100644 --- a/web3.js/src/transaction/constants.ts +++ b/web3.js/src/transaction/constants.ts @@ -7,6 +7,9 @@ */ export const PACKET_DATA_SIZE = 1280 - 40 - 8; +// Maximum over-the-wire size of a large transaction, currently two packets +export const TRANSACTION_PACKET_DATA_SIZE = PACKET_DATA_SIZE * 2; + export const VERSION_PREFIX_MASK = 0x7f; export const SIGNATURE_LENGTH_IN_BYTES = 64;