Web3 geliştiricileri için zorunlu ders: akıllı sözleşmeler dili kapsamlı analizi

Web3 geliştiricilerin kendini geliştirmesi — akıllı sözleşmeler dili

Temel Tanıtım

Akıllı sözleşmeler, bir blockchain platformunda çalışan otomatik yürütme protokolleridir. Bu, sözleşmenin taraflarının aracı veya güvenilir bir üçüncü tarafa ihtiyaç duymadan doğrudan güvenilir işlemler gerçekleştirmelerini sağlar. Bu işlemler izlenebilir ve geri alınamaz. Akıllı sözleşmeler, kod fonksiyonları içerir ve diğer sözleşmelerle etkileşimde bulunabilir. Önceden tanımlanmış koşullar yerine getirildiğinde, akıllı sözleşme, sözleşmede belirtilen kod fonksiyonunu otomatik olarak yürütür.

Akıllı sözleşmeler konsepti, bilgisayar bilimcisi Nick Szabo tarafından 1990'lı yıllarda ortaya atılmıştır, ancak akıllı sözleşmelerin geniş kapsamlı uygulanması, ancak Ethereum blok zincirinin ortaya çıkmasıyla mümkün olmuştur. Ethereum 2015 yılında piyasaya sürüldü ve akıllı sözleşmelerin dağıtımını ve yürütülmesini destekliyor. Bitcoin'in esasen kripto para basit işlemleri için kullanılmasıyla farklı olarak, Ethereum platformunda merkeziyetsiz uygulamalar inşa etmek için Turing tam programlama dili kullanma imkanı sunarak ikinci nesil blok zinciri olarak adlandırılmıştır.

Akıllı sözleşmeler dili, akıllı sözleşmeleri yazmak için kullanılan bir programlama dilidir ve byte koduna derlendikten sonra blockchain akıllı sözleşme platformunun sanal makinesinde çalıştırılır, böylece belirlenen mantığı gerçekleştiren kodu sağlar. Bir akıllı sözleşmeler dilinin, geliştiricilerin sözleşme kurallarını güvenli ve verimli bir şekilde ifade etmelerini sağlaması ve genellikle blockchain işlemlerini ve durumlarını işlemek için bir dizi araç ve soyutlama sunması gerekir.

Web3 Geliştiricilerinin Kendini Geliştirmesi - akıllı sözleşmeler dili

akıllı sözleşmeler dili

Akıllı sözleşme geliştiricilerinin çoğu Ethereum ve EVM uyumlu blok zincirlerinde geliştirme yaparken, Solana EVM uyumlu olmayan blok zincirleri ekosisteminde en fazla geliştiriciye sahipken, Move ise blok zinciri akıllı sözleşmelerini güvenli bir şekilde geliştirmek için özel olarak inşa edilmiştir.

Her ne kadar TON/FunC, Cardano/Plutus, ICP/Motoko, Flow/Cadence, Starknet/Cairo gibi özel akıllı sözleşmeler dili olan birçok diğer kamu blok zinciri bulunsa da, bu durum fazla parçalıdır.

Bu nedenle bu makalede akıllı sözleşmeler dili EVM, Solana ve Move sistemlerine göre sınıflandırılarak tanıtılacaktır.

EVM sistemi

EVM, Ethereum'un çekirdeğidir ve akıllı sözleşmeleri çalıştırmak ve işlemleri işlemekten sorumludur. Ethereum protokolü, EVM üzerinde çalışan bir bayt kodu tanımlar ve bunun üzerine Yul ve Yul+ gibi ara diller inşa eder; ara dilin üzerine ise Solidity/Vyper/Fe gibi yüksek seviyeli diller inşa edilmiştir. Yüksek seviyeli diller, ön uç kullanıcılarının akıllı sözleşmelerin geliştirilme zorluğunu azaltmalarına yöneliktir. Çok katmanlı bir yapının avantajı, ara dilin hem makine diline çevrilmesi hem de tüm program optimizasyonu için uygun olmasıdır; manuel kontrol, biçimsel doğrulama gibi kontrolleri kolaylaştırır. Ancak, katman sayısı arttıkça güvenilir bir şekilde kanıt sağlama maliyeti de artar; her katmanın kendi doğrulamasını yapması gerekir. Elbette, daha alt seviyedeki diller daha basit olduğundan, doğrulama maliyetleri de daha düşük olacaktır.

