Belakangan ini, saat berpartisipasi dalam proyek tutorial pengembangan bursa terdesentralisasi, saya belajar banyak teknik pengembangan kontrak yang berharga melalui penelitian implementasi kode Uniswap V3. Sebagai seorang pemula yang baru mengenal pengembangan kontrak Defi, teknik-teknik ini memberi saya banyak inspirasi, dan saya percaya ini juga akan bermanfaat bagi pemula lain yang ingin belajar tentang pengembangan kontrak.
Alamat Kontrak yang Dapat Diprediksi
Umumnya, alamat yang diperoleh saat menerapkan kontrak adalah alamat acak, tetapi dalam beberapa skenario, kita perlu dapat memprediksi alamat kontrak. Uniswap menggunakan metode CREATE2 untuk membuat kontrak, dengan menambahkan parameter salt, sehingga alamat kontrak yang dibuat dapat diprediksi. Ini sangat berguna dalam menentukan izin transaksi atau mendapatkan alamat kolam, dan sebagainya.
Menggunakan Fungsi Callback dengan Cerdik
Dalam beberapa skenario, saling memanggil kontrak sangat berguna. Misalnya di Uniswap, ketika memanggil metode swap dari kontrak UniswapV3Pool, ia akan memanggil kembali swapCallback, dengan jumlah Token yang sebenarnya dihitung yang diperlukan. Panggilan harus mentransfer Token ke UniswapV3Pool dalam callback, yang memastikan eksekusi dan keamanan metode swap.
Menggunakan pengecualian untuk menyampaikan informasi
Dalam kontrak Quoter Uniswap, metode swap dari UniswapV3Pool dibungkus dengan try-catch. Ini dilakukan untuk mensimulasikan swap guna memperkirakan Token yang dibutuhkan untuk transaksi, dengan menangkap kesalahan tertentu dan menganalisis informasi kesalahan untuk mendapatkan data yang diperlukan. Metode ini menghindari perlunya modifikasi khusus pada metode swap untuk memperkirakan transaksi, sehingga logika menjadi lebih sederhana.
Perhitungan angka besar menjamin akurasi
Uniswap melibatkan banyak perhitungan, untuk menghindari kehilangan presisi saat melakukan operasi pembagian, sering kali digunakan pergeseran kiri 96 bit ( yang setara dengan mengalikan 2^96). Dengan demikian, dalam situasi perdagangan normal tanpa overflow, dapat menjamin presisi perhitungan. Meskipun secara teori masih akan ada sedikit kehilangan presisi, tetapi sudah dapat diterima.
Cara Berbagi Menghitung Keuntungan
Untuk menghindari konsumsi Gas yang besar dengan mencatat biaya transaksi untuk setiap LP setiap kali transaksi, Uniswap menggunakan metode yang mirip dengan dividen saham. Hanya perlu mencatat total biaya dan biaya yang harus dibagikan per unit likuiditas, dan biaya yang harus diterima LP dapat dihitung berdasarkan likuiditas yang dimiliki saat pengambilan.
Penggabungan Data On-chain dan Off-chain
Tidak semua informasi perlu diambil dari rantai. Misalnya, daftar kolam perdagangan, informasi kolam, dan lain-lain dapat disimpan dalam database biasa dan disinkronkan secara berkala dari rantai. Transaksi kunci dilakukan di rantai, sementara informasi non-kunci dapat diperoleh dengan cara yang lebih efisien untuk meningkatkan kinerja dan efisiensi.
Pemisahan Kontrak dan Penggunaan Kembali Kontrak Standar
Proyek besar biasanya mencakup beberapa kontrak yang diterapkan secara nyata, bahkan jika hanya menerapkan satu kontrak, itu dapat dipisahkan menjadi beberapa kontrak melalui pewarisan untuk pemeliharaan. Pada saat yang sama, memanfaatkan kontrak standar yang ada ( seperti ERC721) dapat meningkatkan efisiensi pengembangan dan menyederhanakan manajemen.
Praktik adalah cara terbaik untuk belajar. Dengan secara langsung membangun versi sederhana dari pertukaran terdesentralisasi, tidak hanya dapat memahami dengan lebih mendalam implementasi kode Uniswap, tetapi juga dapat mempelajari lebih banyak poin pengetahuan dalam proyek nyata. Semoga berbagi pengalaman ini bermanfaat bagi perjalanan pengembangan kontrak Anda.
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.
14 Suka
Hadiah
14
7
Bagikan
Komentar
0/400
LiquidityOracle
· 08-02 23:11
Mengintegrasikan satu lagi artikel tentang cara trading cold rice untuk pemula
Lihat AsliBalas0
WhaleWatcher
· 08-02 19:29
Agak sulit dipahami, siapa yang bisa menjelaskan tentang create2
Lihat AsliBalas0
RetailTherapist
· 07-31 02:40
Mengirim ini lebih baik daripada membuat dex sendiri untuk Dianggap Bodoh
Lihat AsliBalas0
gas_guzzler
· 07-31 02:40
Prediksi Alamat ini membuat tertawa Santo Uniswap
Lihat AsliBalas0
DeFiGrayling
· 07-31 02:35
Tidak tahu harus berkata apa, ini lagi pelatihan yang menjebak pemula...
Lihat AsliBalas0
DEXRobinHood
· 07-31 02:35
DOGE yang dikatakan oleh sang Bapak adalah benar! Menghabiskan waktu di penjara bukanlah mimpi!
Lihat AsliBalas0
NightAirdropper
· 07-31 02:34
Bicara setengah hari tidak sebanding dengan Pinjaman Flash yang menarik~
Tujuh teknik untuk membantu Anda menguasai pengembangan smart contract
Tips dan Pengalaman dalam Pengembangan Kontrak
Belakangan ini, saat berpartisipasi dalam proyek tutorial pengembangan bursa terdesentralisasi, saya belajar banyak teknik pengembangan kontrak yang berharga melalui penelitian implementasi kode Uniswap V3. Sebagai seorang pemula yang baru mengenal pengembangan kontrak Defi, teknik-teknik ini memberi saya banyak inspirasi, dan saya percaya ini juga akan bermanfaat bagi pemula lain yang ingin belajar tentang pengembangan kontrak.
Alamat Kontrak yang Dapat Diprediksi
Umumnya, alamat yang diperoleh saat menerapkan kontrak adalah alamat acak, tetapi dalam beberapa skenario, kita perlu dapat memprediksi alamat kontrak. Uniswap menggunakan metode CREATE2 untuk membuat kontrak, dengan menambahkan parameter salt, sehingga alamat kontrak yang dibuat dapat diprediksi. Ini sangat berguna dalam menentukan izin transaksi atau mendapatkan alamat kolam, dan sebagainya.
Menggunakan Fungsi Callback dengan Cerdik
Dalam beberapa skenario, saling memanggil kontrak sangat berguna. Misalnya di Uniswap, ketika memanggil metode swap dari kontrak UniswapV3Pool, ia akan memanggil kembali swapCallback, dengan jumlah Token yang sebenarnya dihitung yang diperlukan. Panggilan harus mentransfer Token ke UniswapV3Pool dalam callback, yang memastikan eksekusi dan keamanan metode swap.
Menggunakan pengecualian untuk menyampaikan informasi
Dalam kontrak Quoter Uniswap, metode swap dari UniswapV3Pool dibungkus dengan try-catch. Ini dilakukan untuk mensimulasikan swap guna memperkirakan Token yang dibutuhkan untuk transaksi, dengan menangkap kesalahan tertentu dan menganalisis informasi kesalahan untuk mendapatkan data yang diperlukan. Metode ini menghindari perlunya modifikasi khusus pada metode swap untuk memperkirakan transaksi, sehingga logika menjadi lebih sederhana.
Perhitungan angka besar menjamin akurasi
Uniswap melibatkan banyak perhitungan, untuk menghindari kehilangan presisi saat melakukan operasi pembagian, sering kali digunakan pergeseran kiri 96 bit ( yang setara dengan mengalikan 2^96). Dengan demikian, dalam situasi perdagangan normal tanpa overflow, dapat menjamin presisi perhitungan. Meskipun secara teori masih akan ada sedikit kehilangan presisi, tetapi sudah dapat diterima.
Cara Berbagi Menghitung Keuntungan
Untuk menghindari konsumsi Gas yang besar dengan mencatat biaya transaksi untuk setiap LP setiap kali transaksi, Uniswap menggunakan metode yang mirip dengan dividen saham. Hanya perlu mencatat total biaya dan biaya yang harus dibagikan per unit likuiditas, dan biaya yang harus diterima LP dapat dihitung berdasarkan likuiditas yang dimiliki saat pengambilan.
Penggabungan Data On-chain dan Off-chain
Tidak semua informasi perlu diambil dari rantai. Misalnya, daftar kolam perdagangan, informasi kolam, dan lain-lain dapat disimpan dalam database biasa dan disinkronkan secara berkala dari rantai. Transaksi kunci dilakukan di rantai, sementara informasi non-kunci dapat diperoleh dengan cara yang lebih efisien untuk meningkatkan kinerja dan efisiensi.
Pemisahan Kontrak dan Penggunaan Kembali Kontrak Standar
Proyek besar biasanya mencakup beberapa kontrak yang diterapkan secara nyata, bahkan jika hanya menerapkan satu kontrak, itu dapat dipisahkan menjadi beberapa kontrak melalui pewarisan untuk pemeliharaan. Pada saat yang sama, memanfaatkan kontrak standar yang ada ( seperti ERC721) dapat meningkatkan efisiensi pengembangan dan menyederhanakan manajemen.
Praktik adalah cara terbaik untuk belajar. Dengan secara langsung membangun versi sederhana dari pertukaran terdesentralisasi, tidak hanya dapat memahami dengan lebih mendalam implementasi kode Uniswap, tetapi juga dapat mempelajari lebih banyak poin pengetahuan dalam proyek nyata. Semoga berbagi pengalaman ini bermanfaat bagi perjalanan pengembangan kontrak Anda.