Skip to content

Safe-Remote.rst Düzeltmesi #105

@ilhamitugral

Description

@ilhamitugral

Yazım Hataları

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 -> problemi
  • tafaında -> tarafında
  • arkaplanındaki -> arka plandaki
  • kitli -> 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions