1. Anasayfa
  2. 100 Günde Solidity

🧵 #100GündeSolidity 092 : Discrete Staking Rewards

🧵 #100GündeSolidity 092 : Discrete Staking Rewards
Discrete Staking Rewards
0

Discrete Staking Rewards

Discrete staking rewards, blockchain ağlarındaki staking işlemlerinde kullanılan bir yöntemdir. Bu yöntem, katılımcıların kısa aralıklarla ödüller kazanmasına olanak tanır ve katılımcıların staking tutarlarını arttırarak ağın güvenliğini arttırmasını sağlar.

Blockchain teknolojisi, merkeziyetsiz bir yapıya sahip olduğu için güvenliği oldukça önemlidir. Bu güvenliği sağlamak için birçok blockchain ağı, staking adı verilen bir işlemi kullanır. Staking, kullanıcıların belirli bir kripto para birimini tutarak ağa katkıda bulunmalarını sağlar ve bu katkı karşılığında ödüller kazanmalarına olanak tanır. Discrete staking rewards ise, staking işleminde kullanılan bir yöntemdir ve katılımcıların düzenli aralıklarla ödüller kazanmalarını sağlar. Bu yöntem, ağın güvenliği için önemli bir rol oynar ve blockchain ağlarının daha sağlam bir yapıya kavuşmasını sağlar. Bu yazıda, discrete staking rewards yöntemi daha detaylı bir şekilde incelenecek ve avantajları ile dezavantajları tartışılacaktır. Ayrıca, Polkadot örneği üzerinden bir discrete staking rewards sistemi nasıl çalışır örneklemesi yapılacaktır.

Discrete Staking Rewards Nedir & Nasıl Çalışır?

Discrete staking rewards, staking işleminde kullanılan bir yöntemdir ve kullanıcılara düzenli aralıklarla ödüller kazandırır. Bu ödüller, staking işlemini gerçekleştiren kullanıcıların ağa katkılarına göre değişkenlik gösterir. Discrete staking rewards yöntemi, katılımcılara belirli bir zaman diliminde ödüller kazandırır ve bu ödüller daha sonra otomatik olarak katılımcıların cüzdanlarına yatırılır.

Discrete staking rewards yöntemi, diğer staking yöntemlerine göre daha avantajlıdır çünkü kullanıcıların ödüllerini daha sık almasını sağlar. Bu, katılımcıların daha sık staking yapmalarını teşvik eder ve ağın güvenliğini artırır. Ayrıca, bu yöntemde ödüllerin düzenli aralıklarla verilmesi, kullanıcıların ağa daha uzun süre katkıda bulunmalarını sağlar ve dolayısıyla ağın daha güvenli hale gelmesine yardımcı olur.

Discrete staking rewards yönteminde, ödüller genellikle blok başına sabit bir miktarda verilir. Ancak bazı durumlarda, ödüller blok üreticilerinin sayısına ve staking katılımcılarının sayısına göre değişebilir. Ödüller, staking işlemi sırasında kullanıcılara gösterilir ve daha sonra belirli bir zaman diliminde otomatik olarak hesaplarına yatırılır.

Discrete staking rewards yöntemi, birçok blockchain ağında kullanılır ve kullanıcıların staking işlemine daha fazla ilgi göstermelerini sağlar. Bu da, ağın daha güvenli hale gelmesine ve daha sağlam bir yapıya kavuşmasına yardımcı olur.

Discrete Staking Rewards Avantajları & Dezavantajları Nelerdir?

Discrete staking rewards yöntemi, birçok avantaj ve dezavantaja sahiptir. Bazılarını aşağıda açıklıyoruz:

Avantajlar:

  1. Daha sık ödüller: Discrete staking rewards yöntemi, katılımcılara daha sık ödüller kazandırır ve bu da katılımcıların ağa daha uzun süre katkıda bulunmalarını sağlar.
  2. Teşvik edici: Düzenli aralıklarla verilen ödüller, katılımcıları daha fazla staking yapmaya teşvik eder ve dolayısıyla ağın güvenliğini artırır.
  3. Ağ güvenliği: Discrete staking rewards yöntemi, ağın daha güvenli hale gelmesini sağlar çünkü daha fazla katılımcı staking yapar ve ağdaki staking miktarı artar.
  4. Stabil fiyatlar: Discrete staking rewards yöntemi, kullanıcıların staking yaparak belirli bir kripto para birimini tutmasını sağlar. Bu da, kripto para biriminin fiyatının daha stabil olmasına yardımcı olur.

