Geçen hafta Çarşamba (12 Mart), bir kripto yatırımcısının MEV saldırısı sonucunda tek seferde 215.000 dolar kaybetmesi gündeme oturdu.
Basitçe söylemek gerekirse, bu kullanıcı 220.800 $ değerinde USDC stablecoin'ini Uniswap v3 işlem havuzundaki USDT eşdeğeri ile takas etmek istedi, ancak yalnızca 5.272 USDT aldı ve varlıklar aşağıdaki şekilde gösterildiği gibi sadece birkaç saniye içinde anında 215.700 buharlaştı.
Yukarıdaki resim, bu işlemin zincir üzerindeki kayıtlarının ekran görüntüsüdür. Bu trajedinin temel nedeni, blockchain dünyasının kötü şöhretli "sandviç saldırısı" (Sandwich Attack) ile karşılaşmasıdır.
Bu MEV saldırısını ilk olarak Michael açıkladı (yukarıdaki resme bakın), o şöyle açıkladı:
Bir MEV botu, tüm USDC likiditesini değiştirerek tx'i önceden gerçekleştirdi. İşlem gerçekleştikten sonra likiditeyi geri koydular. Saldırgan, bir blok inşaatçısına (bobTheBuilder) 200 bin dolar bahşiş verdi ve bu işlemden 8 bin dolar kazandı.
Yukarıdaki içerikte bir yazım hatası var, MEV saldırı robotu büyük miktarda USDT değiştiriyor, USDC değil.
Ancak, onun açıklamasını ve haber raporlarını okuyunca hala kafanız karışık olabilir, çünkü içinde çok fazla yeni terim var, örneğin sandviç saldırısı (Sandwich Attack), öncelik verme (front-ran the tx), likiditeyi geri verme (put back the liquidity), blok inşaatçısına bahşiş verme (tipped a block builder) vb.
Bugün, bu MEV saldırısını örnek alacağız, tüm süreci ortadan kaldıracağız ve sizi MEV'in karanlık dünyasına götüreceğiz.
Öncelikle, MEV'nin ne olduğunu açıklamamız gerekiyor.
MEV nedir?
MEV başlangıçta madenci tarafından çıkarılabilir değer (Miner Extractable Value) olarak adlandırılıyordu ve madencilerin blok zinciri bloklarında işlemleri yeniden sıralama, ekleme veya çıkarma işlemleri yoluyla elde edebilecekleri ek kârı ifade eder. Bu tür işlemler, normal kullanıcıların daha yüksek maliyetler ödemesine veya daha dezavantajlı işlem fiyatları almasına neden olabilir.
Ethereum gibi blok zinciri ağları, İş Kanıtı (Proof-of-Work, PoW) konsensüs mekanizmasından Hisse Kanıtı (Proof-of-Stake, PoS) konsensüs mekanizmasına geçerken, işlem sıralamasını kontrol etme yetkisi madencilerden doğrulayıcılara geçti. Bu nedenle, terim de "Madenci Tarafından Elde Edilebilen Değer" (Miner Extractable Value) yerine "Maksimum Elde Edilebilen Değer" (Maximal Extractable Value) olarak evrildi.
İsimler değişse de, işlem sırasını manipüle ederek değer elde etme temel konsepti aynı kalmaktadır.
Yukarıdaki içerik biraz teknik, sadece şunu hatırla: MEV'nin var olmasının nedeni, geçmişteki madencilerin ve şu anda doğrulayıcıların, bellek havuzundaki (mempool) işlemleri sıralama hakkına sahip olmalarıdır. Bu sıralama bir blok içinde gerçekleşir, şimdi Ethereum yaklaşık 11 saniyede bir blok çıkarıyor, yani her 11 saniyede bir bu tür bir güç kullanımı gerçekleşiyor. Aynı şekilde, bu MEV saldırısı da doğrulayıcıların sıralama yapmasıyla gerçekleştirildi.
Bu bağlantıya tıkladığınızda, bu saldırıyla ilgili 22029771 numaralı bloğun içerdiği işlem detaylarını aşağıdaki gibi göreceksiniz.
Lütfen dikkat edin, yukarıdaki 1, 2, 3 numaralı işlemler, bu makalenin başında bahsedilen MEV saldırısıdır ve bu sıra, doğrulayıcı (bobTheBuilder) tarafından düzenlenmiştir. Neden böyle olabilir?
MEV İlkeleri
MEV'nin çalışma prensibini anlamak için, öncelikle blok zincirinin bilgileri nasıl kaydettiğini ve güncellediğini anlamamız gerekiyor.
2.1 Blok Zinciri Durum Güncelleme Mekanizması
Blockchain, sürekli büyüyen bir defter olarak düşünülebilir; bu defter, gerçekleşen tüm işlemleri kaydeder. Bu defterin durumu, örneğin her hesabın bakiyesi, Uniswap işlem havuzundaki çeşitli tokenlerin rezerv miktarları gibi, önceki işlemlerle belirlenir.
Bir yeni blok blockchain'e eklendiğinde, bu blokta bulunan tüm işlemler blok içindeki sıralarına göre tek tek yürütülür. Her bir işlem gerçekleştirildiğinde, blockchain'in küresel durumu buna göre değişir.
Yani, yalnızca blokların sırası önemli değil, aynı zamanda blok içindeki işlemlerin sırası da önemlidir. Peki blok içindeki işlemlerin sırası nasıl belirlenir?
2.2 Doğrulayıcı işlemlerin sıralamasını belirler
Kullanıcı bir blockchain ağı üzerinde bir işlem başlattığında, örneğin Uniswap aracılığıyla USDC'yi USDT'ye dönüştüren bu işlem, önce ağa bağlı düğümlere iletilir. İlk doğrulama sonrasında, bu işlem "bellek havuzu" (mempool) adı verilen bir alana girer. Bellek havuzu, henüz onaylanmamış ve blockchain'in bir sonraki bloğuna eklenmemiş işlemlerin beklediği bir alan gibidir.
Eski madenciler (PoW sisteminde), şimdi ise doğrulayıcılar (PoS sisteminde) bellek havuzundan işlemleri seçme ve bu işlemlerin bir sonraki bloktaki sıralamasını belirleme hakkına sahiptir.
Blok içindeki işlemlerin sırası son derece önemlidir. Bir blok nihai olarak onaylanıp blok zincirine eklendikten önce, bu bloktaki işlemler, doğrulayıcı (örneğin bobTheBuilder) tarafından belirlenen sıraya göre gerçekleştirilir. Bu, bir blokta aynı işlem havuzuyla etkileşimde bulunan birden fazla işlem varsa, bu işlemlerin yürütme sırasının her bir işlemin sonucunu doğrudan etkileyeceği anlamına gelir.
Bu yetenek, doğrulayıcıların belirli işlemleri öncelikli olarak işleme almasına, diğer işlemleri geciktirmesine veya hariç tutmasına ve hatta kârı maksimize etmek için kendi işlemlerini eklemesine olanak tanır.
Bu işlemdeki sıralama da aynı derecede önemlidir, en küçük bir hata bile saldırının başarılı olmasını engelleyebilir.
2.3 Bu MEV saldırısında işlem sıralaması
Öncelikle, bu MEV saldırısıyla ilgili 3 işlemi kısaca anlamaya çalışalım:
İşlem 1 (Saldırganın ilk işlemi): Mağdurun işlemi öncesinde gerçekleştirilir. Bu işlemin amacı genellikle mağdurun işlem yapmak istediği tokenin fiyatını artırmaktır.
İşlem 2 (Mağdurun İşlemi): Saldırganın ilk işleminden sonra gerçekleştirilir. Saldırganın önceki eylemleri nedeniyle, o anda işlem havuzundaki fiyatlar mağdur için olumsuzdur; eşdeğer USDT almak için daha fazla USDC ödemesi gerekir veya yalnızca daha az USDT alabilir.
İşlem 3 (Saldırganın İkinci İşlemi): Mağdurun işleminin ardından gerçekleştirilir. Bu işlemin amacı genellikle mağdur işleminden kaynaklanan yeni fiyat değişikliklerinden kâr elde etmektir.
Bu seferki MEV saldırısının doğrulayıcısı bob-The-Builder.eth'dir ve işlemleri 1, 2, 3 şeklinde sıralamaktan o sorumludur. Elbette, bobTheBuilder boşuna çalışmıyor, bu sıralamadan 100'den fazla ETH kazanç elde etti, aksine MEV saldırılarını başlatan kişi yalnızca 8000 dolar kazanç sağladı. Onların kazancı, mağdurların ikinci işleminden kaynaklanıyor.
Kısacası, saldırgan (MEV robotu) ile doğrulayıcı (bobTheBuilder) işbirliği yaparak ikinci işlemin mağdurunun 215.000 dolar kaybetmesine neden oldular; burada saldırgan 8.000 dolar, doğrulayıcı ise 200.000 dolar (100'den fazla ETH) kazandı.
Kullandıkları saldırı yönteminin oldukça etkileyici bir adı var - sandviç saldırısı. Şimdi, bir işlemden diğerine geçerek açıklayalım, böylece MEV'nin daha karmaşık olan sandviç saldırısının ne olduğunu tamamen anlayabilirsin.
Sandviç Saldırısı Tam Analiz
Sandviç saldırısı olarak adlandırılmasının nedeni, saldırganın iki işleminin (İşlem 1 ve İşlem 3) mağdur işleminin (İşlem 2) öncesinde ve sonrasında yer almasıdır; bu da tüm işlem sırasının bir sandviç yapısı gibi görünmesini sağlar (yukarıdaki resme bakınız).
İşlem 1 ve İşlem 3 farklı işlevleri üstlenmektedir. Kısacası, İşlem 1 suç işlemeden sorumluyken, İşlem 3 ganimeti paylaşmaktan sorumludur. Detaylı olarak süreç şöyledir:
Yukarıdaki 1 numaralı işlemin bağlantısına tıklayın, 1 numaralı işlemin detaylarını göreceksiniz. Saldırganın USDT fiyatını artırması da oldukça doğrudan, 1865 milyon USDC kullanarak içindeki 1758 milyon USDT'yi tamamen değiştirdi, aşağıdaki resme bakın.
Bu durumda likidite havuzunda kalanlar büyük miktarda USDC ve az miktarda USDT'dir. Eğer haberlerde belirtildiği gibi, saldırıdan önce Uniswap'ın likiditesinde sırasıyla yaklaşık 19.8 milyon USDC ve USDT varsa, o zaman 1. işlemden sonra havuzda yalnızca 2.22 milyon USDT kalır (=1980-1758) ve USDC bakiyesi yaklaşık 38.45 milyon'a çıkar (=1980+1865).
Şu anda, bu havuzdaki USDC ve USDT arasındaki değişim oranı 1:1'den çok uzak, ancak 1:17'dir, bu da şu anda 1 USDT ile takas etmek için 17 USDC'ye ihtiyaç duyulduğu anlamına gelir, ancak bu oran yalnızca yaklaşıktır, çünkü bu havuz V3'tür ve içindeki likidite eşit olarak dağıtılmamıştır.
Bir şey daha söylemem gerekiyor. Aslında saldırgan 1865 milyon USDC'yi bir seferde kullanmadı, kullanılan USDC miktarı 1.09 milyon, %6 bile değil. Bunu nasıl başardı? Saldırıyı tamamladığımızda bunu daha ayrıntılı olarak açıklayacağız.
3.2 İşlem 2, 22 bin USDC'nin USDT'ye dönüştürülmesi
Yukarıdaki resimdeki 2 numaralı bağlantıya tıklayarak aşağıdaki resmi görebilirsiniz.
Yukarıdaki gibi, mağdurun işlemi 2, işlem 1'in etkisi nedeniyle, 220.000 USDC yalnızca 5272 USDT aldı ve farkında olmadan 170.000 USDT kaybetti. Neden farkında olmadan kaybettiği söyleniyor? Çünkü eğer mağdur işlemi Uniswap üzerinden yapıyorsa, işlem gönderdiğinde aşağıdaki arayüzü görecektir.
Yukarıdaki resme göre, kurbanların en az 220 binin garanti altında olması gerektiğini göreceksiniz. Kurbanların son olarak sadece 5000'den fazla USDT almasının nedeni, %90'ın üzerinde büyük bir kayma yaşanmasıdır. Ancak, Uniswap'ın varsayılan maksimum kayma sınırı %5.5'tir, aşağıdaki resme bakınız.
Yani, eğer mağdur Uniswap ön yüzü aracılığıyla işlem yapıyorsa, en az 208381 USDT (= 220510 * 94.5%) alması gerekir. Belki merak ediyorsunuz, yukarıdaki blok zinciri kaydında bu işlemin neden "Uniswap V3" üzerinde yapıldığı gösteriliyor.
Çünkü, blok zinciri işlemlerinin ön ucu ve arka ucu ayrılmıştır. Yukarıda bahsedilen "Uniswap V3", Uniswap'ın USDC-USDT likidite havuzunu ifade ediyor, bu havuz açıktır ve herhangi bir işlemin ön ucu bu havuz aracılığıyla işlem yapabilir.
Bu nedenle bazıları mağdurun sıradan biri olmadığını, bu kadar büyük bir kayma yaşamayacak kadar basit biri olmadığını, muhtemelen MEV saldırıları kullanarak kara para akladığını sorguluyor. Bunu daha sonra konuşacağız.
3.3 İşlem 3, Hasat + Paylaşım
Bağlantıya tıklayarak işlem 3'ün detaylarını görebilirsiniz, yukarıdaki gibi. A, B ve C işlemlerini ayrı ayrı inceleyelim.
A işlemi, havuzdaki likiditeyi normale döndürmek için 17.32 milyon USDT ile 18.6 milyon USDC'yi geri aldı;
İşlem B, paylaşıma hazırlık, kârın bir kısmını - 20.4 bin USDC'yi 105 ETH'ye dönüştürmek;
Şimdi yukarıda bahsedilen çok önemli bir soruya cevap verelim: Saldırgan, 1.09 milyon USDC ile 18 milyon dolarlık bir saldırıyı nasıl gerçekleştirdi.
Saldırgan 18 milyon USDC'lik havuz saldırısını nasıl gerçekleştirdi?
Saldırganların yalnızca 1.09 milyon USDC ana para ile 18 milyon dolar seviyesinde bir saldırı gerçekleştirebilmelerinin nedeni, blok zinciri dünyasında bulunan sihirli ve özel bir mekanizma olan Uniswap V3'ün Flash Swap'ıdır.
4.1 Flash Swap nedir?
Kısacası:
Lightning Exchange, kullanıcıların aynı işlemde önce Uniswap havuzundan varlık çekmesine, ardından başka bir varlık (veya aynı varlık artı işlem ücreti) ile geri ödemesine olanak tanır.
Uniswap, tüm işlemin aynı işlem içinde tamamlanması kaydıyla bu "önce al, sonra öde" davranışına izin verir. Lütfen, işlemin aynı işlem içinde tamamlanması gerektiğini unutmayın. Bu şekilde tasarlanmıştır ki, Uniswap platformunun kendi güvenliğini sağlasın:
Sıfır riskli borç verme: Uniswap, kullanıcıların havuzdan teminatsız olarak geçici olarak fon çekmelerine (borç almaya benzer) izin verir, ancak işlemin sonunda hemen geri ödenmesi gerekmektedir.
Atomiklik (Atomicity): Tüm işlem atomik olmalıdır; ya tamamen başarılı olmalı (fonların iadesi) ya da tamamen başarısız olmalıdır (işlem geri alınmalıdır).
Lightning Exchange'in tasarım amacı, zincir üzerinde daha etkili arbitraj (Arbitrage) yapmaktı, ancak ne yazık ki MEV saldırganları tarafından kullanıldı ve piyasa manipülasyonunun bir aracı haline geldi.
4.2 Hızlı Değişim, nasıl yardımcı oluyor?
Aşağıda resimle anlatım yapacağız, adım adım bu saldırının şimşek değişimi nasıl gerçekleştirildiğini anlayacağız, aşağıdaki resme bakın.
F1 saldırganı kendi 701 WETH ile AAVE'den 1.09 milyon USDC borç aldı;
F2 saldırganı, önce Uniswap havuzundan 17.58 milyon USDT çekerek hızlı bir değişim talebi başlattı (bu aşamada önceden ödeme yapmasına gerek yoktu); saldırganın hesabı geçici olarak 17.58 milyon USDT ile artmıştı;
F3 saldırganı, bu 17.58 milyon USDT'yi Curve havuzuna hızlı bir şekilde yatırdı ve 17.55 milyon USDC ile değiştirdi. Saldırganın hesabındaki USDT 17.58 milyon azaldı, USDC ise 17.55 milyon arttı. Aşağıdaki resimden göreceğiniz gibi, saldırganın Curve'ü seçmesinin nedeni buradaki likiditenin oldukça bol olması; USDT 70.54 milyonun üzerinde, USDC ise 50.71 milyon var, kayma oranı göreceli olarak düşük.
F4 saldırganı, Curve'den elde ettiği 17.55 milyon USDC'yi, kendi hazırladığı 1.09 milyon USDC (Aave'den alınan borç) ile birleştirerek toplamda 18.64 milyon USDC'yi Uniswap'a bir kerede geri ödedi ve hızlı takas tamamlandı;
Bu işlemden (İşlem 1) sonra, saldırganın hesap bakiyesi 1,09 milyon USDC azaldı, çünkü Uniswap'a geri dönen 18,64 milyon USDC'nin yalnızca 17,55 milyon USDC'si Curve'den değiştirildi, geri kalan 1,09 milyon USDC ise saldırganın kendi fonlarıydı.
Bunu keşfetmiş olmalısınız, bu işlem aslında saldırganın 1.09 milyon kaybetmesine neden oldu. Ancak, sonraki işlem 3, aynı şekilde hızlı takas yöntemiyle, sadece 1.09 milyon USDC'yi geri almakla kalmadı, aynı zamanda 200 binden fazla kazandı.
Aşağıda, İşlem 3'ün verilerine göre adım adım bir analiz yapacağız.
K1 saldırganı, Uniswap'tan 1860 bin USDC'yi Lightning Swap ile çekti;
K2 saldırganı, Uniswap'tan çektiği 17.3 milyon USDC'nin bir kısmını kullanarak 17.32 milyon USDT ile değiştirdi;
K1 saldırganı, Curve'den geri aldığı 17.32 milyon USDT'yi Uniswap'a geri verdi. Hızlı değişim tamamlandı. Dikkat etmeniz gereken şey, saldırganın K2 ile sadece 17.30 milyon USDC harcayarak 17.32 milyon USDT elde etmesidir. Geride kalan 1.30 milyon (= 18.60-17.30) USDC'nin 1.09 milyonu kendi fonudur, kalan 0.21 milyon USDC ise bu saldırının kârıdır.
K3 saldırganı, ana parayı AAVE'ye geri verirken, kendisi 701 WETH aldı, aynı zamanda 200.000 USDC'yi 105 ETH'ye dönüştürdü ve bunlardan 100.558 ETH'yi doğrulayıcıya bahşiş olarak gönderdi (yaklaşık 200.000 dolar), kendisi sadece 10.000 dolardan az bir kazanç bıraktı.
Belki de saldırganların neden doğrulayıcılara 200.000 dolara kadar karı teslim etmeye istekli olduklarına şaşıracaksınız.
4.3 Neden 200.000 dolar "bahşiş" verilmeli?
Aslında bu, cömertlik değil, sandviç saldırısı gibi MEV saldırısının başarılı olması için gerekli bir koşuldur:
Başarılı bir saldırının temeli, işlem sırasının hassas kontrolüdür ve işlem sırasını kontrol eden doğrulayıcıdır (bobTheBuilder).
Doğrulayıcılar sadece saldırganların, mağdurun işlemlerinin saldırı işlemleri arasında güvence altına alınmasına yardımcı olmakla kalmaz, aynı zamanda daha da önemlisi, doğrulayıcılar diğer rekabet eden MEV robotlarının saldırının sorunsuz bir şekilde tamamlanmasını geçememesini veya müdahale etmemesini sağlayabilir.
Bu nedenle, saldırganlar saldırının başarılı olmasını sağlamak için büyük bir kısmını feda etmeyi tercih eder ve kendilerine belirli bir kâr bırakırlar.
Özellikle belirtmek gerekir ki, MEV saldırılarının da maliyeti vardır; Uniswap'taki flaş takasların maliyeti vardır, Curve üzerindeki işlemlerin de maliyeti vardır, sadece oranlar genellikle %0.01~0.05 civarında olduğundan, saldırıdan elde edilen kazançlarla karşılaştırıldığında pek dikkate değer değildir.
Son olarak hatırlatmak isterim ki, MEV saldırılarına karşı savunma aslında oldukça basittir. Tek yapmanız gereken: kayma toleransını belirlemek, %1'i geçmemek; büyük işlemleri birkaç parçaya bölerek gerçekleştirmek. Bu nedenle, DEX (merkeziyetsiz borsa) üzerinden işlem yapmaktan korkmanıza gerek yok.
Sonuç: Karanlık Ormanda Uyarılar ve Öğütler
Bu 215,000 dolarlık MEV saldırı olayı, şüphesiz ki blockchain dünyasının "karanlık orman" kuralının bir kez daha acımasız bir sergilemesi. Merkeziyetsiz, izin gerektirmeyen bir ortamda, mekanizma açıklarından yararlanarak kazanç elde etme konusunda karmaşık bir oyun olduğunu canlı bir şekilde ortaya koyuyor.
Daha yüksek bir seviyeden bakıldığında, MEV'nin ortaya çıkışı, blok zincirinin şeffaflık ve programlanabilirlik ikili etkisinin bir yansımasıdır.
Bir yandan, tüm işlem kayıtları kamuya açık ve incelenebilir, bu da saldırıların izlenebilmesini ve analiz edilebilmesini sağlar;
Diğer yandan, akıllı sözleşmelerin karmaşık mantığı ve işlem yürütmenin belirliliği, zeki katılımcılar için fırsatlar sunmaktadır.
Bu basit bir hacker eylemi değil, blok zincirinin temel mekanizmasını derinlemesine anlama ve kullanmadır; protokol tasarımının dayanıklılığını test eder ve katılımcıların risk bilincini zorlar.
MEV'yi anlamak, risklerini tanımak, bu fırsatlarla dolu ancak aynı zamanda tehlikeler barındıran dijital dünyada daha iyi yol alabilmek için gereklidir. Unutmayın, blok zincirinin "karanlık ormanı" içinde, sadece kurallara saygı duyarak ve farkındalığı artırarak, bir sonraki av olan olmaktan kaçınabilirsiniz.
The content is for reference only, not a solicitation or offer. No investment, tax, or legal advice provided. See Disclaimer for more risks disclosure.
MEV Sandviç Saldırısı Tam Analiz: Sıralamadan Flash Swap'a Ölümcül Zincir
Yazar: Daii
Geçen hafta Çarşamba (12 Mart), bir kripto yatırımcısının MEV saldırısı sonucunda tek seferde 215.000 dolar kaybetmesi gündeme oturdu.
Basitçe söylemek gerekirse, bu kullanıcı 220.800 $ değerinde USDC stablecoin'ini Uniswap v3 işlem havuzundaki USDT eşdeğeri ile takas etmek istedi, ancak yalnızca 5.272 USDT aldı ve varlıklar aşağıdaki şekilde gösterildiği gibi sadece birkaç saniye içinde anında 215.700 buharlaştı.
Yukarıdaki resim, bu işlemin zincir üzerindeki kayıtlarının ekran görüntüsüdür. Bu trajedinin temel nedeni, blockchain dünyasının kötü şöhretli "sandviç saldırısı" (Sandwich Attack) ile karşılaşmasıdır.
Bu MEV saldırısını ilk olarak Michael açıkladı (yukarıdaki resme bakın), o şöyle açıkladı:
Bir MEV botu, tüm USDC likiditesini değiştirerek tx'i önceden gerçekleştirdi. İşlem gerçekleştikten sonra likiditeyi geri koydular. Saldırgan, bir blok inşaatçısına (bobTheBuilder) 200 bin dolar bahşiş verdi ve bu işlemden 8 bin dolar kazandı.
Yukarıdaki içerikte bir yazım hatası var, MEV saldırı robotu büyük miktarda USDT değiştiriyor, USDC değil.
Ancak, onun açıklamasını ve haber raporlarını okuyunca hala kafanız karışık olabilir, çünkü içinde çok fazla yeni terim var, örneğin sandviç saldırısı (Sandwich Attack), öncelik verme (front-ran the tx), likiditeyi geri verme (put back the liquidity), blok inşaatçısına bahşiş verme (tipped a block builder) vb.
Bugün, bu MEV saldırısını örnek alacağız, tüm süreci ortadan kaldıracağız ve sizi MEV'in karanlık dünyasına götüreceğiz.
Öncelikle, MEV'nin ne olduğunu açıklamamız gerekiyor.
MEV başlangıçta madenci tarafından çıkarılabilir değer (Miner Extractable Value) olarak adlandırılıyordu ve madencilerin blok zinciri bloklarında işlemleri yeniden sıralama, ekleme veya çıkarma işlemleri yoluyla elde edebilecekleri ek kârı ifade eder. Bu tür işlemler, normal kullanıcıların daha yüksek maliyetler ödemesine veya daha dezavantajlı işlem fiyatları almasına neden olabilir.
Ethereum gibi blok zinciri ağları, İş Kanıtı (Proof-of-Work, PoW) konsensüs mekanizmasından Hisse Kanıtı (Proof-of-Stake, PoS) konsensüs mekanizmasına geçerken, işlem sıralamasını kontrol etme yetkisi madencilerden doğrulayıcılara geçti. Bu nedenle, terim de "Madenci Tarafından Elde Edilebilen Değer" (Miner Extractable Value) yerine "Maksimum Elde Edilebilen Değer" (Maximal Extractable Value) olarak evrildi.
İsimler değişse de, işlem sırasını manipüle ederek değer elde etme temel konsepti aynı kalmaktadır.
Yukarıdaki içerik biraz teknik, sadece şunu hatırla: MEV'nin var olmasının nedeni, geçmişteki madencilerin ve şu anda doğrulayıcıların, bellek havuzundaki (mempool) işlemleri sıralama hakkına sahip olmalarıdır. Bu sıralama bir blok içinde gerçekleşir, şimdi Ethereum yaklaşık 11 saniyede bir blok çıkarıyor, yani her 11 saniyede bir bu tür bir güç kullanımı gerçekleşiyor. Aynı şekilde, bu MEV saldırısı da doğrulayıcıların sıralama yapmasıyla gerçekleştirildi.
Bu bağlantıya tıkladığınızda, bu saldırıyla ilgili 22029771 numaralı bloğun içerdiği işlem detaylarını aşağıdaki gibi göreceksiniz.
Lütfen dikkat edin, yukarıdaki 1, 2, 3 numaralı işlemler, bu makalenin başında bahsedilen MEV saldırısıdır ve bu sıra, doğrulayıcı (bobTheBuilder) tarafından düzenlenmiştir. Neden böyle olabilir?
MEV'nin çalışma prensibini anlamak için, öncelikle blok zincirinin bilgileri nasıl kaydettiğini ve güncellediğini anlamamız gerekiyor.
2.1 Blok Zinciri Durum Güncelleme Mekanizması
Blockchain, sürekli büyüyen bir defter olarak düşünülebilir; bu defter, gerçekleşen tüm işlemleri kaydeder. Bu defterin durumu, örneğin her hesabın bakiyesi, Uniswap işlem havuzundaki çeşitli tokenlerin rezerv miktarları gibi, önceki işlemlerle belirlenir.
Bir yeni blok blockchain'e eklendiğinde, bu blokta bulunan tüm işlemler blok içindeki sıralarına göre tek tek yürütülür. Her bir işlem gerçekleştirildiğinde, blockchain'in küresel durumu buna göre değişir.
Yani, yalnızca blokların sırası önemli değil, aynı zamanda blok içindeki işlemlerin sırası da önemlidir. Peki blok içindeki işlemlerin sırası nasıl belirlenir?
2.2 Doğrulayıcı işlemlerin sıralamasını belirler
Kullanıcı bir blockchain ağı üzerinde bir işlem başlattığında, örneğin Uniswap aracılığıyla USDC'yi USDT'ye dönüştüren bu işlem, önce ağa bağlı düğümlere iletilir. İlk doğrulama sonrasında, bu işlem "bellek havuzu" (mempool) adı verilen bir alana girer. Bellek havuzu, henüz onaylanmamış ve blockchain'in bir sonraki bloğuna eklenmemiş işlemlerin beklediği bir alan gibidir.
Eski madenciler (PoW sisteminde), şimdi ise doğrulayıcılar (PoS sisteminde) bellek havuzundan işlemleri seçme ve bu işlemlerin bir sonraki bloktaki sıralamasını belirleme hakkına sahiptir.
Blok içindeki işlemlerin sırası son derece önemlidir. Bir blok nihai olarak onaylanıp blok zincirine eklendikten önce, bu bloktaki işlemler, doğrulayıcı (örneğin bobTheBuilder) tarafından belirlenen sıraya göre gerçekleştirilir. Bu, bir blokta aynı işlem havuzuyla etkileşimde bulunan birden fazla işlem varsa, bu işlemlerin yürütme sırasının her bir işlemin sonucunu doğrudan etkileyeceği anlamına gelir.
Bu yetenek, doğrulayıcıların belirli işlemleri öncelikli olarak işleme almasına, diğer işlemleri geciktirmesine veya hariç tutmasına ve hatta kârı maksimize etmek için kendi işlemlerini eklemesine olanak tanır.
Bu işlemdeki sıralama da aynı derecede önemlidir, en küçük bir hata bile saldırının başarılı olmasını engelleyebilir.
2.3 Bu MEV saldırısında işlem sıralaması
Öncelikle, bu MEV saldırısıyla ilgili 3 işlemi kısaca anlamaya çalışalım:
İşlem 1 (Saldırganın ilk işlemi): Mağdurun işlemi öncesinde gerçekleştirilir. Bu işlemin amacı genellikle mağdurun işlem yapmak istediği tokenin fiyatını artırmaktır.
İşlem 2 (Mağdurun İşlemi): Saldırganın ilk işleminden sonra gerçekleştirilir. Saldırganın önceki eylemleri nedeniyle, o anda işlem havuzundaki fiyatlar mağdur için olumsuzdur; eşdeğer USDT almak için daha fazla USDC ödemesi gerekir veya yalnızca daha az USDT alabilir.
İşlem 3 (Saldırganın İkinci İşlemi): Mağdurun işleminin ardından gerçekleştirilir. Bu işlemin amacı genellikle mağdur işleminden kaynaklanan yeni fiyat değişikliklerinden kâr elde etmektir.
Bu seferki MEV saldırısının doğrulayıcısı bob-The-Builder.eth'dir ve işlemleri 1, 2, 3 şeklinde sıralamaktan o sorumludur. Elbette, bobTheBuilder boşuna çalışmıyor, bu sıralamadan 100'den fazla ETH kazanç elde etti, aksine MEV saldırılarını başlatan kişi yalnızca 8000 dolar kazanç sağladı. Onların kazancı, mağdurların ikinci işleminden kaynaklanıyor.
Kısacası, saldırgan (MEV robotu) ile doğrulayıcı (bobTheBuilder) işbirliği yaparak ikinci işlemin mağdurunun 215.000 dolar kaybetmesine neden oldular; burada saldırgan 8.000 dolar, doğrulayıcı ise 200.000 dolar (100'den fazla ETH) kazandı.
Kullandıkları saldırı yönteminin oldukça etkileyici bir adı var - sandviç saldırısı. Şimdi, bir işlemden diğerine geçerek açıklayalım, böylece MEV'nin daha karmaşık olan sandviç saldırısının ne olduğunu tamamen anlayabilirsin.
Sandviç saldırısı olarak adlandırılmasının nedeni, saldırganın iki işleminin (İşlem 1 ve İşlem 3) mağdur işleminin (İşlem 2) öncesinde ve sonrasında yer almasıdır; bu da tüm işlem sırasının bir sandviç yapısı gibi görünmesini sağlar (yukarıdaki resme bakınız).
İşlem 1 ve İşlem 3 farklı işlevleri üstlenmektedir. Kısacası, İşlem 1 suç işlemeden sorumluyken, İşlem 3 ganimeti paylaşmaktan sorumludur. Detaylı olarak süreç şöyledir:
3.1 İşlem 1, USDT'nin fiyatını artırmaktan sorumludur.
Yukarıdaki 1 numaralı işlemin bağlantısına tıklayın, 1 numaralı işlemin detaylarını göreceksiniz. Saldırganın USDT fiyatını artırması da oldukça doğrudan, 1865 milyon USDC kullanarak içindeki 1758 milyon USDT'yi tamamen değiştirdi, aşağıdaki resme bakın.
Bu durumda likidite havuzunda kalanlar büyük miktarda USDC ve az miktarda USDT'dir. Eğer haberlerde belirtildiği gibi, saldırıdan önce Uniswap'ın likiditesinde sırasıyla yaklaşık 19.8 milyon USDC ve USDT varsa, o zaman 1. işlemden sonra havuzda yalnızca 2.22 milyon USDT kalır (=1980-1758) ve USDC bakiyesi yaklaşık 38.45 milyon'a çıkar (=1980+1865).
Şu anda, bu havuzdaki USDC ve USDT arasındaki değişim oranı 1:1'den çok uzak, ancak 1:17'dir, bu da şu anda 1 USDT ile takas etmek için 17 USDC'ye ihtiyaç duyulduğu anlamına gelir, ancak bu oran yalnızca yaklaşıktır, çünkü bu havuz V3'tür ve içindeki likidite eşit olarak dağıtılmamıştır.
Bir şey daha söylemem gerekiyor. Aslında saldırgan 1865 milyon USDC'yi bir seferde kullanmadı, kullanılan USDC miktarı 1.09 milyon, %6 bile değil. Bunu nasıl başardı? Saldırıyı tamamladığımızda bunu daha ayrıntılı olarak açıklayacağız.
3.2 İşlem 2, 22 bin USDC'nin USDT'ye dönüştürülmesi
Yukarıdaki resimdeki 2 numaralı bağlantıya tıklayarak aşağıdaki resmi görebilirsiniz.
Yukarıdaki gibi, mağdurun işlemi 2, işlem 1'in etkisi nedeniyle, 220.000 USDC yalnızca 5272 USDT aldı ve farkında olmadan 170.000 USDT kaybetti. Neden farkında olmadan kaybettiği söyleniyor? Çünkü eğer mağdur işlemi Uniswap üzerinden yapıyorsa, işlem gönderdiğinde aşağıdaki arayüzü görecektir.
Yukarıdaki resme göre, kurbanların en az 220 binin garanti altında olması gerektiğini göreceksiniz. Kurbanların son olarak sadece 5000'den fazla USDT almasının nedeni, %90'ın üzerinde büyük bir kayma yaşanmasıdır. Ancak, Uniswap'ın varsayılan maksimum kayma sınırı %5.5'tir, aşağıdaki resme bakınız.
Yani, eğer mağdur Uniswap ön yüzü aracılığıyla işlem yapıyorsa, en az 208381 USDT (= 220510 * 94.5%) alması gerekir. Belki merak ediyorsunuz, yukarıdaki blok zinciri kaydında bu işlemin neden "Uniswap V3" üzerinde yapıldığı gösteriliyor.
Çünkü, blok zinciri işlemlerinin ön ucu ve arka ucu ayrılmıştır. Yukarıda bahsedilen "Uniswap V3", Uniswap'ın USDC-USDT likidite havuzunu ifade ediyor, bu havuz açıktır ve herhangi bir işlemin ön ucu bu havuz aracılığıyla işlem yapabilir.
Bu nedenle bazıları mağdurun sıradan biri olmadığını, bu kadar büyük bir kayma yaşamayacak kadar basit biri olmadığını, muhtemelen MEV saldırıları kullanarak kara para akladığını sorguluyor. Bunu daha sonra konuşacağız.
3.3 İşlem 3, Hasat + Paylaşım
Bağlantıya tıklayarak işlem 3'ün detaylarını görebilirsiniz, yukarıdaki gibi. A, B ve C işlemlerini ayrı ayrı inceleyelim.
A işlemi, havuzdaki likiditeyi normale döndürmek için 17.32 milyon USDT ile 18.6 milyon USDC'yi geri aldı;
İşlem B, paylaşıma hazırlık, kârın bir kısmını - 20.4 bin USDC'yi 105 ETH'ye dönüştürmek;
İşlem C, paylaştırma, 100.558 ETH'yi doğrulayıcı bob-The-Builder.eth'e öde.
Böylece, sandviç saldırısı sona erdi.
Şimdi yukarıda bahsedilen çok önemli bir soruya cevap verelim: Saldırgan, 1.09 milyon USDC ile 18 milyon dolarlık bir saldırıyı nasıl gerçekleştirdi.
Saldırganların yalnızca 1.09 milyon USDC ana para ile 18 milyon dolar seviyesinde bir saldırı gerçekleştirebilmelerinin nedeni, blok zinciri dünyasında bulunan sihirli ve özel bir mekanizma olan Uniswap V3'ün Flash Swap'ıdır.
4.1 Flash Swap nedir?
Kısacası:
Lightning Exchange, kullanıcıların aynı işlemde önce Uniswap havuzundan varlık çekmesine, ardından başka bir varlık (veya aynı varlık artı işlem ücreti) ile geri ödemesine olanak tanır.
Uniswap, tüm işlemin aynı işlem içinde tamamlanması kaydıyla bu "önce al, sonra öde" davranışına izin verir. Lütfen, işlemin aynı işlem içinde tamamlanması gerektiğini unutmayın. Bu şekilde tasarlanmıştır ki, Uniswap platformunun kendi güvenliğini sağlasın:
Sıfır riskli borç verme: Uniswap, kullanıcıların havuzdan teminatsız olarak geçici olarak fon çekmelerine (borç almaya benzer) izin verir, ancak işlemin sonunda hemen geri ödenmesi gerekmektedir.
Atomiklik (Atomicity): Tüm işlem atomik olmalıdır; ya tamamen başarılı olmalı (fonların iadesi) ya da tamamen başarısız olmalıdır (işlem geri alınmalıdır).
Lightning Exchange'in tasarım amacı, zincir üzerinde daha etkili arbitraj (Arbitrage) yapmaktı, ancak ne yazık ki MEV saldırganları tarafından kullanıldı ve piyasa manipülasyonunun bir aracı haline geldi.
4.2 Hızlı Değişim, nasıl yardımcı oluyor?
Aşağıda resimle anlatım yapacağız, adım adım bu saldırının şimşek değişimi nasıl gerçekleştirildiğini anlayacağız, aşağıdaki resme bakın.
F1 saldırganı kendi 701 WETH ile AAVE'den 1.09 milyon USDC borç aldı;
F2 saldırganı, önce Uniswap havuzundan 17.58 milyon USDT çekerek hızlı bir değişim talebi başlattı (bu aşamada önceden ödeme yapmasına gerek yoktu); saldırganın hesabı geçici olarak 17.58 milyon USDT ile artmıştı;
F3 saldırganı, bu 17.58 milyon USDT'yi Curve havuzuna hızlı bir şekilde yatırdı ve 17.55 milyon USDC ile değiştirdi. Saldırganın hesabındaki USDT 17.58 milyon azaldı, USDC ise 17.55 milyon arttı. Aşağıdaki resimden göreceğiniz gibi, saldırganın Curve'ü seçmesinin nedeni buradaki likiditenin oldukça bol olması; USDT 70.54 milyonun üzerinde, USDC ise 50.71 milyon var, kayma oranı göreceli olarak düşük.
F4 saldırganı, Curve'den elde ettiği 17.55 milyon USDC'yi, kendi hazırladığı 1.09 milyon USDC (Aave'den alınan borç) ile birleştirerek toplamda 18.64 milyon USDC'yi Uniswap'a bir kerede geri ödedi ve hızlı takas tamamlandı;
Bu işlemden (İşlem 1) sonra, saldırganın hesap bakiyesi 1,09 milyon USDC azaldı, çünkü Uniswap'a geri dönen 18,64 milyon USDC'nin yalnızca 17,55 milyon USDC'si Curve'den değiştirildi, geri kalan 1,09 milyon USDC ise saldırganın kendi fonlarıydı.
Bunu keşfetmiş olmalısınız, bu işlem aslında saldırganın 1.09 milyon kaybetmesine neden oldu. Ancak, sonraki işlem 3, aynı şekilde hızlı takas yöntemiyle, sadece 1.09 milyon USDC'yi geri almakla kalmadı, aynı zamanda 200 binden fazla kazandı.
Aşağıda, İşlem 3'ün verilerine göre adım adım bir analiz yapacağız.
K1 saldırganı, Uniswap'tan 1860 bin USDC'yi Lightning Swap ile çekti;
K2 saldırganı, Uniswap'tan çektiği 17.3 milyon USDC'nin bir kısmını kullanarak 17.32 milyon USDT ile değiştirdi;
K1 saldırganı, Curve'den geri aldığı 17.32 milyon USDT'yi Uniswap'a geri verdi. Hızlı değişim tamamlandı. Dikkat etmeniz gereken şey, saldırganın K2 ile sadece 17.30 milyon USDC harcayarak 17.32 milyon USDT elde etmesidir. Geride kalan 1.30 milyon (= 18.60-17.30) USDC'nin 1.09 milyonu kendi fonudur, kalan 0.21 milyon USDC ise bu saldırının kârıdır.
K3 saldırganı, ana parayı AAVE'ye geri verirken, kendisi 701 WETH aldı, aynı zamanda 200.000 USDC'yi 105 ETH'ye dönüştürdü ve bunlardan 100.558 ETH'yi doğrulayıcıya bahşiş olarak gönderdi (yaklaşık 200.000 dolar), kendisi sadece 10.000 dolardan az bir kazanç bıraktı.
Belki de saldırganların neden doğrulayıcılara 200.000 dolara kadar karı teslim etmeye istekli olduklarına şaşıracaksınız.
4.3 Neden 200.000 dolar "bahşiş" verilmeli?
Aslında bu, cömertlik değil, sandviç saldırısı gibi MEV saldırısının başarılı olması için gerekli bir koşuldur:
Başarılı bir saldırının temeli, işlem sırasının hassas kontrolüdür ve işlem sırasını kontrol eden doğrulayıcıdır (bobTheBuilder).
Doğrulayıcılar sadece saldırganların, mağdurun işlemlerinin saldırı işlemleri arasında güvence altına alınmasına yardımcı olmakla kalmaz, aynı zamanda daha da önemlisi, doğrulayıcılar diğer rekabet eden MEV robotlarının saldırının sorunsuz bir şekilde tamamlanmasını geçememesini veya müdahale etmemesini sağlayabilir.
Bu nedenle, saldırganlar saldırının başarılı olmasını sağlamak için büyük bir kısmını feda etmeyi tercih eder ve kendilerine belirli bir kâr bırakırlar.
Özellikle belirtmek gerekir ki, MEV saldırılarının da maliyeti vardır; Uniswap'taki flaş takasların maliyeti vardır, Curve üzerindeki işlemlerin de maliyeti vardır, sadece oranlar genellikle %0.01~0.05 civarında olduğundan, saldırıdan elde edilen kazançlarla karşılaştırıldığında pek dikkate değer değildir.
Son olarak hatırlatmak isterim ki, MEV saldırılarına karşı savunma aslında oldukça basittir. Tek yapmanız gereken: kayma toleransını belirlemek, %1'i geçmemek; büyük işlemleri birkaç parçaya bölerek gerçekleştirmek. Bu nedenle, DEX (merkeziyetsiz borsa) üzerinden işlem yapmaktan korkmanıza gerek yok.
Sonuç: Karanlık Ormanda Uyarılar ve Öğütler
Bu 215,000 dolarlık MEV saldırı olayı, şüphesiz ki blockchain dünyasının "karanlık orman" kuralının bir kez daha acımasız bir sergilemesi. Merkeziyetsiz, izin gerektirmeyen bir ortamda, mekanizma açıklarından yararlanarak kazanç elde etme konusunda karmaşık bir oyun olduğunu canlı bir şekilde ortaya koyuyor.
Daha yüksek bir seviyeden bakıldığında, MEV'nin ortaya çıkışı, blok zincirinin şeffaflık ve programlanabilirlik ikili etkisinin bir yansımasıdır.
Bir yandan, tüm işlem kayıtları kamuya açık ve incelenebilir, bu da saldırıların izlenebilmesini ve analiz edilebilmesini sağlar;
Diğer yandan, akıllı sözleşmelerin karmaşık mantığı ve işlem yürütmenin belirliliği, zeki katılımcılar için fırsatlar sunmaktadır.
Bu basit bir hacker eylemi değil, blok zincirinin temel mekanizmasını derinlemesine anlama ve kullanmadır; protokol tasarımının dayanıklılığını test eder ve katılımcıların risk bilincini zorlar.
MEV'yi anlamak, risklerini tanımak, bu fırsatlarla dolu ancak aynı zamanda tehlikeler barındıran dijital dünyada daha iyi yol alabilmek için gereklidir. Unutmayın, blok zincirinin "karanlık ormanı" içinde, sadece kurallara saygı duyarak ve farkındalığı artırarak, bir sonraki av olan olmaktan kaçınabilirsiniz.
Bu, bu makale ile ulaşmayı amaçladığım bir etki.