Ethereum ve EVM uyumlu blok zincirlerinde, geliştiriciler farklı yüksek düzeyde programlama dilleri kullanabilir. Şu anda en popüler ve en iyi bakılan diller Solidity ve Vyper'dır, ayrıca Yul, Yul+, Fe ve Huff'ı da seçebilirler.

Solidity, ilk olarak Ethereum CTO'su Gavin Wood tarafından 2014 yılında önerilmiştir ve daha sonra Christian Reitwiessner liderliğindeki Ethereum ekibi tarafından geliştirilmiştir. Solidity, nesne yönelimli bir programlama dili olarak C++, Python ve JavaScript'ten etkilenmiş ve EVM için özel olarak tasarlanmıştır. Solidity, kod tekrarını sağlamak için akıllı sözleşmeleri sınıf nesneleri olarak görmekte ve çoklu kalıtım kullanmaktadır. Özellikle, Solidity, sözleşmeleriyle etkileşimde bulunmak için bir uygulama ikili arayüzü (ABI) standardı belirlemiştir. Şu anda, Solidity ABI, EVM DSL'nin gerçek standardı olarak kabul edilmektedir.

Vyper, Ethereum'un kurucularından biri olan Vitalik Buterin'in ekibi tarafından geliştirilmiştir ve 2017'de piyasaya sürülen Solidity için bir alternatif olarak tasarlanmıştır. Vyper, akıllı sözleşmelere yönelik, Python'a benzer bir programlama dilidir ve EVM için tasarlanmıştır. Vyper, güvenlik, okunabilirlik, denetleme yeteneği ve Gas verimliliği açısından optimize edilmiştir. Vyper, nesne yönelimli bir modeli benimsemez ve yerleşik assembler kullanılamaz.

Yul, yüksek düzeyde kontrol akışı ve çok sayıda soyutlama sunan bir derleyici dilidir ve Solidity araç zincirinin bir parçasıdır. Yul'daki çoğu işlev, Solidity'de iç içe geçmiş derleme blokları olarak sunulur, Solidity'nin desteklemediği işlevleri kullanabilir ve depolama, bellek ve calldata'yı özelleştirebilir. Yul+, Yul'un bir uzantısıdır ve Yul üzerinde deneysel bir yükseltme olarak düşünülebilir.

Fe, 2021 Ocak ayında piyasaya sürülen Rust'a benzer bir yüksek seviyeli dildir. Fe, nesne yönelimli bir modeli kullanmaz, bunun yerine modül tabanlı bir sistem aracılığıyla kodu yeniden kullanır; modül içinde değişkenler, türler ve fonksiyonlar tanımlanabilir, Rust'a benzer bir şekilde içe aktarılabilir.

Huff, manuel yığın kontrolü ve EVM talimat setine minimum soyutlama ile bir derleme dilidir. "#include" talimatı aracılığıyla, derleme sırasında herhangi bir dahil edilen Huff dosyası çözümlenebilir ve böylece kodun yeniden kullanımı sağlanır.

Ethereum üzerinde, Solidity tabanlı akıllı sözleşmeler büyük bir çoğunluğu oluşturarak yaklaşık %90'ını temsil etmektedir; bu, ikinci sıradaki Vyper'dan on kat daha fazladır. Fee ise daha geç bir başlangıç yaptığı için, geliştiriciler tarafından nadiren kullanılmaktadır. Yul ve Yul+ genellikle Solidity'nin iç içe yerleştirilmiş derleme blokları olarak, EVM talimat setine düşük seviyeli erişim sağlar ve genellikle Gas optimizasyonu için kullanılır. Huff, Yul/Yul+'dan daha düşük seviyededir ve yığını manuel olarak işleyebilir ve EVM talimatlarını çağırabilir; genellikle Gas sınırı optimizasyonu için kullanılır.

Web3 geliştiricilerinin kişisel gelişimi - akıllı sözleşmeler dili

Solana sistemi

Solana, PoH (Tarih Kanıtı) mekanizması ve düşük gecikme süresi ile yüksek işlem hacmi sayesinde tanınmaktadır ve en ünlü "Ethereum katili" olarak bilinenlerden biridir. Solana, ayrıca son bir yıl içinde piyasa değeri ve ekosistem gelişimi en hızlı olan kamu blok zincirlerinden biridir ve geliştirici topluluğunun önemli ölçüde büyümesine katkıda bulunmuştur.

Solana, akıllı sözleşmeleri zincir üzerindeki programlar (Program) olarak adlandırır ve esas olarak Rust dilinde yazılmıştır, ancak diğer Rust dilini kullanan kamu blok zincirlerinden farklı olarak, Solana WASM çalışma zamanını kullanmaz; Solana'nın kendine özgü sanal makinesi SVM ve SBF bayt kodu vardır.

SVM, Solana ağı üzerinde akıllı sözleşmeler çalıştırmak ve işlemleri işlemek için bir runtime'dır, ana bileşen Sealevel'dir. Sealevel, birden fazla akıllı sözleşmenin aynı anda çalışmasına izin vererek birbirlerinin performansını etkilemeden, Solana runtime'ında paralel işleme gerçekleştirir. Solana'nın akıllı sözleşmeleri, çalışma zamanında hangi durumların (hesapların) okunacağı veya yazılacağı belirlenir, bu da çakışma olmadan işlemlerin paralel olarak gerçekleştirilmesini sağlar ve veri tutarlılığını garanti eder.

SBF, eBPF'ye dayanıyor; eBPF, BPF'nin (Berkeley Packet Filter, Berkeley Paket Filtreleyici) bir öncüsüdür ve başlangıçta ağ veri paketlerinin verimli bir şekilde filtrelenmesi için kullanılmıştır. eBPF, daha zengin bir komut seti sunarak, kaynak kodunu değiştirmeden işletim sistemi çekirdeğinde dinamik müdahale ve davranışını değiştirme olanağı sağlar; yüksek performans, güvenlik ve taşınabilirlik sunar. SBF, eBPF'ye kıyasla, programın belirli bir komut sayısı içinde sona ermesini doğrulamak için bir özel doğrulayıcı kullanır (bu da ünlü durma problemi), ayrıca komutların doğruluğunu ve sınır dışı atlamaların olup olmadığını kontrol eder. Doğrulayıcının yanı sıra, akıllı sözleşmeleri derlemekle ilgili bazı eBPF detaylarını da çözmektedir.

LLVM (Düşük Seviye Sanal Makine), modern bir derleyici mimarisi ve araç zinciridir, derleyiciler Rust'ı ara dil LLVM IR'ye çevirebilir, ardından LLVM IR, arka uç tarafından hedef platformun eBPF'sine çevrilir. Teorik olarak, LLVM IR'ye derlenmeyi destekleyen programlama dilleri, Solana akıllı sözleşmeleri yazmak için kullanılabilir, ancak pratikte Solana Labs, Rust ve eBPF LLVM arka ucunda birçok değişiklik yapmıştır; bu değişikliklerin bazıları esasen amiral gemisi (Rust ve LLVM) tarafından mevcut değildir. Solana sözleşme geliştirme şu anda yalnızca Rust ve Solang'ı desteklemektedir.

Rust, Mozilla tarafından geliştirilen ve 2011'de piyasaya sürülen, C++ ile benzer bir sözdizimine sahip, performans ve güvenlik, özellikle güvenlik için tasarlanmış genel bir statik derleme dilidir ve yalnızca akıllı sözleşmeler programlarıyla sınırlı değildir. Solidity ile karşılaştırıldığında, Rust düşük seviyeli (low-level), çoklu paradigmaya sahip bir programlama dilidir, yüksek performanslı ve bellek güvenliğidir. Rust'ın resmi derleyicisi rustc'dir, rustc Rust kaynak kodunu sözdizimsel analiz, anlamsal analiz ve nihayetinde kodu LLVM IR'ye derleme işlemlerini gerçekleştirir.

Solang, Hyperlege Labs tarafından geliştirilen ve 2023'te piyasaya sürülen, Solana ve Polkadot için LLVM mimarisine dayalı bir Solidity derleyicisidir. Solidity kullanarak akıllı sözleşmeler yazmayı destekler, ancak gerçek sözdizimi, Solana ve Polkadot'un mimarisiyle uyumlu hale getirmek için bazı değişiklikler yapılmıştır. Solang'ın amacı, geliştiricilerin Solana veya Polkadot'a geçişini kolaylaştırmak ve Solidity geliştirme alanını genişletmektir.

Rust, Solana'nın resmi olarak desteklediği ana dildir ve daha güçlü bir istikrar sağlar; Solang'ın ana avantajı, Solidity dili ile uyumluluğudur.

Web3 Geliştiricilerinin Kendi Kendine Eğitimi - akıllı sözleşmeler dili

Move sistemi

Move, 2019 yılında piyasaya sürülen yeni bir akıllı sözleşmeler programlama dilidir ve başlangıçta Meta'nın Diem blok zinciri projesi için geliştirilmiştir. Move, varlıklar ve işlemlerle ilgili güvenlik sorunlarını çözmeyi amaçlamakta, varlıkların ve işlemlerin kesin bir şekilde tanımlanmasını ve kontrol edilmesini sağlamaktadır. Dilin özellikleri şunlardır:

  1. Birinci Sınıf Kaynak Türü Koruması (Frist Class Resources): Birinci sınıf kaynak türü öncelikle bir değişken türüdür ve bu türdeki değişkenler şu şekilde tanımlanır: kopyalanamaz; örtük olarak yok edilemez; yalnızca farklı program adreslerinde "Move" edilebilir;

  2. Esneklik: Move bayt kodu doğrudan yürütülebilir veya diğer yayımlanmış Modüllerin kodlarını çağırabilir, bir işlemde birden fazla programı çağırabilir ve bir işlemde birden fazla kişiye para transferini esnek bir şekilde gerçekleştirebilir;

  3. Güvenlik, doğrulanabilirlik: Move kodlama sistemi, kaynaklara hedeflenmiş güvenlik koruması sağlar. Move kaynakları kopyalanamaz, yeniden kullanılamaz veya yok edilemez. Bir kaynak türü yalnızca türünü tanımlayan modül tarafından oluşturulabilir veya yok edilebilir. Move sanal makinesi, statik bayt kodu doğrulaması yapacak ve bayt kodu doğrulamasını geçemeyen programların çalışmasını reddedecektir, böylece güvenliğini sağlayacaktır.

Diem projesi dağıldıktan sonra, kurucu ekip Aptos ve Sui'yi kurarak Move'u merkezi akıllı sözleşmeler dili olarak benimsedi. Aptos, Diem Move'u (Core Move) devraldı, Sui ise kendi özelleştirilmiş versiyonu Sui Move ile akıllı sözleşmelerini yazdı.

