USDT ödemelerini ana ağdan önce denemek: Nile neyi değiştirir, sandbox neyi benzetir
Bir ödeme entegrasyonu ilk başarısızlığıyla ana ağdan daha ucuz bir yerde karşılaşmalıdır ve TRON'da böyle iki yer vardır. Nile herkese açık bir test ağıdır: işlemlerin imzalandığı ve bloklara indiği, kendi parametreleriyle çalışan gerçek bir zincir. Bizimki gibi bir sandbox, API'yi benzetilmiş bir zincir üzerinde kopyalar; bu, gerçek ağdan vazgeçer ve gerçek bir ağın istek üzerine üretmeyeceği sonuçları kazanır. Ana ağın ve Nile'ın zincir parametrelerini 3 Eylül 2026'da okuduk ve ertesi gün Nile'da işlemler imzaladık.
Nile'ın ana ağla ortak olduğu şeyler
Nile, ana ağla aynı getchainparameters çağrısını yanıtlar ve bir transferi fiyatlayan parametreler birebir aynı döndü. Enerji iki ağda da birim başına 100 sun tutar; bu yüzden enerjisi yetmeyen bir transfer ikisinde de aynı oranla TRX yakar. Ücretsiz bant genişliği, hesap oluşturma ücreti, memo ücreti ve üç dinamik enerji parametresi de uyuşur.
| Zincir parametresi, 3 Eylül 2026'da okundu | Ana ağ | Nile |
|---|---|---|
Birim başına sun cinsinden enerji ücreti, getEnergyFee | 100 | 100 |
Hesap başına ücretsiz bant genişliği, getFreeNetLimit | 600 | 600 |
Sun cinsinden hesap oluşturma ücreti, getCreateAccountFee | 100,000 | 100,000 |
Sun cinsinden memo ücreti, getMemoFee | 1,000,000 | 1,000,000 |
Dinamik enerji eşiği, getDynamicEnergyThreshold | 5,000,000,000 | 5,000,000,000 |
Dinamik enerji artış çarpanı, getDynamicEnergyIncreaseFactor | 2,000 | 2,000 |
Dinamik enerji azami çarpanı, getDynamicEnergyMaxFactor | 34,000 | 34,000 |
Gün cinsinden stake'ten çıkış gecikmesi, getUnfreezeDelayDays | 14 | 1 |
Blok cinsinden en uzun devir kilidi, getMaxDelegateLockPeriod | 864,000 | 144,000 |
Bakım aralığı, getMaintenanceTimeInterval | 21,600,000 | 1,800,000 |
Tek bir işlemin CPU süresi tavanı, getMaxCpuTimeOfOneTx | 80 | 160 |
Nile'ın değiştirdikleri
Enerjiyle uğraşan biri için ilk fark stake'ten çıkmadır: Nile'da bir gün, ana ağda on dört gün sürer; bu yüzden TRX'i dondurup sonra çeken bir test, aynı sıra üretimde yapılsaydı olacağından on üç gün erken biter. Bir devrin taşıyabileceği en uzun kilit Nile'da 144,000 bloktur, blok başına üç saniyeyle beş gün; ana ağda ise 864,000 blok, otuz gün. Beş günden uzun bir kilit Nile'da hiç prova edilemez; bir kilidin neyi reddettiği iki ağda da aynıdır.
Ana ağın döndürdüğü parametrelerden sekizi Nile'da farklı bir değer taşır. Bu ikisinin yanında bunlar bakım aralığı, tablodaki CPU tavanı ve blok üreticilerini, önerileri ve sözleşme özelliklerini yöneten dört parametredir. O altısından hiçbirini bir ödeme akışına kadar izlemedik.
Stake etmek de farklı miktarda enerji verir, çünkü her ağ aynı enerji limitini kendi toplam stake'i arasında böler ve Nile'ın stake'i çok daha küçüktür. 4 Eylül'deki iki Nile koşumuzun ikisinde de devrettiğimiz stake, alan hesapta 7,376 birim enerji olarak göründü. Aynı stake ana ağda, bir gün önce okunan toplamla, 958 birime gelir; yani Nile neredeyse sekiz kat fazlasını dağıtır. Nile'a göre boyutlandırılmış bir stake, bir ana ağ cüzdanını eksik bırakırdı.
| Stake'ten gelen enerji | Ana ağ, 3 Eylül 2026 | Nile, 4 Eylül 2026 |
|---|---|---|
Tüm ağın enerji limiti, TotalEnergyLimit | 180,000,000,000 | 180,000,000,000 |
Enerji için toplam stake, TotalEnergyWeight | 18,770,236,993 | 2,440,088,105 |
| Devredilen 100 TRX'ten alıcıdaki enerji | 958 birim, hesaplandı | 7,376 birim, ölçüldü |
Test USDT'si farklı bir sözleşmedir
Ödeme kodu, çağırdığı USDT sözleşmesinin adresini taşır. 27 Ekim 2026'da bir Nile düğümüne ana ağ USDT adresindeki sözleşmeyi, TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t, sorduk ve yanıt boş bir nesne oldu, {}: test ağında o adreste sözleşme yok. Nile'daki test jetonları başka bir adresteki başka bir sözleşmeden gelir; bu yüzden sözleşme adresi, düğüm URL'sinin yanında yapılandırmada durmalıdır ve onu koda gömen bir derleme, iki ağdan birinde yanlış adresi çağırır.
Bir Nile test jetonunun tek bir transferinin enerji olarak neye mal olduğunu ölçmedik. Nile birim başına aynı ücreti alır, ama jeton başka bir sözleşmedir; bu yüzden Nile'daki hiçbir şey, USDT tutana yaklaşık 65,000 birim ve USDT'si olmayan bir adrese yaklaşık 131,000 birimlik ana ağ rakamlarını doğrulamaz. Test TRX'i faucet'lerden gelir ve onu kısıtlarlar: Eylül'de kullandığımız, cüzdan başına ve IP başına her 24 saatte bir isteğe izin veriyordu.
İmzalanmış bir işlem de kurulduğu ağda kalır. Her TRON işlemi kendi zincirinin yakın bir bloğuna bir referans taşır ve API'miz o referansı, herhangi bir enerji satın almadan önce ana ağa karşı denetler. Nile'a karşı kurulmuş bir mode B işlemi, bir 400 ile ve details.reason alanı ref_block_unknown olarak geri çevrilir. Zincir denetimimize yanıt vermediğinde sipariş denetlenmeden kabul edilir ve teslimattan sonra düğümün reddi faturalanır; bu yüzden her işlemi göndermeden önce güncel ana ağ bloğuna göre kurun.
Sandbox'ın benzettikleri
Sandbox'ımız https://sandbox.nrg.market/v1 adresinde yanıt verir ve üretimle aynı kodu test parası, benzetilmiş bir zincir ve benzetilmiş enerji satıcıları üzerinde çalıştırır. Oradaki anahtarlar nrg_test_ ile başlar ve kaydın kendi kendine yapıldığı sandbox panelinden gelir. İki ortam hiçbir şeyi paylaşmaz: ayrı veritabanları, bakiyeler, webhook'lar ve sırlar. Entegrasyon orada çalışınca temel URL'yi ve anahtarı değiştirirsiniz; API akışı ikisinde de aynıdır.
Test parası faucet olmadan gelir. E-postayı onaylamak bir başlangıç bakiyesi yükler ve POST /v1/sandbox/deposit gerçek bir para yatırmanın izlediği aynı yoldan daha fazlasını yükler: defterde bir deposit satırı, txid'si sandbox- ile başlayan, ve gerçek bir deposit.credited webhook'u. Üretimde o yol yoktur ve 404 yanıtı verir.
| Sandbox'taki test parası | API sözleşmesine göre |
|---|---|
| E-postayı onaylarken ya da ilk Google girişinde | 10000 TRX |
POST /v1/sandbox/deposit ile tek bir çağrı | en fazla 100000 TRX |
| Müşteri başına UTC günü başına yatırma çağrısı | 10 |
Bir test ağı istek üzerine belirli bir sonuç üretmez. Sandbox, birkaç adresi sabit davranışlara bağlar; test kartı numaralarının çalıştığı gibi: arkasında özel anahtar bulunmayan geçerli TRON adresleri. Enerji türüne ve ready'den sonra ne olacağına alıcı karar verir; satın almanın ve devrin nasıl gideceğine gönderen karar verir.
| Adres | Rol | Sandbox'ın yaptığı |
|---|---|---|
TLLmUhBYgU125KkPpeTdP1vz1zqhoZwn9v | Alıcı | USDT tutmaz; bu yüzden kind: double. Ayrıca aktive edilmemiştir ve üzerine kaç transfer inerse insin boş kalır. |
TDUvBqzR3cYY6zYopYdJ9jWrxQRs9QmvQM | Alıcı | Hiçbir transfer hiç görünmez. Kalem ready'de bekler, expired olur — send_before'da — ve üretimdeki gibi ücretlendirilir. |
TKLeQhXSUba1GG1wdznyMc49oqModZ8Fbm | Alıcı | USDT kara listesinde: sipariş 422 blacklisted_recipient ile geri çevrilir. |
TQ6ey8qT87bnzBJXj7gVTGCkrU4wUJ1EWQ | Gönderen | Satın alma her satıcıda başarısız olur. Kalem failed olarak, purchase_failed ile biter ve rezerv serbest bırakılır. |
TYWZsWdM9u8QKJTi6XEmenpvCPwg1xmPCC | Gönderen | İlk satıcı kullanılamaz ve yedeğe geçiş başarılı olur. Yanıtta bunu söyleyen hiçbir şey yoktur. |
TNhq25t5XTEuk3mC9cTcAGB5rr3xuCkGyr | Gönderen | Devir yaklaşık 25 saniye sonra onaylanır; beklemek zorunda olan kod için. |
| Geçerli başka herhangi bir adres | İkisinden biri | USDT tutan bir alıcı ve 2 ile 8 saniyede onaylanan bir devir. |
İki taraf birleşir; bu yüzden başarısız olan göndericiyi sıradan olanlarla karıştıran bir toplu iş, özel hiçbir şey istenmeden partially_completed ile biter (bu durumun fatura için ne anlama geldiği). Senaryo gönderenleri ortamın her müşterisi tarafından paylaşılır; bu yüzden sınanan şey zamanlamaysa kendinize ait yeni bir gönderen adresi kullanın: sıradan 2 ile 8 saniyeyi alır ve devirleri yalnızca ona özeldir.
Ortamdaki fiyatlar canlı fiyatlardır. Sandbox tarifesi üretiminkini yaklaşık iki dakika, en kötü ihtimalle üç dakika geriden izler; bu yüzden orada prova edilen bir tahmin, üretimin iki ya da üç dakika önce sunduğu fiyatı döndürür. Mode B gerçek bir anahtara ihtiyaç duymaz: benzetilmiş zincir imzaları denetlemez; bu yüzden herhangi bir tek kullanımlık anahtarla imzalanmış bir işlem, üretimin ayrıştırdığı gibi ayrıştırılır ve broadcasting, broadcasted ve confirmed üzerinden yürür; yayın yaklaşık üç saniyede onaylanır.
Yalnızca ana ağın gösterdikleri
Sandbox, zincirin yaptığı kısmı kanıtlayamaz: enerji orada hiçbir yere gerçekten ulaşmaz ve orada onaylanan bir devir, simülatörümüz hakkında bir olgudur. Nile de bunu bizim hizmetimiz için karara bağlayamaz, çünkü hiçbir test ağında enerji satmıyoruz. Gerçek enerjinin gerçek bir cüzdana inip inmediğini ve transferin ardından TRX yakmadan geçip geçmediğini üretimde öğrenirsiniz.
Bazı dallar, hiçbir istekle iki ortamın hiçbirinde üretilemez: 503 capacity_unavailable ve kalem hataları broadcast_failed, transaction_reverted ve broadcast_window_missed. Her biri enerji arzına, zincire ya da hizmetin bizim tarafımızdan duraklatılmasına bağlıdır. Bu durumları ele alan kodu sözleşmeden ve webhook gövdelerinden yazın ve hiç çalışmamış bir kod olarak gözden geçirin.
Üretimin hatırı sayılır bir kısmını denemek hiçbir şeye mal olmaz. POST /v1/estimate 500 alıcıya kadar alır ve bir siparişin hesaplayacağı aynı kind, energy_units ve warnings alanlarını döndürür; POST /v1/webhooks/{webhook_id}/test ise alıcınıza gerçek, imzalı bir teslimat gönderir. POST /v1/orders her modda gerçek TRX'e mal olur; bu da bir transferlik ilk canlı siparişi son prova ve enerjinin indiğini gösteren tek prova yapar.
Bu yazıdaki her senaryo adresi ortamda, test parası ve kendi nrg_test_ anahtarınızla yanıt verir: sandbox panelini açın ve bir tane oluşturun →