Dezavantajlar:

  1. Yüksek harcama: Discrete staking rewards yöntemi, blok zincirinde sık sık işlem yapılmasını gerektirdiği için, bu işlemler için yüksek ücretler ödenmesi gerekebilir.
  2. Merkeziyete eğilim: Discrete staking rewards yöntemi, blok zincirinde ödüllerin verilmesi için merkezi bir otoriteye ihtiyaç duyabilir. Bu, blok zincirinin merkeziyete doğru eğilim göstermesine neden olabilir.
  3. Ölçeklenebilirlik: Discrete staking rewards yöntemi, blok zincirinin ölçeklenebilirliğini etkileyebilir ve blok zincirindeki işlemlerin sayısının artmasıyla ölçeklenebilirlik sorunları ortaya çıkabilir.
  4. Ağdaki dengesizlik: Discrete staking rewards yöntemi, ağdaki büyük staking katılımcılarının daha fazla ödül almasına neden olabilir. Bu, ağdaki dengesizliği artırabilir ve küçük staking katılımcılarının dezavantajlı olmasına neden olabilir.

Bu avantajlar ve dezavantajlar, discrete staking rewards yöntemini kullanmadan önce dikkate alınmalıdır.

Örnek bir Discrete Staking Rewards Sistemi: Polkadot

Polkadot, discrete staking rewards sistemi kullanan bir blok zinciri platformudur. Polkadot, blok zinciri interoperabilitesi sağlamak için tasarlanmıştır ve bu amaçla, farklı blok zincirleri arasında bilgi ve varlık transferleri yapılabilmesini mümkün kılar.

Polkadot’ta, staking ödülleri “Nominated Proof-of-Stake” (NPoS) protokolü ile verilir. NPoS protokolü, staking katılımcılarının “nominator” ve “validator” olarak iki farklı rol oynayabileceği bir sistemdir.

Nominatorlar, staking katılımcılarının küçük miktarlarda DOT tokenlerini toplamasını ve daha büyük bir validator grubuna staking yapmalarını sağlarlar. Validatorlar ise blok zincirinde işlem doğrulama ve blok üretme görevlerini yerine getirirler.

Polkadot, her 24 saatte bir yeni blok üretir ve blok üreten validatorlara staking ödülleri verir. Ödüller, DOT tokenleri şeklinde verilir ve blok üretiminin yanı sıra validatorların ağda ne kadar süreyle aktif olduklarına da bağlıdır.

Nominatorlar, validatorların performansını izleyebilir ve ayrıca, DOT tokenlerini staking yapacakları validatorları seçebilirler. Validatorlar, ağdaki güvenlik ve doğruluk seviyelerini artırmak için yeterli miktarda DOT token staking yapmak zorundadırlar.

Polkadot, staking ödüllerinin dağıtımını otomatik olarak yapar ve bu sayede merkezi bir otoriteye ihtiyaç duymaz. Bu, ağın merkeziyete doğru eğilim göstermesini önler ve blok zincirinin güvenliğini artırır.

Akıllı Sözleşme Analizi

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

contract DiscreteStakingRewards {
    IERC20 public immutable stakingToken;
    IERC20 public immutable rewardToken;

    mapping(address => uint) public balanceOf;
    uint public totalSupply;

    uint private constant MULTIPLIER = 1e18;
    uint private rewardIndex;
    mapping(address => uint) private rewardIndexOf;
    mapping(address => uint) private earned;

    constructor(address _stakingToken, address _rewardToken) {
        stakingToken = IERC20(_stakingToken);
        rewardToken = IERC20(_rewardToken);
    }

    function updateRewardIndex(uint reward) external {
        rewardToken.transferFrom(msg.sender, address(this), reward);
        rewardIndex += (reward * MULTIPLIER) / totalSupply;
    }

    function _calculateRewards(address account) private view returns (uint) {
        uint shares = balanceOf[account];
        return (shares * (rewardIndex - rewardIndexOf[account])) / MULTIPLIER;
    }

    function calculateRewardsEarned(address account) external view returns (uint) {
        return earned[account] + _calculateRewards(account);
    }

    function _updateRewards(address account) private {
        earned[account] += _calculateRewards(account);
        rewardIndexOf[account] = rewardIndex;
    }

    function stake(uint amount) external {
        _updateRewards(msg.sender);

        balanceOf[msg.sender] += amount;
        totalSupply += amount;

        stakingToken.transferFrom(msg.sender, address(this), amount);
    }

    function unstake(uint amount) external {
        _updateRewards(msg.sender);

        balanceOf[msg.sender] -= amount;
        totalSupply -= amount;

        stakingToken.transfer(msg.sender, amount);
    }

    function claim() external returns (uint) {
        _updateRewards(msg.sender);

        uint reward = earned[msg.sender];
        if (reward > 0) {
            earned[msg.sender] = 0;
            rewardToken.transfer(msg.sender, reward);
        }

        return reward;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint);

    function balanceOf(address account) external view returns (uint);

    function transfer(address recipient, uint amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);
}

