Dasar
Spot
Perdagangkan kripto dengan bebas
Perdagangan Margin
Perbesar keuntungan Anda dengan leverage
Konversi & Investasi Otomatis
0 Fees
Perdagangkan dalam ukuran berapa pun tanpa biaya dan tanpa slippage
ETF
Dapatkan eksposur ke posisi leverage dengan mudah
Perdagangan Pre-Market
Perdagangkan token baru sebelum listing
Futures
Akses ribuan kontrak perpetual
TradFi
Emas
Satu platform aset tradisional global
Opsi
Hot
Perdagangkan Opsi Vanilla ala Eropa
Akun Terpadu
Memaksimalkan efisiensi modal Anda
Perdagangan Demo
Pengantar tentang Perdagangan Futures
Bersiap untuk perdagangan futures Anda
Acara Futures
Gabung acara & dapatkan hadiah
Perdagangan Demo
Gunakan dana virtual untuk merasakan perdagangan bebas risiko
Peluncuran
CandyDrop
Koleksi permen untuk mendapatkan airdrop
Launchpool
Staking cepat, dapatkan token baru yang potensial
HODLer Airdrop
Pegang GT dan dapatkan airdrop besar secara gratis
Launchpad
Jadi yang pertama untuk proyek token besar berikutnya
Poin Alpha
Perdagangkan aset on-chain, raih airdrop
Poin Futures
Dapatkan poin futures dan klaim hadiah airdrop
Investasi
Simple Earn
Dapatkan bunga dengan token yang menganggur
Investasi Otomatis
Investasi otomatis secara teratur
Investasi Ganda
Keuntungan dari volatilitas pasar
Soft Staking
Dapatkan hadiah dengan staking fleksibel
Pinjaman Kripto
0 Fees
Menjaminkan satu kripto untuk meminjam kripto lainnya
Pusat Peminjaman
Hub Peminjaman Terpadu
Full Chain Game 101: Kontrak yang Telah Dikompilasi
**Apa yang dimaksud dengan kontrak yang telah dikompilasi? **
Kontrak yang telah dikompilasi adalah metode kompromi yang digunakan dalam EVM untuk menyediakan fungsi pustaka yang lebih kompleks (biasanya digunakan untuk operasi kompleks seperti enkripsi dan hashing). Ini juga dapat dipahami sebagai kontrak khusus, dan fungsi ini tidak cocok untuk menulis opcode. Mereka cocok untuk kontrak yang sederhana tetapi sering digunakan, atau kontrak yang ditetapkan secara logis tetapi intensif secara komputasi. Kontrak yang telah dikompilasi diimplementasikan menggunakan kode klien node, dan karena tidak memerlukan EVM, kontrak berjalan dengan cepat. Ini juga lebih murah bagi pengembang daripada menggunakan fungsi yang berjalan langsung di EVM.
Seperti dapat dilihat dari kode berikut, fungsi run dalam kontrak evm.go memiliki dua cabang: cabang pertama adalah membuat instance parameter indeks melalui indeks yang telah dikompilasi untuk menentukan kontrak yang telah dikompilasi, dan cabang kedua adalah untuk menentukan kontrak yang telah dikompilasi. kontrak jika itu bukan kontrak yang telah dikompilasi EVM itu akan dipanggil.
// run menjalankan kontrak yang diberikan dan menangani menjalankan prekompilasi dengan fallback ke penerjemah kode byte. func run(evm *EVM, contract *Contract, input []byte, readOnly bool) ([]byte, error) { jika contract.CodeAddr != nil { precompiles := PrecompiledContractsHomestead if evm.ChainConfig().IsByzantium(evm.BlockNumber) { precompiles = PrecompiledContractsByzantium } if p := prekompilasi[*contract.CodeAddr]; p != nihil { kembalikan RunPrecompiledContract(p, masukan, kontrak) } } untuk _, interpreter := range evm.interpreters { if interpreter.CanRun(contract.Code) { if evm.interpreter != juru bahasa { // Pastikan penunjuk juru bahasa diatur kembali // ke nilai saat ini saat kembali. tunda func(i Penerjemah) { evm.interpreter = i }(evm.interpreter) evm.interpreter = penerjemah } return interpreter.Run(contract, input, readOnly) } } mengembalikan nihil, ErrNoCompatibleInterpreter }
Jika dinyatakan secara grafis, logika spesifiknya adalah sebagai berikut:
Jadi, di manakah hambatan dari kontrak yang telah dikompilasi sebelumnya?
Ethereum saat ini memiliki delapan kontrak yang telah dikompilasi:
Anda dapat melihat bahwa kontrak terkompilasi pertama hingga keempat menyediakan tanda tangan dasar, hash, dan fungsi enkripsi lainnya, dan kontrak kelima hingga kedelapan menyediakan operasi kurva eliptik, yang terkait dengan zk-snark.
Jadi pertanyaannya adalah, mengapa prekompilasi Ethereum hanya mendukung delapan kontrak yang telah dikompilasi? Bukankah kontrak yang telah dikompilasi mengurangi konsumsi gas? Dan mengapa tidak langsung menanamkan ECS (kerangka dari keseluruhan rantai permainan) ke dalam kontrak Ethereum yang telah dikompilasi sebelumnya?
Sebenarnya, ada tiga alasan utama:
Pertama-tama, kode kontrak yang telah dikompilasi perlu diintegrasikan ke dalam kode node klien, yang meningkatkan kompleksitas klien. Kedua, node verifikasi dapat menyaring perhitungan kontrak yang telah dikompilasi untuk alasan keamanan, sehingga sebagian besar permintaan untuk kontrak yang telah dikompilasi diselesaikan oleh node penuh. Saat ini, hanya ada 4000-6000 node penuh Ethereum di dunia, dan Ada 500.000 verifikasi node, yang memang jauh lebih terpusat daripada kontrak yang tidak dikompilasi sebelumnya.
Dukungan untuk kontrak yang telah dikompilasi memerlukan proses EIP. Sebagai contoh: EIP-196 menambahkan dua kontrak yang telah dikompilasi, ECADD() dan ECMUL(), pada kurva alt_bn128. EIP-197 menambahkan fungsi Pairing pada kurva alt_bn128. Pada dasarnya, ini untuk membuat privasi tersedia di Ethereum untuk mendapatkan dukungan, dan seluruh proses EIP panjang dan elegan, dan menunggu EIP berlalu bukanlah masalah yang realistis.
Ini tidak banyak untuk dijelaskan, ini sangat intuitif.
Peran apa yang dimainkan oleh kontrak yang telah dikompilasi di seluruh permainan berantai?
Kontrak yang telah dikompilasi melewatkan EVM dan mengeksekusi langsung melalui node, yang dapat meningkatkan efisiensi komputasi, tetapi pada saat yang sama mengurangi tingkat desentralisasi seluruh rantai. Prekompilasi logika inti dari game yang sering digunakan dapat mengoptimalkan performa game tersebut. Jenis permainan yang berbeda memiliki logika kunci yang berbeda. Oleh karena itu, untuk rantai khusus dari jenis permainan tertentu, desain prakompilasinya dapat sangat mengoptimalkan kebutuhan jenis permainan ini. Selama proses iterasi game, kombinasi kontrak terkompilasi yang paling efisien akan dioptimalkan secara bertahap.