Biçime Göre Boyut Sınırları
Transaction v1, SIMD-0385 ile tanıtılan mesaj biçimidir. Gönderenler açısından ana değişiklik boyuttur: bir v1 işlemi 4096 bayta kadar olabilirken legacy ve v0 işlemler 1232’de kalır.
Apex biçimi işlem baytlarından algılar. Ayarlanacak bir bayrak veya ayrı bir rota yoktur.
Paket üyeleri, biçimleri ne olursa olsun her biri 1232 baytla sınırlıdır.
v1’i Kanonik Kodlayıcıyla Serileştirin
Bir v1 işlemi, biçimin kanonik kodlayıcısıyla serileştirilmelidir. Rust’ta buwincode’dur. Eski bincode ve serde yolu legacy ve v0 için doğru baytları üretir, ancak v1 için yanlış baytları üretir ve işlem hatalı biçimlendirilmiş olarak reddedilir.
Rust istemcisi doğru kodlayıcıyı apex_sender_client::serialize_transaction olarak sunar. Legacy ve v0 için bincode ile bayt düzeyinde aynıdır, v1 için ise doğrudur. ApexSenderClient::send_transaction onu dahili olarak kullanır, dolayısıyla onu yalnızca baytlara ihtiyacınız olduğunda, örneğin HTTP rotaları için, kendiniz çağırırsınız.
Diğer dillerde, SIMD-0385 serileştirmesini uygulayan bir Solana kütüphanesi sürümü kullanın. Göndermeden önce serileştirilmiş mesajınızın ilk baytının v1 sürüm öneki olduğunu kontrol edin.
Bahşiş Kuralı Aynıdır
Bir v1 işlemi aynı bahşişe ihtiyaç duyar: yayınlanmış bir bahşiş hesabına, bir imzalayan tarafından karşılanan, katmanınızın tabanında veya üzerinde tek bir üst düzey SystemProgram transferi. Bir fark hesaplama bütçesidir. Bir v1 mesajında hesaplama bütçesi ComputeBudget program talimatlarında değil, mesajın kendiTransactionConfig yapısında yer alır. TransactionConfig içinde belirlenmeyen her limit 0’dır ve yüklenen hesap verisi boyutu da buna dahildir. 2026-09-19 tarihli mainnet testimizde, ComputeBudget talimatlarına güvenen bir v1 işlemi bloğa girdi ve zincir üzerinde MaxLoadedAccountsDataSizeExceeded hatasıyla başarısız oldu.
Bu yüzden üçünü de belirleyin: hesaplama birimi limiti, yüklenen hesap verisi boyutu limiti ve öncelik için ücret. Öncelik ücreti, hesaplama birimi başına bir fiyat değil, lamport cinsinden bir toplamdır. Bu yapılandırmayla 276, 741 ve 1641 baytlık v1 işlemleri Apex üzerinden QUIC ile mainnet’te bloğa girdi. 1641 baytlık olan, 1232 baytlık legacy sınırının üzerindedir.
Rust Örneği
Bu program, legacy bir işleme sığmayacak olan 3.000 baytlık memo tarzı bir yüke sahip bir v1 işlemi oluşturur ve onu QUIC üzerinden gönderir. Hızlı başlangıç bağımlılıklarına ek olaraksolana-message = "=4.4.1" gerektirir.
Error::TooLarge ile başarısız olur.
v1’i HTTP Üzerinden Gönderme
Doğru serileştirilmiş v1 baytlarını elinizde tuttuğunuzda HTTP rotaları onları tam olarak herhangi bir işlemi aldıkları gibi alır:sendTransaction ve /send için base64, /send-bin ve /send-batch için ham baytlar.