Bu akıllı sözleşme Discrete Staking Rewards sisteminin bir örneğidir. İşlevleri şu şekildedir:

  • StakingToken ve RewardToken adı verilen iki ERC20 tokeni ile başlar.
  • Her kullanıcının hesabında tuttuğu bakiyeler için mapping işlevi kullanır.
  • Toplam token arzını depolayan totalSupply değişkeni vardır.
  • MULTIPLIER adlı bir sabit değişken kullanılır.
  • rewardIndex adlı bir değişken, sürekli olarak güncellenen toplam ödül ve totalSupply’ın bir oranını tutar.
  • rewardIndexOf adlı bir mapping, her kullanıcının son ödül endeksini saklar.
  • earned adlı bir mapping, her kullanıcının kazanılan ödülünü saklar.
  • updateRewardIndex() işlevi, bir kullanıcının ödül oranını güncellemek için kullanılır. Kullanıcının rewardToken transferi gerçekleştirmesi gerekir.
  • _calculateRewards() işlevi, bir kullanıcının hesaplaması gereken ödül miktarını hesaplar.
  • calculateRewardsEarned() işlevi, bir kullanıcının toplam kazanılan ödül miktarını hesaplar.
  • _updateRewards() işlevi, bir kullanıcının kazanılan ödül miktarını günceller ve rewardIndexOf mapping’ini günceller.
  • stake() işlevi, kullanıcının stakingToken transferi yapmasını ve bakiyeleri güncellemesini sağlar.
  • unstake() işlevi, kullanıcının stakingToken’i geri çekmesini ve bakiyeleri güncellemesini sağlar.
  • claim() işlevi, kullanıcının kazanılan ödülü talep etmesini ve earned mapping’ini sıfırlamasını sağlar.

Bu akıllı sözleşme avantajlıdır, çünkü ödül oranları sürekli olarak güncellenir, bu da kullanıcılara daha adil bir paylaşım sağlar. Dezavantajı ise, her ödül oranı güncellemesi için ayrı bir işlem yapılması gerekir, bu da işlem ücretlerinin artmasına neden olabilir.

Sonuç Bağlamı : Discrete Staking Rewards

Discrete staking rewards, staking protokollerinin bir varyasyonudur ve belirli bir süre boyunca blok zincirinde tutulan jetonların ödüllendirilmesi ile ilgilidir. Farkı, ödül miktarının her saniye değişebilmesidir. Bu, staking ödüllerini daha adil ve esnek hale getirir.

Ancak, discrete staking rewards sistemleri aynı zamanda karmaşık olabilir ve ekonomik modelleme konusunda uzmanlık gerektirebilir. Sistemdeki dalgalanmalar ve belirsizlikler, özellikle uzun süreli yatırımlarda yatırımcıları etkileyebilir.

Örneğin, Polkadot, discrete staking rewards sistemi ile çalışan bir blok zinciri protokolüdür. Ancak, bu sistem, protokolün kapsamlı ekonomik modellemesi sayesinde, kullanıcılar arasında adil bir ödül dağılımı sağlamayı amaçlar.

Akıllı sözleşme analizi, discrete staking rewards sistemlerinin çalışmasını daha iyi anlamamızı sağlar. Yukarıdaki örnekteki akıllı sözleşme, staking tokenlerini saklar ve kullanıcılara ödüller verir. Ancak, sistemin doğru bir şekilde çalışması için, staking tokenlerinin yanı sıra ödül tokenlerinin de kullanılabileceği bir blok zinciri protokolüne ihtiyaç vardır.

Solidity Programlama Dili Öğrenme yolculuğunuz hakkında daha iyi rehberlik almak için Solidity nedir? Ethereum Akıllı Sözleşmelerinin Dili Rehberi içeriğimize göz atın. Dilerseniz Yeni Başlayanlar için Solidity – Akıllı Sözleşme Geliştirme Hızlandırılmış Kursuna katılın.

Çalışmaya nereden başlayacağım diyenler için Blockchain ​​Developer Olmak İçin Yol Haritası içeriğine de muhakkak bakın.

Gelin aklınızdaki soruları SUPERPEER sohbetinde cevaplayalım.

Bu makaleyi okuduğunuz için teşekkürler! Bana destek olmak isterseniz;

Beni TwitterLinkedin ve YouTube‘da takip edin.

Kısa bir yorum bırakmayı UNUTMAYIN!

solidity101 - Solidity, 2015 yılında Christian Reitwiessner liderliğinde piyasaya sürülen, büyük harf kullanımına göre ikinci en büyük kripto para piyasası olan Ethereum tarafından oluşturulan yepyeni bir programlama dilidir.

Yazarın Profili
İlginizi Çekebilir

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir