OpenZeppelin, TRON üzerinde Tether kabul eden bir kasa geliştirmeye yönelik rehber yayımladı. Rehber, Tether transferi başarılı olsa bile false döndüren davranışın para çekme sırasında nasıl ele alınacağını açıklıyor.
Adım adım anlatım; sözleşmenin yazılmasını, yerel testleri ve Nile test ağına dağıtımı kapsıyor. Bu, çalışan bir kasanın duyurusu değil; geliştiricilerin deneyebileceği bir örnek.
Örnek, TRON'un tokenlaştırılmış kasa standardı TRC-4626'yı kullanıyor. Kullanıcı Tether yatırdığında kasa, payı temsil eden vUSDT'yi ihraç ediyor; paylar bozdurulduğunda Tether'i geri veriyor.
Örneğin temel varlığı yalnızca Tether. Rehber, birden fazla varlığı yönetmeyi veya ayrı bir getiri stratejisi uygulamayı ele almıyor.
Para çekme sırasında sorun çıkaran nokta, TRON tabanlı Tether'in transfer işlevi. Transfer başarılı olsa da işlev false döndürebiliyor. Başarı yalnızca dönüş değerine göre değerlendirilirse, normal bir para çekme işlemi başarısız sayılabilir.
Para yatırmada kullanılan transferFrom ve onay için kullanılan approve ise true döndürüyor. Rehber, bu farklı davranışları dikkate alarak yatırma ve çekme işlemlerinde ayrı transfer yöntemleri uyguluyor.
Genel amaçlı güvenli transfer işlevleri false değerini başarısızlık olarak yorumlayıp işlemi geri alabilir. Bu nedenle para çekmede dönüş değeri tek başına başarı ölçütü olarak kullanılamıyor.
Rehber, para çekme işlemi için SafeTRC20.safeTransferChecked işlevini kullanıyor. Bu işlev dönüş değerine bakmak yerine, kasanın Tether bakiyesinin talep edilen miktar kadar azalıp azalmadığını kontrol ediyor.
Aynı bakiye kontrolü ücret ödemelerinde de kullanılıyor. Ancak rehber, bakiye değişimini doğrulama yönteminin tüm tokenlara uygulanabilecek genel bir çözüm olduğunu belirtmiyor.
Uygulamalı testte, yerel bir TRON düğümünde Tether'in dönüş değeri davranışını taklit eden bir token ile yatırma ve çekme işlemleri deneniyor. Geliştirme araçları olarak Hardhat 2 ve OpenZeppelin'in TRON eklentisi kullanılıyor.
Ardından aynı akış Nile test ağına dağıtılarak doğrulanıyor. Tutar hesaplamalarında Tether'in altı ondalık basamağı kullanılıyor.
Transferin dönüş değeriyle ilgili sorun daha önceki bir güvenlik incelemesinde de ele alınmıştı. OpenZeppelin'in 17 Eylül tarihli denetim raporu, o sırada TRC-4626 kasasındaki para çekme ve pay bozdurma işlemlerinin yanı sıra VestingWallet ödemelerinin de başarılı Tether transferlerini hatalı biçimde başarısız sayarak geri alınabileceğini belirtmişti.
Raporun sonraki güncellemesinde OpenZeppelin, PR #131 kapsamında bakiye değişimini kontrol eden yöntemle sorunun çözüldüğünü bildirdi. Rehberdeki para çekme işlemi de aynı yöntemi kullanıyor.
Örnekte, yatırma ve pay bozdurma ücretlerini bir hazine adresine aktarma işlevi de bulunuyor. Test ve dağıtım betiklerinde giriş ve bozdurma ücretleri ayrı ayrı yüzde 0,5 olarak ayarlanmış. Bunlar örnek yapılandırma değerleri; gerçek bir kasanın ücret oranları değil.
OpenZeppelin, ücret sözleşmesi örneğinin denetlenmediğini ve üretim ortamında kullanılmadan önce bağımsız olarak incelenmesi gerektiğini belirtiyor. Örneğin test ağında çalışması, gerçek bir hizmetin güvenli veya kârlı olduğunu kanıtlamıyor.
Yorum 0