Move'de, her akıllı sözleşme bir modüldür ve fonksiyonlar ile yapı tanımları içerir, yapılar fonksiyon içinde örneklendirilir ve diğer modüllere fonksiyon çağrıları ile iletilebilir. Sui Move, Core Move'a kıyasla nesne tabanlı bir veri modeli kullanır ve Sui'de üç farklı nesne türü bulunmaktadır: sahip nesneleri, paylaşılan nesneler ve değiştirilemez nesneler. Sui'nin paralelleştirme stratejisi Solana ile benzerdir, işlemler hangi nesnelerin işleme alınacağını belirtmelidir, bu tasarım Sui'nin eşzamanlı işlemleri etkili bir şekilde yönetmesini sağlar ve geleneksel blok zincirlerinin gerektirdiği küresel sıralama olmaksızın paralel işleme yeteneği sunar.

Move'un derleyicisi, doğrulayıcısı ve sanal makinesi tamamen sıfırdan tasarlanmıştır. Bunlar arasında doğrulayıcı, Move'un kaynak merkezli programlama modelini sürdürmek için kullanılan temel güvenlik mekanizmalarından biridir. Move'un doğrulayıcısı, Move bayt kodunu analiz eden ve gerekli tür, bellek ve kaynak güvenliği kurallarına uyup uymadığını belirleyen bir statik analiz aracıdır; zincire yüklenen tüm modüllerin doğrulayıcıdan geçmesi gerekmektedir.

Solidity gibi dillere kıyasla, Move, biçimsel doğrulamaya dost bir dildir; örneğin, dinamik atama (dynamic dispatch) gibi özellikleri desteklemez, tüm sözleşme yolları derleme zamanında belirlenebilir, böylece sözleşmenin yürütülmesi sırasında hangi fonksiyonların yürütüleceği belirlenmek zorunda kalmaz, bu da analiz ve doğrulama için tam bir potansiyel sunar.

Move'un akıllı sözleşmeler için kullanılan bir biçimsel doğrulama aracı vardır ve bu araç Move Prover olarak adlandırılmaktadır. Geliştiricilerin akıllı sözleşmeler için doğrulama koşulları (assert biçiminde) yazmaları gerekmektedir, Move Prover bu doğrulama koşullarını arka planda SMT formüllerine dönüştürür ve ardından SMT çözücüsü ile kontrol eder.

Web3 Geliştiricilerin Kendi Kendine Eğitimi - akıllı sözleşmeler dili

akıllı sözleşmeler geliştirme araçları

Web3'e girmek veya Ethereum ve diğer EVM uyumlu blok zincirleri için akıllı sözleşme geliştiricisi olmak isteyenler için Solidity en iyi seçimdir. Ayrıca, Solidity'nin popülaritesi sayesinde geliştirme araçları da daha olgun hale gelmiştir, örnek olarak şunlar verilebilir:

  • Hardhat, Ethereum uygulamalarını derlemek, dağıtmak, test etmek ve hata ayıklamak için bir geliştirme ortamıdır. Geliştiricilerin akıllı sözleşmeler ve DApp'ler oluşturma sürecindeki yerleşik tekrarlayan görevleri yönetmelerine ve otomatikleştirmelerine yardımcı olur ve bu iş akışı etrafında daha fazla özellik eklemeyi kolaylaştırır;

  • OpenZeppelin, güvenli akıllı sözleşmeler inşa etmek için Solidity ile yazılmış açık kaynak OpenZeppelin Sözleşmeleri sağlamaktadır. OpenZeppelin Sözleşmeleri,

View Original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Reward
  • 3
  • Share
Comment
0/400
ApeWithNoFearvip
· 19h ago
akıllı sözleşmeler搞不定 这可咋混!
View OriginalReply0
ImpermanentLossFanvip
· 19h ago
akıllı sözleşmeler boğa p个毛...aslında sadece bir kod bloğu
View OriginalReply0
0xOverleveragedvip
· 19h ago
Sanal coin oynamıyorum, sadece vadeli işlemler yapıyorum, yüksek kaldıraç daha ilginç.
View OriginalReply0
Trade Crypto Anywhere Anytime
qrCode
Scan to download Gate app
Community
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)