-
Notifications
You must be signed in to change notification settings - Fork 19
Open
Description
Yazım Hataları
- https://github.com/solidity-docs/tr-turkish/blob/v0.8.16/docs/examples/safe-remote.rst adresinde bulunan bazı yazım hatalarını iyileştirmeye yönelik öneriler sunulmuştur.
Uzaktan bir mal satın almak birden fazla tarafın birbirine güvenmesini gerektirir. En basit durumda bir satıcı bir de alıcı olur. Alıcı ürünü satıcıdan almak ister, satıcı da karılığında parayı (ya da eş değeri bir şeyi) almak. Burada problemli kısım kargolama: Kesin olarak malın alıcıya ulaştığından emin olmanın yolu yok.
karılığında->karşılığında
Bu problemmi çözmenin birden fazla yolu var ama hepsinin bir şekilde bir eksiği oluyor. Aşağıdaki örnekte, iki taraf da kontrata malın değerinin iki katını yatırırlar. Yatırma gerçekleştiği anda alıcı onaylayana kadar iki tafaında parası içeride kitli kalır. Alıcı satın almayı onayladığında malın değeri (yatırdığının yarısı) karşı tarafa geçer ve satıcı malın üç katını (yatırdığı iki kat ve alıcının yatırdığı malın değeri) geri çeker. Bu sistemin arkaplanındaki fikir iki tarafında problemi çözmeleri için gönüllü olmaları yoksa ikisinin parası da içeride sonsuza kadar kitli kalacak
problemmi->problemitafaında->tarafındaarkaplanındaki->arka plandakikitli->kilitli
Kod Optimizasyonu
// `msg.value` in çift olduğundan emin ol.
// Eğer tek sayı ise bölme kırpılmış bir sonuç olacak.
// Çarpma ile tek sayı olmadığını kontrol et.
constructor() payable {
seller = payable(msg.sender);
value = msg.value / 2;
if ((2 * value) != msg.value)
revert ValueNotEven();
}Yukarıdaki kod sanırım 0.4.x sürümünden kalma bir kod. 0.8.x sürümünde INFORMATIONAL optimizasyon olarak aşağıdaki kod kullanılabilir. Böylece kod okunabilirliği daha optimize hale gelecektir. Diğer kodlama esnasında value değeri kullanılacağı için; yine value tanımlamasını gerçekleştiriyoruz.
// `msg.value` in çift olduğundan emin ol.
// Eğer tek sayı ise bölme kırpılmış bir sonuç olacak.
// Çarpma ile tek sayı olmadığını kontrol et.
constructor() payable {
seller = payable(msg.sender);
value = msg.value / 2;
if (msg.value % 2 != 0)
revert ValueNotEven();
}Özet
Solidity Türkçe Resmî Dökümantasyonu'nun daha iyi hizmet vermesi adına önerilerim yukarıdaki gibidir. Kod Optimizasyonu başlığı altında önerdiğim düzeltmeler kodun çalışma prensibini etkilemez. Kodların okunabilirlik derecesini arttırır. Bu tarz kodlar Audit raporlarında INFORMATIONAL seviyesinde bulgu olarak geçmektedir.
Bu kodların, resmî dökümantasyona eklenmesi tavsiye edilir.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels