1. Anasayfa
  2. 100 Günde Solidity

🧵 100GündeSolidity 059 : Uni Directional Payment Channel

🧵 100GündeSolidity 059 : Uni Directional Payment Channel
Uni Directional Payment Channel
0

Uni Directional Payment Channel Nedir ve Nasıl Çalışır?

Merhaba,

#100DaysOfSolidity serimizin 59. e-bülteninde Uni-Directional Payment Channel kavramını ele alacağız. Bu kavram, özellikle Ethereum gibi blok zinciri teknolojileri üzerinde yapılan işlemlerde önemli bir yer tutar. Uni-Directional Payment Channel, iki taraf arasındaki ödeme işlemlerini hızlandırırken, işlem ücretlerini düşürmeye de yardımcı olabilir. Bu yazımızda Uni-Directional Payment Channel’ın ne olduğunu, nasıl çalıştığını, avantajlarını, dezavantajlarını ve uygulamalarını inceleyeceğiz.

Uni-Directional Payment Channel Nedir?

Uni-Directional Payment Channel, iki taraf arasında gerçekleştirilen ödeme işlemlerinde kullanılan bir teknolojidir. Bu teknoloji, iki taraf arasındaki ödeme işlemlerini blok zincirinde gerçekleştirmeden önce kanal oluşturarak hızlandırmayı ve işlem ücretlerini düşürmeyi amaçlar.

Uni-Directional Payment Channel, iki taraf arasında açılan bir kanal üzerinden gerçekleştirilen işlemleri blok zincirine kaydetmeden önce imzaları paylaşarak işlem yapılmasına olanak tanır. Bu sayede, işlem yapmak için her seferinde blok zincirinde işlem yapmak yerine, birbirleri arasındaki ödeme işlemlerini bir kanal üzerinden gerçekleştirebilirler. Bu da işlem ücretlerinin azalmasına ve işlem hızının artmasına neden olur.

Uni-Directional Payment Channel, özellikle Ethereum gibi blok zinciri teknolojileri üzerinde yapılan ödeme işlemlerinde sıkça kullanılır. Bu teknoloji sayesinde, ödeme işlemleri daha hızlı ve daha az ücretli hale gelir.

Uni-Directional Payment Channel Nasıl Çalışır?

Uni-Directional Payment Channel, iki taraf arasında açılan bir ödeme kanalı üzerinden çalışır. Bu kanal, bir ödeme ağ geçidi gibi davranır ve iki taraf arasında gerçekleştirilen ödeme işlemlerini blok zincirine kaydetmeden önce doğrular.

İki taraf arasında bir Uni-Directional Payment Channel açmak için öncelikle akıllı bir sözleşme oluşturulur. Sözleşmede, kanal açan tarafların birbirlerine ne kadarlık bir meblağ gönderebileceği ve kanalın ne kadar süreyle açık kalacağı belirtilir.

Kanal açıldıktan sonra, taraflar arasında gerçekleştirilen ödeme işlemleri imzalanarak kanal üzerinden yapılır. Bu işlem, blok zincirine kaydedilmeden önce sadece imzaları paylaşarak gerçekleştirilir. Bu sayede, her işlem blok zincirinde ayrı ayrı kaydedilmek yerine, bir kanal üzerinden gerçekleştirilir.

Kanal üzerindeki tarafların herhangi bir zamanda kanalı kapatabilmesi mümkündür. Kapattıkları anda, son imzaları blok zincirine kaydedilir ve kanal üzerinde gerçekleştirilen tüm işlemler blok zincirinde kaydedilir.

Uni-Directional Payment Channel sayesinde, blok zincirinde gerçekleştirilen her işlem için işlem ücreti ödenmek zorunda kalınmaz. Bunun yerine, kanal açılırken ve kapatılırken ödenecek olan işlem ücretleri daha az olur. Bu da işlem ücretlerini düşürür ve işlem hızını artırır.

Uni-Directional Payment Channel Avantajları & Dezavantajları Nelerdir?

Uni-Directional Payment Channel teknolojisi, blok zinciri üzerindeki ödeme işlemlerinde birçok avantaj sağlar. Bununla birlikte, bazı dezavantajları da vardır. Aşağıda, Uni-Directional Payment Channel’ın avantajları ve dezavantajları ayrıntılı olarak açıklanmıştır:

Avantajları:

  • İşlem hızını artırır: Uni-Directional Payment Channel sayesinde, iki taraf arasındaki ödeme işlemleri blok zincirinde kaydedilmeden önce kanal üzerinden gerçekleştirilir. Bu da işlem hızını artırır ve ödeme işlemlerinin daha hızlı bir şekilde tamamlanmasına olanak tanır.
  • İşlem ücretlerini düşürür: Blok zincirinde gerçekleştirilen her işlem için işlem ücreti ödenmesi gerektiği için, işlem ücretleri zaman zaman yüksek olabilir. Ancak, Uni-Directional Payment Channel sayesinde, ödeme işlemleri blok zincirine kaydedilmeden önce bir kanal üzerinden gerçekleştirildiği için işlem ücretleri daha düşük olur.
  • Güvenli bir yapı sağlar: Uni-Directional Payment Channel, iki taraf arasındaki ödeme işlemlerinin doğruluğunu kontrol eder. Kanal üzerinden gerçekleştirilen her işlem, önceden belirlenmiş bir akıllı sözleşme tarafından kontrol edilir. Bu sayede, ödeme işlemleri daha güvenli hale gelir.

Dezavantajları:

  • İşlem miktarı sınırlıdır: Uni-Directional Payment Channel, kanal açılırken belirlenen miktar kadar ödeme yapılmasına izin verir. Bu da, kanalın kapasitesinin sınırlı olmasına neden olur. İki taraf arasındaki ödeme miktarı, kanal açılırken belirlenen miktarı aşarsa, yeni bir kanal açılması gerekebilir.
  • Açılış ve kapanış işlemleri zaman alabilir: Uni-Directional Payment Channel’ın açılış ve kapanış işlemleri, blok zincirinde gerçekleştirilen işlemlere göre daha fazla zaman alabilir. Kanal açılırken ve kapatılırken ödenecek olan işlem ücretleri de işlem miktarına göre değişebilir.
  • Tek yönlüdür: Uni-Directional Payment Channel, sadece tek yönlü ödeme işlemlerine izin verir. Bu da, iki taraf arasındaki ödeme işlemlerinin sadece bir yönden gerçekleştirilmesine olanak tanır. İki taraf arasındaki ödeme işlemlerinin her iki yönde de gerçekleştirilmesi gerekiyorsa, çift yönlü ödeme kanalları kullanılabilir.

Uni-Directional Payment Channel Uygulamaları Nelerdir?

Uni-Directional Payment Channel teknolojisi, blok zinciri tabanlı ödeme sistemlerinin birçok farklı uygulamasında kullanılabilir. Aşağıda, Uni-Directional Payment Channel’ın kullanıldığı bazı uygulamalar açıklanmaktadır:

  1. Mikro ödemeler: Uni-Directional Payment Channel teknolojisi, blok zinciri üzerinde mikro ödemelerin daha hızlı ve daha ucuz bir şekilde gerçekleştirilmesine olanak tanır. Örneğin, oyunlar, sosyal medya platformları ve diğer uygulamalar, Uni-Directional Payment Channel teknolojisi sayesinde kullanıcılar arasında hızlı ve düşük maliyetli ödeme işlemleri yapabilir.
  2. Akıllı sözleşmeler: Uni-Directional Payment Channel teknolojisi, blok zinciri üzerindeki akıllı sözleşmelerin daha etkili bir şekilde çalışmasına olanak tanır. Özellikle, akıllı sözleşmelerin ödeme işlemlerine dayalı olduğu durumlarda, Uni-Directional Payment Channel teknolojisi, işlem hızını artırır ve işlem maliyetlerini düşürür.
  3. Ticari işlemler: Uni-Directional Payment Channel teknolojisi, ticari işlemler sırasında daha hızlı ve daha ucuz ödemelerin gerçekleştirilmesine olanak tanır. Özellikle, küçük işletmeler arasındaki ödemelerde Uni-Directional Payment Channel teknolojisi kullanılabilir.
  4. Finansal hizmetler: Uni-Directional Payment Channel teknolojisi, finansal hizmetler sektöründe daha hızlı ve daha güvenli ödemelerin yapılmasına olanak tanır. Özellikle, para transferi ve ödeme sistemleri gibi alanlarda Uni-Directional Payment Channel teknolojisi kullanılabilir.
  5. Ölçeklenebilirlik çözümleri: Uni-Directional Payment Channel teknolojisi, blok zincirinin ölçeklenebilirliği sorununu çözmek için kullanılabilir. Blok zinciri üzerinde gerçekleştirilen her işlem, tüm ağ katılımcıları tarafından doğrulanır ve işlem ücretleri ödenir. Ancak, Uni-Directional Payment Channel teknolojisi sayesinde, ödeme işlemleri blok zincirinde doğrulanmadan önce kanal üzerinden gerçekleştirilir ve işlem ücretleri daha düşük olur. Bu, blok zincirinin ölçeklenebilirliği sorununu çözmek için önemli bir adımdır.

Uni-Directional Payment Channel ile İlgili Önemli Kavramlar ve Terimler

Uni-Directional Payment Channel teknolojisi ile ilgili birkaç önemli kavram ve terim aşağıda belirtilmiştir:

  1. Payment channel: İki taraf arasında ödeme işlemlerinin yapılabileceği bir kanaldır. Bu kanal, blok zincirine kaydedilmeksizin ödemelerin gerçekleştirilmesine olanak tanır.
  2. Funded channel: Payment channel’ın oluşturulması için, kanalda kullanılmak üzere fonların blok zincirinde bloke edildiği bir işlem yapılması gereklidir. Bu işleme “funded channel” denir.
  3. Commitment transaction: Payment channel’ın kapatılması gerektiğinde, kanalın son durumu blok zincirine kaydedilir. Bu işleme “commitment transaction” denir.
  4. Revocable sequence maturity contract (RSMC): RSMC, kanalın açık kalmasını sağlayan bir akıllı sözleşmedir. RSMC, kanalın tarafları arasındaki ödeme işlemlerinin güvenli bir şekilde gerçekleştirilmesine olanak tanır.
  5. Hashed timelock contract (HTLC): HTLC, ödemelerin güvenli bir şekilde gerçekleştirilmesini sağlar. HTLC, ödeme işlemi tamamlanmadan önce belirli bir sürenin geçmesini bekleyen bir akıllı sözleşmedir. Bu süre boyunca, kanalın tarafları arasındaki ödeme işlemi geri alınabilir.
  6. Multi-hop payment channel: Multi-hop payment channel, farklı ödeme kanallarının birleştirilmesiyle oluşan bir ödeme kanalıdır. Bu kanal, farklı blok zinciri ağları arasında ödemelerin gerçekleştirilmesine olanak tanır.
  7. Off-chain transaction: Off-chain transaction, blok zinciri dışında gerçekleştirilen bir ödeme işlemidir. Off-chain transaction, blok zincirinde doğrulanmadan önce ödeme kanalı üzerinden gerçekleştirilir.
  8. On-chain transaction: On-chain transaction, blok zincirinde doğrulanan bir ödeme işlemidir. On-chain transaction, ödeme kanalının kapatılması veya ödeme kanalı dışında gerçekleştirilen bir ödeme işlemi sonrasında blok zincirine kaydedilir.

Akıllı Sözleşme Örneği İNCELEME

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

import "github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v4.5/contracts/utils/cryptography/ECDSA.sol";
import "github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v4.5/contracts/security/ReentrancyGuard.sol";

contract UniDirectionalPaymentChannel is ReentrancyGuard {
    using ECDSA for bytes32;

    address payable public sender;
    address payable public receiver;

    uint private constant DURATION = 7 * 24 * 60 * 60;
    uint public expiresAt;

    constructor(address payable _receiver) payable {
        require(_receiver != address(0), "receiver = zero address");
        sender = payable(msg.sender);
        receiver = _receiver;
        expiresAt = block.timestamp + DURATION;
    }

    function _getHash(uint _amount) private view returns (bytes32) {
        // NOTE: sign with address of this contract to protect agains
        // replay attack on other contracts
        return keccak256(abi.encodePacked(address(this), _amount));
    }

    function getHash(uint _amount) external view returns (bytes32) {
        return _getHash(_amount);
    }

    function _getEthSignedHash(uint _amount) private view returns (bytes32) {
        return _getHash(_amount).toEthSignedMessageHash();
    }

    function getEthSignedHash(uint _amount) external view returns (bytes32) {
        return _getEthSignedHash(_amount);
    }

    function _verify(uint _amount, bytes memory _sig) private view returns (bool) {
        return _getEthSignedHash(_amount).recover(_sig) == sender;
    }

    function verify(uint _amount, bytes memory _sig) external view returns (bool) {
        return _verify(_amount, _sig);
    }

    function close(uint _amount, bytes memory _sig) external nonReentrant {
        require(msg.sender == receiver, "!receiver");
        require(_verify(_amount, _sig), "invalid sig");

        (bool sent, ) = receiver.call{value: _amount}("");
        require(sent, "Failed to send Ether");
        selfdestruct(sender);
    }

    function cancel() external {
        require(msg.sender == sender, "!sender");
        require(block.timestamp >= expiresAt, "!expired");
        selfdestruct(sender);
    }
}

Yukarıdaki akıllı sözleşme örneği, Uni-Directional Payment Channel uygulamasını gerçekleştirmek için Solidity programlama dilinde yazılmıştır. Bu sözleşme, bir ödeme kanalının açılmasına ve yönetilmesine olanak tanır.

Sözleşme, ECDSA kütüphanesini kullanarak mesajın kimliğini doğrular ve ReentrancyGuard modülü ile güvenlik önlemleri alır. Sözleşmenin iki anahtar değişkeni vardır: sender ve receiver. Sender, ödeme kanalının açan kişidir ve receiver, ödeme kanalından ödeme alacak kişidir.

Sözleşme, Uni-Directional Payment Channel özelliği ile çalışır. Yani, ödemeler sadece bir yönde yapılabilir. Kanal açıldığında, ödeme yapılacak miktar önceden belirlenir ve ödeme yapılacak kişiye gönderilir. Alıcı, ödeme kanalını kapatmak istediğinde, bir imza gönderir. Bu imza, alıcının alacağı miktarı belirtir ve sender tarafından doğrulanır. Doğrulama başarılı olduğunda, alıcıya ödeme yapılır ve ödeme kanalı kapatılır. Sender, ödeme kanalını belirli bir süre sonra kendisi kapatabilir. Bu süre, DURATION sabitinde belirtilir. Süre dolmadan önce kanal kapatılırsa, sender’a geri gönderilecek miktar hesaplanır ve sender’a gönderilir.

Sözleşmenin önemli işlevleri şunlardır:

  • _getHash: Belirli bir miktarda ether için bir hash değeri döndürür.
  • getHash: Belirli bir miktarda ether için bir hash değeri döndürür.
  • _getEthSignedHash: Belirli bir miktarda ether için imzalanmış bir hash değeri döndürür.
  • getEthSignedHash: Belirli bir miktarda ether için imzalanmış bir hash değeri döndürür.
  • _verify: İmza doğrulaması yapar.
  • verify: İmza doğrulaması yapar.
  • close: Ödeme kanalını kapatır ve ether’ın alıcıya gönderilmesini sağlar.
  • cancel: Ödeme kanalını sender tarafından belirlenen süre içinde kapatır ve ether’ı sender’a geri gönderir.

Bu örnek, Uni-Directional Payment Channel uygulamasının nasıl gerçekleştirileceğini gösterir. Ancak, gerçek dünya uygulamalarında, sözleşme, ödeme kanalının açılışında kullanılan işlevlerin yanı sıra, kullanıcıların bakiyelerini izlemek, ödeme kanalının açık kalma süresini uzatmak veya kısaltmak, kanalın yeniden açılmasını sağlamak vb. işlevleri de içermelidir.

Uni-Directional Payment Channel’ın Geleceği ve Potansiyeli

Uni-Directional Payment Channel teknolojisi, özellikle mikro ödemeler ve hızlı para transferleri konusunda potansiyeli olan bir teknolojidir. Özellikle Ethereum gibi blockchain tabanlı platformlarda, akıllı sözleşmeler ile entegre edilerek kullanımı daha da kolay hale getirilebilir.

Bu teknoloji, özellikle merkezi olmayan uygulamalarda kullanılarak, daha hızlı ve daha ucuz ödemelerin gerçekleştirilmesine olanak tanıyabilir. Özellikle internetten yapılan küçük miktarlı ödemeler için bu teknolojinin kullanımı oldukça avantajlı olabilir.

Bununla birlikte, Uni-Directional Payment Channel’ın da bazı dezavantajları bulunmaktadır. Örneğin, kanalın açılması ve kapatılması işlemleri için işlem ücretleri ödenmesi gerekebilir. Ayrıca, kanal açık kaldığı sürece blok zincirinde yer kaplamaya devam eder ve bu nedenle ölçeklenebilirlik sorunlarına yol açabilir.

Ancak, Uni-Directional Payment Channel teknolojisi geliştirilmeye devam ederek, özellikle daha gelişmiş taban katmanları üzerinde çalışılarak, bu dezavantajların üstesinden gelinmesi mümkün olabilir. Bu nedenle, gelecekte Uni-Directional Payment Channel teknolojisinin daha yaygın olarak kullanılacağı ve hızlı, güvenli ve ucuz ödemelerin gerçekleştirilmesine olanak tanıyacağı öngörülmektedir.

Sonuç Bağlamı

Uni-Directional Payment Channel, Ethereum blokzincirinde ödeme işlemlerinin hızlı ve düşük maliyetli bir şekilde gerçekleştirilmesine olanak tanıyan bir akıllı sözleşme türüdür. Bu sözleşme türü, özellikle mikro ödemeler, tekrarlayan ödemeler ve ödeme kanalları için uygulama potansiyeline sahiptir.

Uni-Directional Payment Channel’ın çalışma mekanizması, güvenliği ve avantajları ile ilgili olarak örnek bir akıllı sözleşme incelenmiştir. Ayrıca, Uni-Directional Payment Channel’ın geleceği ve potansiyeli hakkında da değinilmiştir.

Sonuç olarak, Uni-Directional Payment Channel, Ethereum blokzincirinde ödeme işlemlerinde büyük bir potansiyele sahip olan ve geliştirilmesi gereken bir teknolojidir. Bu teknolojinin yaygınlaşması, Ethereum ve kripto para dünyasının daha fazla kabul edilmesine ve kullanılmasına katkı sağlayabilir.

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

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