Turing tamamlama: ne anlama geliyor, Ethereum neden buna ihtiyaç duydu ve Bitcoin neden bundan kaçınmayı tercih etti?

Turing tamamlama: ne anlama geliyor, Ethereum neden buna ihtiyaç duydu ve Bitcoin neden bundan kaçınmayı tercih etti?

Geleneksel finans sektöründe çalışan bir arkadaşım bir keresinde bana Ethereum'un blok zincirinde tüm finansal uygulamaları çalıştırabilirken Bitcoin'in temelde sadece bir adresten diğerine para gönderebilmesinin nedenini sormuştu. "İkisi de blok zinciri," demişti. "Aradaki gerçek fark nedir?"

Turing tamamlama özelliğini açıklamaya çalıştım ve gözlerinin donuklaştığını gördüm. Bu yüzden bir benzetmeyle tekrar denedim. Bitcoin bir otomat makinesi. Para koyarsınız, bir düğmeye basarsınız, belirli bir ürün alırsınız. Yapması gerekeni yapar ve başka hiçbir şey yapmaz. Ethereum ise bir şefin olduğu bir mutfak. Şefe herhangi bir tarif ve yeterli malzeme verin, her şeyi yapabilir. Döngüler ("kıvam alana kadar karıştırın"), kararlar ("çok tuzluysa su ekleyin"), yaratıcılık ("kalanlardan bir tatlı doğaçlayın"). Şef her talimatı takip edebilir. Otomat makinesi edemez.

Bu benzetme mükemmel değil. Bir bilgisayar bilimcisi, basitleştirdiğim birkaç noktaya dikkat çekerdi. Ama arkadaşımın doğru soruyu sormasına neden oldu: "Peki, neden biri otomat olmayı seçsin ki?"

Bu soru, kripto dünyasındaki Turing tamamlama tartışmasının tamamını oluşturuyor. Güvenlik mi esneklik mi? Öngörülebilirlik mi güç mü? Bitcoin mi Ethereum mu? Ve can sıkıcı olan şu ki, her iki taraf da haklı.

Bu fikrin nereden geldiği ve 1936 tarihli bir matematik makalesinin neden hala önemli olduğu

Alan Turing, 1936'da "Hesaplanabilir Sayılar Üzerine" adlı bir makale yayınladı. O zaman 23 yaşındaydı. Makalesinde, oyuncak gibi görünen son derece basit bir makineyi tanımladı. Hücrelere bölünmüş bir bant şeridi. Sembolleri okuyan ve yazan bir kafa. Okuduğu şeye göre kafaya ne yapacağını söyleyen kurallar. Bant, kafa, kurallar. İşte tüm makine bu.

Beni hâlâ ürperten kısım şu: Turing, bu inanılmaz derecede basit makinenin, herhangi bir bilgisayarın hesaplayabileceği her şeyi hesaplayabileceğini kanıtladı. Bazı şeyleri değil, her şeyi. Telefonunuz şu anda bant ve kafa işlemleri yapıyor. ChatGPT çalıştıran sunucu da öyle. Arabanızdaki çip de öyle. Tüm bunları 1936'da, yeryüzünde tek bir elektronik bilgisayar bile yokken kanıtladı. Makale neredeyse 90 yaşında ve gezegendeki her bilgisayar bilimleri bölümü hâlâ ilk dönemde bunu ders olarak okutuyor.

Birisi bir sistemin "Turing tamamlama özelliğine sahip" olduğunu söylediğinde, Turing'in bant makinesini simüle edebildiğini kastediyor demektir. Döngüler çalıştırabilir, verilere dayalı kararlar alabilir, bellekte veri depolayabilir ve herhangi bir algoritmayı uygulayabilir. Dizüstü bilgisayarınız Turing tamamlama özelliğine sahiptir. Cep hesap makinesi ise değildir. Ve işte insanlara anlatmayı sevdiğim eğlenceli bir gerçek: Minecraft'ın Redstone devreleri teknik olarak Turing tamamlama özelliğine sahiptir. İnsanlar oyun içinde çalışan bilgisayarlar inşa ettiler. Kullanışlı bilgisayarlar değil, ama çalışan bilgisayarlar.

Turing tamamlama

Bitcoin'de bunun sonuçları neler: Satoshi neden sınırlamayı seçti?

Satoshi, Bitcoin'i kasıtlı olarak aptalca tasarlanmış Bitcoin Script adlı bir programlama diliyle oluşturdu. Bu bilinçli bir tercihti. İmzaları doğrular, çoklu imza cüzdanlarını yönetir, fonları zaman koşullarıyla kilitler ve hepsi bu kadar. Döngü yok. Karmaşık dallanma yok. İşlemler arasında aktarılan durum yok.

Bunun neden önemli olduğunu ilk kez Ethereum'daki DAO saldırısı hakkında okurken anladım (buna da değineceğim). Özyinelemeli bir fonksiyon çağrısı, geliştiricilerin asla tahmin etmediği sonsuz bir döngüde kendini çağırabildiği için akıllı bir sözleşmeden 150 milyon doları sildi. Bitcoin'de bu tür bir saldırı imkansızdır. Olasılık dışı değil. İmkansız. Bitcoin Script kendini çağıramaz. Döngü oluşturamaz. Özyinelemeli olamaz. Dil, Ethereum'a 150 milyon dolara mal olan türden bir hatayı ifade etmek için çok sınırlıdır.

Bu sınırlama aslında bir özelliktir. Her Bitcoin komut dosyası öngörülebilir bir şekilde sonlanır. Onu okuyabilir ve tam olarak ne yapacağını bilirsiniz. Sürpriz yok. Beklenmedik davranış yok. Bir trilyon dolardan fazla değere sahip bir ağı güvence altına alırken, "sıkıcı ve öngörülebilir" olmak bir zayıflık değil, bir tasarım tercihidir.

Vitalik'in inşa ettiği şey ve bunun her şeyi değiştirmesinin nedenleri

Vitalik Buterin, 2013 yılında Ethereum teknik belgesini yayınladığında 19 yaşındaydı. Sorusu basit ve radikaldi: Ya blok zincirinin kendisi herhangi bir programı çalıştırabilseydi? Sadece "A'dan B'ye para göndermek" değil, bir bilgisayarın yapabileceği her şeyi?

Ethereum teknik dokümanı çıktığında üniversitedeydim. Bir Bitcoin forumunda birinin paylaştığı bir PDF dosyasında okudum. Yorumların yarısı Vitalik'in bir dahi olduğunu söylüyordu. Diğer yarısı ise hemen hacklenecek bir sistem kurduğunu söylüyordu. İkisi de haklıydı.

Ethereum, 2015 yılında Turing tamamlama özelliğine sahip iki bileşenle birlikte piyasaya sürüldü. Solidity, akıllı sözleşmeler yazmak için kullanılan programlama dilidir. Döngüler, koşullu ifadeler, durum depolama, fonksiyon çağrıları gibi her şeye sahiptir. Ethereum Sanal Makinesi, bu sözleşmeleri ağdaki her düğümde eş zamanlı olarak çalıştırır. Birlikte, geliştiricilerin yazabildikleri her türlü kodu dağıtmalarına olanak tanırlar.

İşte bu tek karar, DeFi'nin var olma sebebidir. NFT'lerin var olma sebebidir. DAO'ların var olma sebebidir. Milyarlarca doların, tek bir şirketin kontrol etmediği programlar aracılığıyla akmasının sebebidir. Uniswap'ten Aave'ye, OpenSea'ye kadar kriptodaki her ilginç uygulama, Ethereum'un rastgele kod çalıştırabilmesi sayesinde mümkün olmaktadır.

Ancak Vitalik bir bahis oynadı. Esnekliğin gücünün karmaşıklığın riskinden daha ağır basacağına dair bir bahis oynadı. 2016'daki DAO saldırısı bu bahsi ciddi şekilde test etti. Her yıl milyarlarca dolara mal olan DeFi saldırıları da bunu test etmeye devam ediyor. Ve Bitcoin topluluğu bu kayıplara işaret edip "işte bu yüzden basit kaldık" diyor. Her iki tarafın da haklı olduğu noktalar var.

Durma sorunu ve doğalgaz ücretlerinin var olma nedenleri

Bunu ilk anladığımda beni gece uyutmayan kısım buydu.

Turing, 1936 tarihli aynı makalesinde rahatsız edici bir şeyi kanıtladı: hiçbir algoritma, rastgele bir programa bakıp, programın çalışmayı bitirip bitirmeyeceğini veya sonsuza dek döngüye girip girmeyeceğini güvenilir bir şekilde belirleyemez. Bu, henüz çözemediğimiz bir teknoloji problemi değil. Matematiksel bir imkansızlık. Kanıtlandı. Tamamlandı. Ne kadar gelişmiş olursa olsun, hiçbir bilgisayar tüm programlar için durma sorununu çözemez.

Dizüstü bilgisayarımda sonsuz döngü can sıkıcıdır. Ctrl-C'ye basarım. Hayat devam eder. Blok zincirinde ise sonsuz döngü felakettir. Her düğüm her akıllı sözleşmeyi çalıştırır. Eğer bir sözleşme hiç durmazsa, o blok zincirini çalıştıran gezegendeki her düğüm donar. Ağ ölür.

Ethereum'un çözümü basit ama etkili: gaz. Her hesaplama gaz maliyeti getirir. İşleminize gaz eklersiniz. Gaz bittiğinde kod durur. İşlemin bitmiş olması önemli değil. Paranızın transferi sırasında bile olsa fark etmez. Gaz sıfıra ulaştığında işlem sona erer. Bu nedenle ETH gaz ücretleri değişir. Basit bir transfer: 21.000 gaz. Karmaşık bir DeFi takası: 200.000. Zincir üstü sanat içeren bir NFT basımı: yarım milyon. Her düğümün gerçekleştirmesi gereken hesaplama miktarı için ödeme yapıyorsunuz.

Bitcoin bu soruna baktı ve "hayır" dedi. Döngü yazılamaz, döngüde takılıp kalınamaz. Her komut dosyası sonlanır. Gaz mekanizmasına gerek yok. Dil, "sonsuza dek" ifadesini kullanmak için çok sınırlı.

Haziran 2016: Teori 150 milyon dolarlık gerçeğe dönüştü

Kriptografide Turing tamamlama özelliği hakkındaki her tartışma eninde sonunda bu noktaya varır.

DAO, Ethereum üzerinde çalışan 150 milyon dolarlık bir yatırım fonuydu. Akıllı sözleşme. Topluluk yönetimi. Para giriyor, nereye gideceği oylarla belirleniyor. Kod karmaşıktı. Döngüler, koşullu ifadeler, sözleşmeler arası çağrılar, yürütme sırasında değişen durum içeriyordu. Turing tamamlama özelliğinin izin verdiği her şey mevcuttu.

Birisi bir açık buldu. Para çekme fonksiyonu önce ETH gönderiyor, sonra bakiyeyi güncelliyordu. Saldırgan para çekme işlemini başlattı, ödemeyi aldı ve bakiye güncellenmeden önce fonksiyon kendini tekrar çağırdı. Ve tekrar. Ve tekrar. Yeniden giriş döngüsü. Geliştiricilerin asla amaçlamadığı, her döngüde parayı tüketen bir döngü.

Bu Bitcoin'de olabilir mi? Hayır. Bitcoin komut dosyası kendini çağıramaz. Başka komut dosyalarını çağıramaz. Döngü oluşturamaz. Bitcoin'i sıkıcı kılan şey, bu özel saldırıyı imkansız kılan şeyle aynıdır.

Ethereum topluluğu, zinciri hard fork yaparak hırsızlığı tersine çevirmek için oy kullandı. Bu bölünme Ethereum Classic'i yarattı. Geliştiriciler ders aldı. Yeniden giriş koruma mekanizmaları standart hale geldi. "Etkileri kontrol etme" modeli kutsal kitap oldu. Ancak temel gerçek değişmedi: Turing-tamamlanmış kod her zaman yaratıcılarının öngörmediği hatalar içerebilir. Bu Ethereum'da bir kusur değil. Bu matematiğin bir sonucu.

Turing tamamlama

Bitcoin'in kısıtlamaları azalıyor: Taproot ve BitVM

Bitcoin için Turing tamamlama ve Turing tamamlamama arasındaki çizgi eskisi kadar keskin değil.

Taproot, Kasım 2021'de piyasaya sürüldü ve Bitcoin Script'in yapabileceklerini genişletti. Daha karmaşık koşullu harcama, Schnorr imzaları aracılığıyla daha iyi gizlilik, bir işlemin koşullarını yürütülene kadar gizleyen Merkelleştirilmiş Soyut Sözdizimi Ağaçları. Hala Turing tamamlama özelliğine sahip değil. Ancak eskisinden daha ifade gücü yüksek.

2023'te önerilen BitVM daha da ileri gidiyor. Zincir dışında keyfi hesaplamalar yapıp sonucu Bitcoin üzerinde doğrulamayı sağlayan bir sistemi tanımlıyor. Şöyle düşünün: Gerçek hesaplama başka bir yerde gerçekleşiyor ve Bitcoin yalnızca birisi sonucu tartışırsa devreye giriyor. Teoride bu, Bitcoin'i, komut dosyası dilini değiştirmeden belirli kullanım durumları için pratik olarak Turing tamamlama özelliğine sahip hale getiriyor.

Bitcoin geliştiricileriyle BitVM hakkında konuştum ve tepkileri ilginçti. Yeteneklerinden heyecan duyuyorlar ama risklerden de korkuyorlar. İçlerinden biri bana şöyle dedi: "Bunu aceleye getirmeyeceğiz. İnsanlar bu sisteme trilyonlarca dolar yatırıyor. Daha gösterişli hale getirmeye çalışırken bozarsak, kimse bizi affetmez." Bu ihtiyatlılık, yarın Bitcoin DeFi'yi istiyorsanız sinir bozucu. Ancak sistemde trilyonlarca doları olan kişiyseniz, güven verici.

Her halükarda yönelim daha fazla ifade gücüne doğru. Taproot zaten mümkün olanı genişletti. BitVM bunu daha da genişletecek. Ancak Bitcoin'in Ethereum olmasını beklemeyin. Kültürler bunun için çok farklı.

Her yeni blockchain neden Turing tamamlama özelliğini seçiyor ki zaten?

İşte pratikte tartışmayı çözen şey: Artık kimse Turing-tamamlanmamış blok zincirleri geliştirmiyor. Solana, Cardano, Polkadot, Avalanche, BNB Chain. Hepsi Turing-tamamlanmış. Hepsi de rastgele programlar çalıştırabiliyor. Piyasa, programlanabilirliğin kazandığına karar verdi ve şimdi tek soru, Turing-tamamlanmış sistemleri nasıl daha hızlı, daha ucuz ve daha güvenli hale getireceğimiz.

Her zincir farklı tercihler yaptı. Ethereum, EVM ve Solidity'yi seçti (en büyük ekosistem, L1'de en yüksek ücretler). Solana, Rust kullanarak paralel yürütme için Sealevel'ı kurdu (hızlı ama geliştirilmesi daha zor). Cardano, Haskell ve biçimsel doğrulamayı seçti (matematiksel olarak titiz, daha yavaş benimsenme). Ancak hepsi Turing tamamlama özelliğine evet dedi çünkü hepsi akıllı sözleşmeler, DeFi, NFT'ler, DAO'lar ve özel mantık gerektiren her şeyi çalıştırmak istiyordu.

Güvenlik sorunları gerçek. DeFi saldırıları her yıl milyarlarca dolara mal oluyor. DAO saldırısı sadece başlangıçtı. Ancak sektör, programlanabilirliğin faydalarının risklerden daha ağır bastığı sonucuna vardı. Hatta kasıtlı olarak sınırlı bir zincir olan Bitcoin bile Taproot ve BitVM ile daha fazla ifade gücüne doğru ilerliyor.

Kripto dünyasında yeterince uzun süredir bulunduğum için her iki zincir türünü de kapsamlı bir şekilde kullandım. Bitcoin işlemlerim her seferinde beklendiği gibi onaylandı. Ayrıca, Solidity'nin kendinizi şaşırtacak kadar karmaşık kod yazmanıza olanak sağlaması sayesinde, tahmin edemediğim şeyler yapan Ethereum akıllı sözleşmeleri de devreye aldım. Her iki deneyim de bakış açımı şekillendirdi.

Tartışma, Turing tamamlama özelliğinin iyi mi kötü mü olduğuyla ilgili olmaktan çok, neye ihtiyacınız olduğuyla ilgili. Maksimum güvenlik ve öngörülebilirlik sağlayan bir dijital ödeme sistemi istiyorsanız, Bitcoin'in tasarımı mantıklı. Finansal uygulamalar, oyunlar, kimlik sistemleri veya özel mantık gerektiren herhangi bir şey geliştirmek istiyorsanız, Turing tamamlama özelliğine ihtiyacınız var. Kriptoyu şu anda ilgi çekici kılan şeylerin çoğu, 19 yaşında birinin riske girmeye değer olduğuna karar vermesi sayesinde mümkün oldu.

Uniswap, Aave veya herhangi bir DeFi protokolünü her kullandığımda bunu düşünüyorum. Yaptığım her takas, Turing-tamamlanmış bir sanal makinede çalışan bir koddur. Her işlem, kimsenin tahmin etmediği bir hatanın tüm sözleşmeyi tüketebileceği teorik riskini taşır. Yine de bu protokolleri kullanıyorum çünkü sağladığı fayda benim için riske değer. Ama riskin var olduğunu asla unutmuyorum. Ve Bitcoin'in farklı bir yol seçtiğini ve bu yolun kendine özgü bir bilgeliği olduğunu da asla unutmuyorum. Otomat asla paranızı çalmaz. Şef mutfağı yakabilir.

Sorusu olan?

Ethereum, Solana, Cardano, Polkadot, Avalanche, BNB Chain ve neredeyse tüm modern akıllı sözleşme platformları. Piyasa, DeFi, NFT`ler ve merkeziyetsiz uygulamalar için programlanabilirlik talep ettiğinden, Turing tamamlama özelliği olmadan yeni bir blok zinciri oluşturulmuyor.

Tam olarak değil, ancak yetenekleri artıyor. Taproot (2021) daha fazla koşullu mantık ekledi. BitVM (2023) zincir dışı hesaplama ve zincir içi doğrulama öneriyor. Bunlar, Bitcoin`i tamamen Turing tamamlama özelliğine sahip hale getirmeden daha programlanabilir kılıyor. Bitcoin topluluğu, radikal değişiklikler yerine dikkatli, kademeli iyileştirmeleri tercih ediyor.

2016 yılında 150 milyon dolarlık bir Ethereum fonu, yeniden giriş hatası nedeniyle boşaltıldı. Para çekme fonksiyonu, bakiyeyi güncellemeden önce ETH gönderiyordu. Saldırgan, sözleşme güncellenene kadar fonksiyonu özyinelemeli olarak çağırarak her seferinde daha fazla ETH çekti. Bu, yalnızca Ethereum`un dilinin özyinelemeli çağrıları desteklemesi sayesinde mümkün. Bitcoin`de ise imkansız çünkü Bitcoin Script özyinelemeli işlem yapamaz.

Turing, hiçbir algoritmanın rastgele bir programın durup durmayacağını veya sonsuza kadar çalışıp çalışmayacağını belirleyemeyeceğini kanıtladı. Bir blok zincirinde, sonsuz bir döngü tüm ağı dondururdu. Ethereum bunu gaz ile çözüyor: her hesaplama gaz maliyetine neden oluyor ve gaz bittiğinde işlem duruyor. Bitcoin ise bu sorunu tamamen ortadan kaldırıyor çünkü dili sonsuz döngüleri ifade edemiyor.

Tasarım gereği. Vitalik, Ethereum`un genel amaçlı bir bilgi işlem platformu olmasını istedi. Satoshi ise Bitcoin`in güvenli bir ödeme ağı olmasını istedi. Daha basit kodun istismar edilmesi daha zordur. Ethereum`un gücü DeFi ve NFT`leri yarattı. Bitcoin`in sınırlamaları, 150 milyon dolarlık DAO saldırısına yol açan türden hataları önledi. Her ikisi de farklı amaçlar için geçerli seçeneklerdir.

Turing-tamamlanmış bir sistem, yeterli zaman ve bellek verildiğinde herhangi bir bilgisayar programını çalıştırabilir. Döngüler yapabilir, kararlar alabilir ve veri depolayabilir. Dizüstü bilgisayarınız Turing-tamamlanmış bir sistemdir. Hesap makinesi ise değildir. Blockchain`de: Ethereum Turing-tamamlanmış bir sistemdir (herhangi bir akıllı sözleşmeyi çalıştırır). Bitcoin ise değildir (sadece belirli işlem türlerini işler). Bu kavram, Alan Turing`in 1936 tarihli makalesinden gelmektedir.

Ready to Get Started?

Create an account and start accepting payments – no contracts or KYC required. Or, contact us to design a custom package for your business.

Make first step

Always know what you pay

Integrated per-transaction pricing with no hidden fees

Start your integration

Set up Plisio swiftly in just 10 minutes.