Analisis Sumber Uniswap: 7 Tips Pengembangan Kontrak untuk Membantu Pemula DEX

robot
Pembuatan abstrak sedang berlangsung

Tips Kecil untuk Pengembangan Kontrak: Pengalaman Berharga yang Dipelajari dari Kode Uniswap

Baru-baru ini, saat mengembangkan tutorial untuk bursa terdesentralisasi, saya merujuk pada implementasi kode dari DEX terkenal dan mempelajari banyak poin menarik. Sebagai seorang pemula yang sebelumnya hanya mengembangkan kontrak NFT sederhana, percobaan pertama saya dalam pengembangan kontrak Defi, keterampilan ini seharusnya sangat membantu bagi pengembang yang ingin memulai.

Mari kita lihat beberapa trik kecil yang berguna ini, beberapa di antaranya bahkan bisa disebut sebagai keahlian yang luar biasa.

Seri Pemula Web3: Tips Kecil Pengembangan Kontrak yang Saya Pelajari dari Kode Uniswap

Alamat penyebaran kontrak yang dapat diprediksi

Alamat kontrak yang biasanya diterapkan terlihat acak, karena berkaitan dengan nonce. Namun, dalam beberapa situasi, kita perlu menyimpulkan alamat kontrak melalui informasi terkait transaksi, yang sangat berguna dalam menentukan izin transaksi atau mendapatkan alamat pool.

Anda dapat menggunakan metode CREATE2 untuk membuat kontrak dengan menambahkan parameter salt, sehingga alamat yang dihasilkan dapat diprediksi. Logika pembuatan alamat adalah: alamat baru = hash("0xFF", alamat pencipta, salt, initcode).

Web3 Pemula Series: Tips Kecil Pengembangan Kontrak yang Saya Pelajari dari Kode Uniswap

Menggunakan Fungsi Callback dengan Cerdas

Dalam Solidity, kontrak dapat saling memanggil. Terkadang metode A memanggil B, dan B mengembalikan panggilan ke A dalam metode yang dipanggil, ini berguna dalam beberapa skenario.

Misalnya, saat melakukan transaksi, metode swap dari kontrak pool akan memanggil swapCallback, dengan jumlah Token yang sebenarnya dibutuhkan. Panggilan harus mentransfer Token dalam callback, dan bukan membagi swap menjadi dua langkah panggilan. Ini memastikan eksekusi lengkap dan keamanan metode swap.

Menggunakan pengecualian untuk menyampaikan informasi, menggunakan try-catch untuk melakukan estimasi transaksi

Dalam memperkirakan transaksi, kita perlu mensimulasikan swap tetapi tidak benar-benar menukar Token. Dapat melempar kesalahan khusus dalam callback, kemudian menangkap dan mengurai data yang diperlukan dari informasi kesalahan. Dengan cara ini, tidak perlu mengubah metode swap untuk kebutuhan estimasi, logika menjadi lebih sederhana.

Seri Pemula Web3: Tip Kecil Pengembangan Kontrak yang Saya Pelajari dari Kode Uniswap

Mengatasi Masalah Presisi dengan Bilangan Besar

Dalam perhitungan yang kompleks, untuk menghindari kehilangan presisi dalam pembagian, Anda dapat terlebih dahulu menggeser ke kiri 96 bit ( yang setara dengan mengalikan 2^96), kemudian setelah perhitungan, geser ke kanan. Dengan cara ini, presisi dapat dijamin tanpa melampaui batas. Kehilangan presisi pada unit terkecil biasanya dapat diterima.

Menghitung Pendapatan dengan Metode Share

Untuk perhitungan hasil LP, tidak perlu mencatat setiap transaksi. Dapat mencatat total biaya transaksi dan setiap bagian yang harus diterima oleh likuiditas, dan saat LP menarik, dihitung berdasarkan likuiditas yang dimiliki. Mirip dengan dividen saham, hanya perlu mengetahui riwayat penghasilan per saham dan waktu penarikan terakhir.

Seri Pemula Web3: Trik Kecil Pengembangan Kontrak yang Saya Pelajari dari Kode Uniswap

Penyimpanan Informasi Di Luar Rantai

Penyimpanan di blockchain relatif mahal, tidak semua informasi perlu disimpan di blockchain. Misalnya, daftar pool transaksi dan informasi lainnya dapat disimpan di database biasa dan disinkronkan secara berkala dari blockchain. Beberapa antarmuka RPC tingkat lanjut juga menyediakan cara pengambilan data yang lebih cepat dan murah.

Pembagian kontrak yang wajar, memanfaatkan standar yang ada

Sebuah proyek mungkin mencakup beberapa kontrak yang benar-benar dikerahkan. Bahkan jika hanya satu yang dikerahkan, itu dapat dipecah menjadi beberapa kontrak untuk pemeliharaan melalui pewarisan. Selain itu, standar kontrak yang ada seperti ERC721 dapat digunakan untuk meningkatkan efisiensi pengembangan.

Ringkasan

Membuat versi sederhana DEX secara langsung, dapat memahami implementasi kode dengan lebih mendalam, dan mempelajari lebih banyak poin pengetahuan praktis dalam proyek nyata. Disarankan kepada teman-teman yang tertarik untuk mencoba mengikuti tutorial terkait langkah demi langkah, saya yakin akan ada banyak manfaat.

Web3 Pemula Series: Tips Kecil Pengembangan Kontrak yang Saya Pelajari dari Kode Uniswap

Lihat Asli
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.
  • Hadiah
  • 5
  • Bagikan
Komentar
0/400
SelfSovereignStevevip
· 6jam yang lalu
Pemula jangan memaksakan kode sumber ya
Lihat AsliBalas0
TooScaredToSellvip
· 6jam yang lalu
Belajar apa gunanya, tetap rugi.
Lihat AsliBalas0
ChainMaskedRidervip
· 6jam yang lalu
DEX pemula的福音来了
Lihat AsliBalas0
OnchainUndercovervip
· 7jam yang lalu
Belajar U sama enaknya dengan menyalin PR.
Lihat AsliBalas0
PretendingSeriousvip
· 7jam yang lalu
Hmm, wawasan berharga penuh banget ya
Lihat AsliBalas0
  • Sematkan
Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)