Tam Zincir Oyunu 101: Önceden Derlenmiş Sözleşmeler

**Önceden derlenmiş sözleşme nedir? **

Önceden derlenmiş sözleşmeler, EVM'de daha karmaşık kitaplık işlevleri sağlamak için kullanılan bir uzlaşma yöntemidir (genellikle şifreleme ve hashing gibi karmaşık işlemler için kullanılır).Ayrıca özel bir sözleşme olarak da anlaşılabilir ve bu işlevler opcode yazmak için uygun değildir. Basit ancak sık kullanılan sözleşmeler veya mantıksal olarak sabit ancak hesaplama açısından yoğun sözleşmeler için uygundurlar. Önceden derlenmiş sözleşmeler, düğüm istemci kodu kullanılarak uygulanır ve bir EVM gerektirmedikleri için hızlı çalışırlar. Ayrıca geliştirici için doğrudan EVM'de çalışan işlevleri kullanmaktan daha ucuzdur.

Aşağıdaki koddan da görülebileceği gibi, evm.go sözleşmesindeki run işlevinin iki dalı vardır: ilk dal, önceden derlenmiş sözleşmeyi belirtmek için önceden derlenmiş dizin yoluyla index parametresini somutlaştırır ve ikinci dal, önceden derlenmiş olanı belirtir. sözleşme önceden derlenmiş bir sözleşme değilse Evm çağrılır.

// run, verilen sözleşmeyi çalıştırır ve bayt kodu yorumlayıcısına bir geri dönüşle birlikte ön derlemelerin çalıştırılmasıyla ilgilenir. func run(evm *EVM, sözleşme *Sözleşme, giriş []bayt, salt okunur bool) ([]bayt, hata) { eğer sözleşme.CodeAddr != nil { ön derlemeler := PrecompiledContractsHomestead if evm.ChainConfig().IsByzantium(evm.BlockNumber) { precompiles = PrecompiledContractsByzantium } if p := ön derlemeler[*contract.CodeAddr]; p != sıfır { RunPrecompiledContract(p, girdi, sözleşme) döndürür } } _ için yorumlayıcı := aralık evm.interpreters { eğer yorumlayıcı.CanRun(sözleşme.Kod) { eğer evm.interpreter != yorumlayıcı { // Yorumlayıcı işaretçisinin geri ayarlandığından emin olun // dönüşte mevcut değerine. erteleme işlevi(i Tercüman) { evm.tercüman = ben }(evm.tercüman) evm.tercüman = tercüman } dönüş tercümanı.Çalıştır(sözleşme, girdi, salt okunur) } } sıfır döndür, ErrNoCompatibleInterpreter }

Grafik olarak ifade edilirse, belirli mantık aşağıdaki gibidir:

Tam Zincir Oyunu 101: Önceden Derlenmiş Sözleşme

Peki önceden derlenmiş sözleşmenin darboğazı nerede?

Ethereum'un şu anda sekiz önceden derlenmiş sözleşmesi var:

  1. ECRecover - İlgili adresi imza aracılığıyla kurtarın
  2. SHA256 - SHA256 karmasını hesapla
  3. RIPEMD160 - RIPEMD160 karmasını hesapla
  4. Kimlik - giriş verilerinin orijinal değerini döndürür
  5. ModExp - Modulo Üste Alma işlemini gerçekleştirir
  6. ECAdd - Eliptik Eğri Noktası Toplama
  7. ECMul - Eliptik Eğri Nokta Çarpımı
  8. ECPairing - eşleştirme işlemi, eliptik eğri noktalarının doğrulanması

Birinci ila dördüncü önceden derlenmiş sözleşmelerin temel imza, karma ve diğer şifreleme işlevlerini sağladığını ve beşinci ila sekizinci arasında zk-snark ile ilgili eliptik eğri işlemleri sağladığını görebilirsiniz.

Öyleyse soru şu ki, Ethereum ön derlemesi neden yalnızca sekiz önceden derlenmiş sözleşmeyi destekliyor? Önceden derlenmiş sözleşmeler gaz tüketimini azaltmıyor mu? Ve neden ECS'yi (tüm zincir oyunun çerçevesi) doğrudan Ethereum önceden derlenmiş sözleşmesine yerleştirmiyorsunuz?

Aslında, üç ana sebep vardır:

  1. Önceden derlenmiş sözleşmelere aşırı güven, tüm platformun yerelleşme derecesini azaltacaktır:

Her şeyden önce, önceden derlenmiş sözleşmenin kodunun, müşterinin karmaşıklığını artıran müşteri düğümü koduna entegre edilmesi gerekir. İkincisi, doğrulama düğümleri, güvenlik nedenleriyle önceden derlenmiş sözleşmelerin hesaplanmasını filtreleyebilir, bu nedenle önceden derlenmiş sözleşmelere yönelik isteklerin çoğu tam düğümler tarafından tamamlanır.Şu anda dünyada yalnızca 4000-6000 Ethereum tam düğümü vardır ve 500.000 doğrulama vardır. Önceden derlenmemiş sözleşmelerden gerçekten çok daha merkezi olan düğümler.

  1. Önceden derlenmiş sözleşmelerin eklenmesi ve değiştirilmesi, esnek bir şekilde geliştirilmesi kolay olmayan sert çatal yükseltmeleri gerektirir.

Önceden derlenmiş sözleşmelerin desteği, EIP sürecini gerektirir.Örneğin: EIP-196, alt_bn128 eğrisi üzerinde önceden derlenmiş iki sözleşme, ECADD() ve ECMUL() ekler. EIP-197, alt_bn128 eğrisine Eşleştirme işlevini ekler. Temel olarak, destek için Ethereum'da gizliliği sağlamak içindir ve tüm EIP süreci uzun ve zariftir ve EIP'nin geçmesini beklemek gerçekçi bir sorun değildir.

  1. Önceden derlenmiş sözleşmelerle etkileşim kurmak ve bunları birleştirmek zordur ve ölçeklenebilirlik zayıftır.

Bu açıklanacak pek bir şey değil, çok sezgisel.

Önceden derlenmiş sözleşme tüm zincir oyunda nasıl bir rol oynuyor?

Önceden derlenmiş sözleşmeler, EVM'yi atlar ve doğrudan düğümler aracılığıyla yürütülür; bu, bilgi işlem verimliliğini artırabilir, ancak aynı zamanda tüm zincirin merkezsizleşme derecesini azaltabilir. Sık kullanılan oyunların temel mantığının önceden derlenmesi, bu tür oyunların performansını optimize edebilir. Farklı oyun türleri farklı anahtar mantıklara sahiptir. Bu nedenle, belirli bir oyun türünün özel zinciri için önceden derlenmiş tasarımı, bu tür oyunların ihtiyaçlarını büyük ölçüde optimize edebilir. Oyun yineleme sürecinde, en verimli önceden derlenmiş sözleşme kombinasyonu kademeli olarak optimize edilecektir.

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
  • 1
  • Share
Comment
0/400
THULEBTCvip
· 2024-01-13 03:49
2024'TEN DA MOON'A 🌕
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)