1. Anasayfa
  2. 100 Günde Solidity

🧵 #100GündeSolidity 086– DeFi : Uniswap V3 Swap

🧵 #100GündeSolidity 086– DeFi : Uniswap V3 Swap
Uniswap V3 Swap
0

Uniswap V3 Swap

Merhaba!

#100DaysOfSolidity takipçileri, bu e-bültenimizde Uniswap V3 Swap konusunu ele alacağız. Uniswap, merkeziyetsiz bir borsa olarak kripto para dünyasında oldukça popüler hale gelmiştir ve V3 sürümü ile birlikte yeni özellikler sunmaktadır. Bu e-bültenimizde Uniswap V3 Swap işlemleri hakkında detaylı bir şekilde bilgi sahibi olacak ve kullanım senaryoları hakkında fikir edineceksiniz.

Altbaşlıklarımızda bu işlemin nasıl gerçekleştirildiği, avantajları, dezavantajları, ücretleri ve merkeziyetsiz finans ile nasıl ilişkili olduğu hakkında bilgi vereceğiz. Ayrıca, örnekler ve kullanım senaryoları ile birlikte Uniswap V3 Swap hakkında daha fazla fikir edineceksiniz.

Uniswap ve Uniswap V3 Swap Nedir?

Uniswap, merkeziyetsiz bir borsa platformudur. Ethereum blok zincirinde çalışan Uniswap, kullanıcıların kripto para birimlerini takas etmelerine olanak tanır. Uniswap, likidite sağlayan kullanıcılara bir oran ve hareketlilik (volatilite) koridoru sunarak kendi fiyatını otomatik olarak belirleyebilir. Buna “sabit oranlı likidite” denir.

Uniswap V3 Swap ise, Uniswap’ın üçüncü sürümüdür ve birçok yeni özellik sunar. V3 Swap, kullanıcıların işlem yaparken daha fazla esneklik ve kontrol sağlar. Özellikle, kullanıcılar artık istedikleri fiyat aralığında takas yapabilirler. Ayrıca, V3 Swap, sadece belirli varlıklar için likidite sağlayan kullanıcılara imkan vererek daha iyi bir fiyatlandırma sunabilir. Uniswap V3 Swap ayrıca, gas maliyetlerini düşürmek için ölçeklenebilirlik özellikleri sunar ve kullanıcıların işlem yaparken daha düşük ücretler ödemesine olanak tanır.

Uniswap V3 Swap Nasıl Gerçekleştirilir?

Uniswap V3 Swap işlemi, Uniswap’ın web sitesi veya mobil uygulaması aracılığıyla gerçekleştirilebilir. İşlem yapmak için öncelikle bir Ethereum cüzdanı ve bir miktar Ethereum veya ERC-20 tokenine sahip olmak gerekmektedir. Ardından, aşağıdaki adımlar takip edilebilir:

  1. Uniswap’ın web sitesine gidin veya mobil uygulamasını açın.
  2. Cüzdanınızı bağlayın ve erişim izni verin.
  3. “Swap” sekmesine tıklayın ve takas yapmak istediğiniz tokenleri seçin.
  4. Takas yapmak istediğiniz miktarı girin ve istediğiniz fiyat aralığını seçin. Bu fiyat aralığı, takasınızın gerçekleşebileceği fiyat aralığını belirler.
  5. İşlem ücretini ödeyin ve işlemi onaylayın.

Uniswap V3 Swap işlemi, takas işlemi için sabit oranlı bir likidite havuzu kullanır. Bu havuz, kullanıcıların istedikleri miktarı takas etmelerine izin verir ve fiyatları otomatik olarak belirler. Kullanıcılar, likidite sağlayarak havuzda yer alabilir ve bu şekilde takas işlemlerinden pay alabilirler.

Uniswap V3 Swap Ücretleri Nelerdir?

Uniswap V3 Swap işlemleri için ücretler iki kısımdan oluşur: gas ücretleri ve protokol ücretleri.

Gas ücretleri, Ethereum ağı üzerinde işlemlerin gerçekleşmesi için ödenen ücretlerdir. Gas ücreti, işlemin karmaşıklığına, ağdaki trafik durumuna ve işlem önceliğine bağlı olarak değişebilir.

Protokol ücretleri ise, Uniswap V3 Swap işlemlerinde kullanılan likidite havuzlarına katkı sağlayan kullanıcılara ödenen ücretlerdir. Bu ücretler, işlem hacmine ve kullanıcının sağladığı likidite miktarına bağlı olarak değişebilir.

Uniswap V3 Swap işlemleri için genel olarak gas ücretleri daha yüksek olurken, protokol ücretleri daha düşüktür. Gas ücretleri, Ethereum ağının yoğunluğuna bağlı olarak değişebilirken, protokol ücretleri Uniswap’ın belirlediği sabit bir orana göre belirlenir. Kullanıcılar, işlem yapmadan önce gas ücretleri ve protokol ücretleri hakkında bilgi edinerek, işlemlerinin maliyetini hesaplayabilirler.

Uniswap V3 Swap Avantajları & DezavantajlarıNelerdir?

Uniswap V3 Swap, birçok avantajı ve dezavantajı olan bir kripto para borsa platformudur.

Avantajları şunlardır:

  1. Esneklik: Uniswap V3 Swap, kullanıcılara istedikleri fiyat aralığında takas yapabilme imkanı sunar. Bu, kullanıcıların daha iyi bir fiyatlandırma elde etmelerini sağlar.
  2. Daha düşük gas ücretleri: Uniswap V3 Swap, işlemleri daha düşük gas ücretleri ile gerçekleştirmek için ölçeklenebilirlik özellikleri sunar.
  3. Likidite sağlayan kullanıcılar için daha yüksek getiri: Uniswap V3 Swap, sadece belirli varlıklar için likidite sağlayan kullanıcılara daha yüksek getiriler sunabilir.
  4. Merkeziyetsizlik: Uniswap V3 Swap, merkeziyetsiz bir borsa platformudur. Bu, kullanıcıların tam kontrol sahibi olduğu ve güvenli bir şekilde işlem yapabileceği anlamına gelir.

Dezavantajları şunlardır:

  1. Likidite sorunu: Uniswap V3 Swap, bazı varlıklar için yeterli likiditeye sahip olmayabilir. Bu, işlem hacminin düşük olduğu durumlarda kullanıcıların beklemesi gerekebileceği anlamına gelir.
  2. Yüksek volatilite: Uniswap V3 Swap, likidite sağlayan kullanıcılara bir oran ve hareketlilik (volatilite) koridoru sunar. Bu, kullanıcıların takas yaparken daha yüksek fiyat değişiklikleriyle karşılaşabileceği anlamına gelir.
  3. Kullanım zorluğu: Uniswap V3 Swap, diğer kripto para borsa platformlarına göre daha karmaşık bir işlem yapısı sunabilir. Bu nedenle, yeni başlayan kullanıcılar için kullanımı zor olabilir.
  4. Güvenlik sorunları: Herhangi bir merkezi olmayan borsa platformu gibi, Uniswap V3 Swap, kullanıcıların güvenliği ile ilgili sorunlar yaşayabilir. Kullanıcılar, işlem yapmadan önce güvenlik önlemlerini almalı ve riskleri değerlendirmelidir.

Uniswap V3 Swap ile İlgili Dikkat Edilmesi Gerekenler

Uniswap V3 Swap işlemleri yaparken dikkat edilmesi gereken bazı önemli noktalar vardır. Bunlar şunlardır:

  1. İşlem Öncesi Analiz: Uniswap V3 Swap, likidite havuzlarından fiyatlarını otomatik olarak belirler. Ancak, işlem yapmadan önce fiyatları ve işlem hacmini analiz etmek, kullanıcılara daha iyi bir takas fırsatı sunabilir.
  2. Gas Ücretleri: Ethereum ağında gerçekleşen işlemler için gas ücretleri ödenir. Bu ücretler, işlem hacmine ve ağdaki trafik durumuna göre değişebilir. Kullanıcılar, işlem yapmadan önce gas ücretlerini göz önünde bulundurmalı ve maliyetlerini hesaplamalıdır.
  3. Protokol Ücretleri: Uniswap V3 Swap işlemleri için kullanılan likidite havuzlarına katkı sağlayan kullanıcılara ödenen protokol ücretleri vardır. Bu ücretler, işlem hacmine ve kullanıcının sağladığı likidite miktarına bağlı olarak değişebilir.
  4. Limit Emirleri: Uniswap V3 Swap işlemlerinde limit emirleri kullanılabiliyor. Bu emirler, işlemi belirli bir fiyat aralığında gerçekleştirmek isteyen kullanıcılara yardımcı olabilir.
  5. Merkeziyetsizlik: Uniswap V3 Swap, merkeziyetsiz bir borsa platformudur. Bu, kullanıcıların tam kontrol sahibi olduğu ve güvenli bir şekilde işlem yapabileceği anlamına gelir. Ancak, kullanıcıların kendi özel anahtarlarını koruması gerektiği için güvenlik konusunda dikkatli olmalıdırlar.
  6. Kullanım Zorluğu: Uniswap V3 Swap, diğer kripto para borsalarına göre daha karmaşık bir yapıya sahip olabilir. Bu nedenle, yeni başlayan kullanıcılar için kullanımı zor olabilir. Kullanıcılar, Uniswap V3 Swap platformunu daha iyi anlamak için araştırma yapmalı ve kullanım kılavuzlarını takip etmelidirler.

Uniswap V3 Swap Örnekleri ve Kullanım Senaryoları

Uniswap V3 Swap, çeşitli kullanım senaryolarına sahiptir. Aşağıda, Uniswap V3 Swap örneklerinden bazıları bulunmaktadır:

  1. Token Takası: Uniswap V3 Swap, Ethereum tabanlı tokenların takas edilmesi için kullanılabilir. Örneğin, kullanıcılar ETH ile USDT arasında takas yapabilirler.
  2. Token Satın Alma: Kullanıcılar, Uniswap V3 Swap kullanarak farklı tokenları satın alabilirler. Örneğin, kullanıcılar, Uniswap V3 Swap kullanarak bir ERC-20 tokenını doğrudan ETH ile satın alabilirler.
  3. Likidite Havuzlarına Katkı Sağlama: Uniswap V3 Swap, kullanıcıların likidite havuzlarına katkı sağlamalarına izin verir. Likidite sağlayıcıları, protokol ücretleri ve ticaret ücretlerinden gelir elde edebilirler.
  4. Arbitraj: Uniswap V3 Swap, arbitraj işlemleri için kullanılabilir. Kullanıcılar, tokenların farklı borsalardaki fiyatları arasındaki farklardan yararlanabilirler.
  5. İşlem Hacmi ve Likidite Analizi: Uniswap V3 Swap, işlem hacmi ve likidite analizi yapmak için kullanılabilir. Kullanıcılar, Uniswap V3 Swap verilerini kullanarak belirli bir tokenın işlem hacmini ve likiditesini analiz edebilirler.
  6. Swap Limit Emirleri: Kullanıcılar, Uniswap V3 Swap kullanarak belirli bir fiyat aralığında takas yapmak için swap limit emirleri kullanabilirler. Bu, kullanıcıların belirli bir fiyat seviyesinde takas yapmalarına olanak tanır.

Uniswap V3 Swap, merkeziyetsiz bir borsa platformu olduğu için, kullanıcıların kendi özel anahtarlarını korumaları gerektiği unutulmamalıdır. Ayrıca, gas ücretleri ve protokol ücretleri gibi maliyetleri de göz önünde bulundurmak önemlidir.

Uniswap V3 Swap ve Merkeziyetsiz Finans (DeFi)

Uniswap V3 Swap, merkeziyetsiz finans (DeFi) ekosistemi içinde önemli bir yere sahiptir. DeFi, geleneksel finansal aracılara ihtiyaç duymadan finansal işlemler yapılabilmesini sağlayan bir ekosistemdir. Uniswap V3 Swap, bu ekosistem içinde merkeziyetsiz bir borsa olarak işlev görür.

Uniswap V3 Swap, akıllı sözleşmeler üzerine inşa edilmiştir ve işlemler merkezi bir otorite olmadan gerçekleştirilir. Kullanıcılar, kendi özel anahtarlarına sahip oldukları için, fonlarının güvenliğinden kendileri sorumludur.

DeFi ekosistemi içinde Uniswap V3 Swap, kullanıcıların Ethereum tabanlı tokenlarını takas etmelerine, token satın almalarına ve likidite havuzlarına katkı sağlamalarına olanak tanır. Bunun yanı sıra, Uniswap V3 Swap, ticaret çiftlerinin likidite problemlerini çözmeye yönelik yenilikçi bir yaklaşım sunar.

DeFi ekosistemi, gün geçtikçe büyümekte ve Uniswap V3 Swap da bu büyümenin bir parçası olarak kullanıcı sayısını ve hacmini artırmaktadır. Uniswap V3 Swap, DeFi dünyasında merkeziyetsiz finansal işlemlerin geleceği için önemli bir rol oynamaya devam edecektir.

Uniswap V3 Swap ile İlgili İpuçları ve Püf Noktaları

Uniswap V3 Swap kullanırken, aşağıdaki ipuçları ve püf noktalarına dikkat etmek faydalı olabilir:

  1. Dikkatli bir şekilde araştırma yapın: Uniswap V3 Swap kullanmadan önce, işlemlerin nasıl gerçekleştirildiği ve ücretlerin neler olduğu hakkında iyi bir anlayışa sahip olmak önemlidir.
  2. Uygun likidite havuzlarını seçin: İşlem yapmadan önce, uygun bir likidite havuzu seçmek, işlem ücretlerinin düşük olmasına ve daha hızlı işlem onaylarına yol açabilir.
  3. Gas ücretlerine dikkat edin: Ethereum ağı üzerinde yapılan işlemler için gas ücretleri ödenir. Gas ücretleri, işlem hacmine ve ağın yoğunluğuna bağlı olarak değişebilir. Bu nedenle, işlem yaparken gas ücretlerini takip etmek önemlidir.
  4. Uygun bir cüzdan kullanın: Uniswap V3 Swap kullanırken, uygun bir cüzdan kullanmak önemlidir. Metamask, Ledger, Trezor gibi popüler cüzdanlar, Uniswap V3 Swap işlemleri için uygun seçeneklerdir.
  5. Yatırım risklerini anlayın: DeFi ekosistemi, yüksek riskli yatırımlar içerebilir. Uniswap V3 Swap gibi platformları kullanmadan önce, yatırım risklerini anlamak önemlidir.
  6. Kullanıcı deneyimine önem verin: Uniswap V3 Swap kullanırken, kullanıcı deneyimine önem vermek, işlemleri daha hızlı ve daha verimli hale getirebilir. Bunun için, doğru likidite havuzlarını seçmek, uygun gas ücretlerini ödemek ve doğru cüzdanı kullanmak önemlidir.

Bu ipuçları ve püf noktaları, Uniswap V3 Swap kullanırken daha iyi bir deneyim yaşamanıza yardımcı olabilir.

Akıllı Sözleşme Analizi

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

contract UniswapV3SwapExamples {
    ISwapRouter constant router =
        ISwapRouter(0xE592427A0AEce92De3Edee1F18E0157C05861564);

    function swapExactInputSingleHop(
        address tokenIn,
        address tokenOut,
        uint24 poolFee,
        uint amountIn
    ) external returns (uint amountOut) {
        IERC20(tokenIn).transferFrom(msg.sender, address(this), amountIn);
        IERC20(tokenIn).approve(address(router), amountIn);

        ISwapRouter.ExactInputSingleParams memory params = ISwapRouter
            .ExactInputSingleParams({
                tokenIn: tokenIn,
                tokenOut: tokenOut,
                fee: poolFee,
                recipient: msg.sender,
                deadline: block.timestamp,
                amountIn: amountIn,
                amountOutMinimum: 0,
                sqrtPriceLimitX96: 0
            });

        amountOut = router.exactInputSingle(params);
    }

    function swapExactInputMultiHop(
        bytes calldata path,
        address tokenIn,
        uint amountIn
    ) external returns (uint amountOut) {
        IERC20(tokenIn).transferFrom(msg.sender, address(this), amountIn);
        IERC20(tokenIn).approve(address(router), amountIn);

        ISwapRouter.ExactInputParams memory params = ISwapRouter.ExactInputParams({
            path: path,
            recipient: msg.sender,
            deadline: block.timestamp,
            amountIn: amountIn,
            amountOutMinimum: 0
        });
        amountOut = router.exactInput(params);
    }
}

interface ISwapRouter {
    struct ExactInputSingleParams {
        address tokenIn;
        address tokenOut;
        uint24 fee;
        address recipient;
        uint deadline;
        uint amountIn;
        uint amountOutMinimum;
        uint160 sqrtPriceLimitX96;
    }

    /// @notice Swaps amountIn of one token for as much as possible of another token
    /// @param params The parameters necessary for the swap, encoded as ExactInputSingleParams in calldata
    /// @return amountOut The amount of the received token
    function exactInputSingle(
        ExactInputSingleParams calldata params
    ) external payable returns (uint amountOut);

    struct ExactInputParams {
        bytes path;
        address recipient;
        uint deadline;
        uint amountIn;
        uint amountOutMinimum;
    }

    /// @notice Swaps amountIn of one token for as much as possible of another along the specified path
    /// @param params The parameters necessary for the multi-hop swap, encoded as ExactInputParams in calldata
    /// @return amountOut The amount of the received token
    function exactInput(
        ExactInputParams calldata params
    ) external payable returns (uint amountOut);
}

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);
}

interface IWETH is IERC20 {
    function deposit() external payable;

    function withdraw(uint amount) external;
}

Bu akıllı sözleşme, Uniswap V3 Swap işlemlerini gerçekleştirmek için kullanılan bir örnek sözleşmedir. Bu sözleşme, UniswapV3SwapExamples adlı bir sözleşme oluşturur ve içinde iki fonksiyon bulunur: swapExactInputSingleHop ve swapExactInputMultiHop. Bu fonksiyonlar, farklı swap senaryolarını destekler.

swapExactInputSingleHop fonksiyonu, tek bir havuzda (pool) işlem yapmak isteyen kullanıcılar için tasarlanmıştır. Fonksiyona gönderilen tokenIn, tokenOut ve poolFee parametreleri, kullanıcının hangi tokenleri takas etmek istediğini ve hangi havuzun kullanılacağını belirler. Fonksiyon, ExactInputSingleParams yapısı içindeki parametrelerle birlikte ISwapRouter.exactInputSingle fonksiyonunu çağırarak takas işlemini gerçekleştirir.

swapExactInputMultiHop fonksiyonu, birden fazla havuzda işlem yapmak isteyen kullanıcılar için tasarlanmıştır. Fonksiyona gönderilen path, tokenIn ve amountIn parametreleri, kullanıcının takas yapmak istediği tokenleri ve miktarları belirler. Fonksiyon, ExactInputParams yapısı içindeki parametrelerle birlikte ISwapRouter.exactInput fonksiyonunu çağırarak takas işlemini gerçekleştirir.

Sözleşme, ayrıca ISwapRouter, IERC20 ve IWETH olmak üzere üç farklı arayüzü kullanır. ISwapRouter, Uniswap V3 Swap işlemlerini gerçekleştirmek için kullanılan arayüzdür. IERC20 ve IWETH, Ethereum ve diğer ERC-20 tokenleri için standart arayüzlerdir.

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

import "forge-std/Test.sol";
import "forge-std/console.sol";

import "../src/UniswapV3SwapExamples.sol";

address constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
address constant DAI = 0x6B175474E89094C44Da98b954EedeAC495271d0F;
address constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;

contract UniV3Test is Test {
    IWETH private weth = IWETH(WETH);
    IERC20 private dai = IERC20(DAI);
    IERC20 private usdc = IERC20(USDC);

    UniswapV3SwapExamples private uni = new UniswapV3SwapExamples();

    function setUp() public {}

    function testSingleHop() public {
        weth.deposit{value: 1e18}();
        weth.approve(address(uni), 1e18);

        uint amountOut = uni.swapExactInputSingleHop(WETH, DAI, 3000, 1e18);

        console.log("DAI", amountOut);
    }

    function testMultiHop() public {
        weth.deposit{value: 1e18}();
        weth.approve(address(uni), 1e18);

        bytes memory path = abi.encodePacked(
            WETH,
            uint24(3000),
            USDC,
            uint24(100),
            DAI
        );

        uint amountOut = uni.swapExactInputMultiHop(path, WETH, 1e18);

        console.log("DAI", amountOut);
    }
}

Bu kod, Ethereum blok zincirinde çalışabilen bir akıllı sözleşme örneğidir. Bu sözleşme, Uniswap V3 Swap işlemlerinin örneklerini içeren bir örnek sözleşmedir. Bu sözleşme, “Foundry” adlı bir projede test edilmek üzere tasarlanmıştır. Bu kod parçası, Solidity programlama dilinde yazılmıştır ve ayrıca “forge-std” ve “UniswapV3SwapExamples.sol” adlı iki kütüphane içermektedir.

Sözleşme içindeki “testSingleHop” ve “testMultiHop” adlı iki işlev, tek adımda ve çok adımda Uniswap V3 Swap işlemlerini test etmektedir. Bu işlemler, belirli kripto para birimleri arasında takas yapmayı içermektedir.

Kod parçasının son kısmı, sözleşmenin test edilmesi için gereken komutları içermektedir. Bu komutlar, “forge” adlı bir test çerçevesinde kullanılmaktadır ve “eth-mainnet.g.alchemy.com” adlı bir Ethereum ağı üzerinde çalışmaktadır.

Sonuç Bağlamı

Uniswap V3 Swap, merkeziyetsiz finansın (DeFi) popüler uygulamalarından biridir ve kripto para dünyasında hızla yayılmaktadır. Bu işlem, kullanıcıların farklı kripto paralar arasında kolayca değişim yapmalarına olanak tanıyan basit ve kullanıcı dostu bir yöntemdir. Ayrıca, daha iyi fiyatlandırma ve likidite yönetimi gibi avantajları da vardır.

Ancak, herhangi bir yatırım kararı öncesinde olduğu gibi, Uniswap V3 Swap işlemi hakkında da dikkatli düşünmek önemlidir. Ücretler, yüksek volatilite ve likidite riskleri gibi dezavantajları da bulunmaktadır. Bu nedenle, Uniswap V3 Swap işlemi yapmadan önce konu hakkında yeterli bilgiye sahip olmanız ve riskleri değerlendirmeniz önerilir.

Bu e-bültenimizde Uniswap V3 Swap konusu hakkında geniş kapsamlı bir bilgi sağlamaya çalıştık. Umarız ki bu bilgiler işinize yarar ve Uniswap V3 Swap işlemlerini daha iyi anlamanıza yardımcı olur. Bir sonraki e-bültenimizde görüşmek üzere!

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