Keterampilan Pengembangan Kontrak yang Dipelajari dari Kode Uniswap
Baru-baru ini, saat menulis tutorial pengembangan bursa terdesentralisasi, saya merujuk pada implementasi kode Uniswap V3 dan mempelajari banyak poin berharga. Sebagai pengembang yang pertama kali mencoba mengembangkan kontrak Defi, teknik-teknik ini akan sangat membantu bagi pemula yang ingin belajar pengembangan kontrak.
Alamat penyebaran kontrak yang dapat diprediksi
Alamat yang diperoleh dari penyebaran kontrak biasanya terlihat acak karena terkait dengan nonce. Namun, dalam beberapa kasus, kita perlu menyimpulkan alamat kontrak melalui pasangan transaksi dan informasi terkait. Uniswap menggunakan metode CREATE2 untuk membuat kontrak, menambahkan parameter salt, sehingga alamat kontrak yang dihasilkan dapat diprediksi. Logika pembuatan alamat adalah: alamat baru = hash("0xFF", alamat pencipta, salt, initcode).
Memanfaatkan Fungsi Callback
Dalam beberapa skenario, panggilan dan callback antara kontrak sangat berguna. Sebagai contoh, dalam metode swap Uniswap, akan ada callback swapCallback yang menerima jumlah Token yang dibutuhkan. Pihak yang memanggil harus mengirimkan Token yang diperlukan ke dalam kolam dalam callback, untuk memastikan integritas dan keamanan logika transaksi secara keseluruhan.
Menggunakan pengecualian untuk menyampaikan informasi, memperkirakan transaksi dengan try catch
Dalam kontrak Quoter Uniswap, metode swap dieksekusi dalam blok try catch untuk memperkirakan transaksi. Dengan melemparkan kesalahan khusus dalam fungsi callback dan kemudian menangkap serta menguraikan informasi kesalahan, fungsi perkiraan transaksi diimplementasikan tanpa perlu mengubah metode swap khusus untuk kebutuhan perkiraan.
Solusi Masalah Presisi Angka Besar
Logika perhitungan dalam Uniswap sering menggunakan operasi pergeseran kiri 96 bit (setara dengan dikalikan 2^96). Metode ini menjamin bahwa transaksi normal tidak mengalami overflow, sekaligus juga memastikan akurasi. Meskipun secara teori masih ada sedikit kehilangan akurasi, namun dalam aplikasi praktis hal ini dapat diterima.
Perhitungan Pendapatan Mekanisme Share
Untuk mencatat pendapatan biaya transaksi LP dengan efisien, Uniswap mengadopsi metode yang mirip dengan sistem saham. Dengan mencatat total biaya transaksi dan biaya yang harus dialokasikan untuk setiap unit likuiditas, LP hanya perlu menghitung biaya yang dapat diambil berdasarkan likuiditas yang dimiliki saat menarik, yang secara signifikan mengurangi konsumsi gas.
Penggunaan Informasi Off-Chain yang Rasional
Mengingat biaya penyimpanan di blockchain yang tinggi, tidak semua informasi perlu disimpan di blockchain atau diambil dari blockchain. Misalnya, daftar kolam transaksi, informasi kolam, dll. dapat disimpan di database tradisional dan disinkronkan secara berkala dengan data di blockchain. Metode ini dapat meningkatkan efisiensi dan mengurangi biaya.
Pemisahan Kontrak dan Penggunaan Kembali Kontrak Standar
Sebuah proyek mungkin mencakup beberapa kontrak yang telah diterapkan secara nyata, bahkan jika hanya satu kontrak yang diterapkan, kode dapat dipecah menjadi beberapa kontrak untuk pemeliharaan melalui pewarisan. Sementara itu, memanfaatkan kontrak standar yang ada (seperti ERC721) dapat meningkatkan efisiensi pengembangan dan memperkuat keandalan kontrak.
Kesimpulan
Praktik adalah metode belajar terbaik. Dengan mencoba untuk mengimplementasikan versi sederhana dari bursa terdesentralisasi, kita dapat memahami dengan lebih mendalam tentang implementasi kode Uniswap dan memperoleh pengalaman berharga dari proyek nyata. Bagi para pengembang yang tertarik untuk belajar lebih dalam tentang pengembangan proyek Web3 dan DeFi, mengikuti kursus praktis akan menjadi pilihan yang sangat baik.
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
12 Suka
Hadiah
12
6
Bagikan
Komentar
0/400
GateUser-9ad11037
· 9jam yang lalu
Pemula masukkan posisi tutorial齁
Lihat AsliBalas0
WalletManager
· 9jam yang lalu
Audit yang ketat sebelum kontrak adalah dasar dari proyek... belajar sejenak
Lihat AsliBalas0
SmartContractRebel
· 9jam yang lalu
Pengembang telah hidup dari keuntungan lama.
Lihat AsliBalas0
GateUser-a606bf0c
· 9jam yang lalu
Begini saja? Terlalu dasar ya.
Lihat AsliBalas0
BlockchainBouncer
· 9jam yang lalu
Meluncur sangat cepat, tidak bisa mengerti.
Lihat AsliBalas0
GasGuzzler
· 10jam yang lalu
Bicara sepuluh kali pun saya tidak akan bisa menulis.
Pengungkapan Kode Uniswap: 7 Teknik Pengembangan smart contract yang Dijelaskan Secara Detail
Keterampilan Pengembangan Kontrak yang Dipelajari dari Kode Uniswap
Baru-baru ini, saat menulis tutorial pengembangan bursa terdesentralisasi, saya merujuk pada implementasi kode Uniswap V3 dan mempelajari banyak poin berharga. Sebagai pengembang yang pertama kali mencoba mengembangkan kontrak Defi, teknik-teknik ini akan sangat membantu bagi pemula yang ingin belajar pengembangan kontrak.
Alamat penyebaran kontrak yang dapat diprediksi
Alamat yang diperoleh dari penyebaran kontrak biasanya terlihat acak karena terkait dengan nonce. Namun, dalam beberapa kasus, kita perlu menyimpulkan alamat kontrak melalui pasangan transaksi dan informasi terkait. Uniswap menggunakan metode CREATE2 untuk membuat kontrak, menambahkan parameter salt, sehingga alamat kontrak yang dihasilkan dapat diprediksi. Logika pembuatan alamat adalah: alamat baru = hash("0xFF", alamat pencipta, salt, initcode).
Memanfaatkan Fungsi Callback
Dalam beberapa skenario, panggilan dan callback antara kontrak sangat berguna. Sebagai contoh, dalam metode swap Uniswap, akan ada callback swapCallback yang menerima jumlah Token yang dibutuhkan. Pihak yang memanggil harus mengirimkan Token yang diperlukan ke dalam kolam dalam callback, untuk memastikan integritas dan keamanan logika transaksi secara keseluruhan.
Menggunakan pengecualian untuk menyampaikan informasi, memperkirakan transaksi dengan try catch
Dalam kontrak Quoter Uniswap, metode swap dieksekusi dalam blok try catch untuk memperkirakan transaksi. Dengan melemparkan kesalahan khusus dalam fungsi callback dan kemudian menangkap serta menguraikan informasi kesalahan, fungsi perkiraan transaksi diimplementasikan tanpa perlu mengubah metode swap khusus untuk kebutuhan perkiraan.
Solusi Masalah Presisi Angka Besar
Logika perhitungan dalam Uniswap sering menggunakan operasi pergeseran kiri 96 bit (setara dengan dikalikan 2^96). Metode ini menjamin bahwa transaksi normal tidak mengalami overflow, sekaligus juga memastikan akurasi. Meskipun secara teori masih ada sedikit kehilangan akurasi, namun dalam aplikasi praktis hal ini dapat diterima.
Perhitungan Pendapatan Mekanisme Share
Untuk mencatat pendapatan biaya transaksi LP dengan efisien, Uniswap mengadopsi metode yang mirip dengan sistem saham. Dengan mencatat total biaya transaksi dan biaya yang harus dialokasikan untuk setiap unit likuiditas, LP hanya perlu menghitung biaya yang dapat diambil berdasarkan likuiditas yang dimiliki saat menarik, yang secara signifikan mengurangi konsumsi gas.
Penggunaan Informasi Off-Chain yang Rasional
Mengingat biaya penyimpanan di blockchain yang tinggi, tidak semua informasi perlu disimpan di blockchain atau diambil dari blockchain. Misalnya, daftar kolam transaksi, informasi kolam, dll. dapat disimpan di database tradisional dan disinkronkan secara berkala dengan data di blockchain. Metode ini dapat meningkatkan efisiensi dan mengurangi biaya.
Pemisahan Kontrak dan Penggunaan Kembali Kontrak Standar
Sebuah proyek mungkin mencakup beberapa kontrak yang telah diterapkan secara nyata, bahkan jika hanya satu kontrak yang diterapkan, kode dapat dipecah menjadi beberapa kontrak untuk pemeliharaan melalui pewarisan. Sementara itu, memanfaatkan kontrak standar yang ada (seperti ERC721) dapat meningkatkan efisiensi pengembangan dan memperkuat keandalan kontrak.
Kesimpulan
Praktik adalah metode belajar terbaik. Dengan mencoba untuk mengimplementasikan versi sederhana dari bursa terdesentralisasi, kita dapat memahami dengan lebih mendalam tentang implementasi kode Uniswap dan memperoleh pengalaman berharga dari proyek nyata. Bagi para pengembang yang tertarik untuk belajar lebih dalam tentang pengembangan proyek Web3 dan DeFi, mengikuti kursus praktis akan menjadi pilihan yang sangat baik.