Pengembangan Kontrak Lanjutan: 7 Tips Berguna Mendukung Proyek Defi

robot
Pembuatan abstrak sedang berlangsung

Tips dan Pengalaman dalam Pengembangan Kontrak

Belakangan ini, dalam proses pengembangan bursa terdesentralisasi, saya merujuk pada implementasi kode Uniswap V3 dan belajar banyak teknik pengembangan kontrak yang berguna. Sebagai seorang pengembang yang pernah mengembangkan kontrak NFT sederhana, percobaan kali ini dalam pengembangan kontrak Defi sangat bermanfaat bagi saya. Teknik-teknik ini seharusnya sangat membantu bagi pemula yang ingin belajar pengembangan kontrak.

Web3 Pemula Series: Tip kecil pengembangan kontrak yang saya pelajari dari kode Uniswap

Alamat Kontrak yang Dapat Diprediksi

Biasanya, saat menyebarkan kontrak, akan menghasilkan alamat yang tampaknya acak, karena terkait dengan nonce. Namun, dalam beberapa skenario, kita perlu menyimpulkan alamat kontrak melalui informasi yang terkait dengan transaksi, seperti untuk menentukan izin transaksi atau mendapatkan alamat pool.

Salah satu metode praktis adalah menggunakan CREATE2 untuk membuat kontrak. Dengan menambahkan parameter salt, alamat kontrak yang dibuat dapat diprediksi. Logika pembuatan alamat baru adalah: hash("0xFF", alamat pembuat, salt, initcode). Cara ini memungkinkan kita untuk mengetahui alamatnya sebelum membuat kontrak.

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

Memanfaatkan Fungsi Callback

Kontrak di Solidity dapat saling memanggil. Dalam beberapa skenario, A memanggil metode B, dan B memanggil kembali A dalam metode yang dipanggil, pola ini sangat berguna.

Misalnya saat berdagang, kontrak kolam akan memanggil swapCallback, yang mengirimkan jumlah Token yang sebenarnya dibutuhkan untuk transaksi ini. Panggilan perlu mentransfer Token ke kontrak kolam dalam callback. Cara ini memastikan keamanan dan integritas metode swap, tanpa perlu mencatat variabel yang rumit.

Menggunakan pengecualian untuk menyampaikan informasi, menggunakan try-catch untuk memperkirakan transaksi

Dalam memperkirakan perdagangan, kita perlu mensimulasikan metode swap tetapi tidak benar-benar menukar Token. Salah satu cara cerdik adalah dengan melemparkan kesalahan khusus dalam callback perdagangan, lalu menangkap kesalahan ini dan mengekstrak informasi yang diperlukan darinya. Metode ini menghindari kebutuhan untuk memodifikasi metode swap khusus untuk memperkirakan perdagangan, menjadikan logika lebih sederhana.

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

Masalah Presisi yang Diselesaikan oleh Angka Besar

Dalam perhitungan harga dan likuiditas, untuk menghindari kehilangan presisi akibat operasi pembagian, dapat digunakan operasi pergeseran kiri ( yang setara dengan mengalikan dengan 2^96). Dengan cara ini, dapat menjamin presisi dalam trading normal tanpa overflow. Meskipun secara teoritis masih akan ada kehilangan presisi yang sangat kecil, namun sudah dapat diterima.

Menghitung Keuntungan dengan Metode Share

Untuk perhitungan pendapatan biaya transaksi LP, tidak mungkin mencatat setiap LP untuk setiap transaksi, karena ini akan menghabiskan banyak Gas. Salah satu cara yang baik adalah mencatat total biaya transaksi dan biaya yang harus dialokasikan per unit likuiditas. Ketika LP menarik, biaya yang dapat ditarik dihitung berdasarkan likuiditas yang dimiliki, mirip dengan prinsip dividen saham.

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

Penggabungan Data On-chain dan Off-chain

Tidak semua informasi perlu dicatat di blockchain atau diambil dari blockchain. Seperti daftar kolam perdagangan, informasi kolam, dll. dapat disimpan di database biasa dan disinkronkan secara berkala dari blockchain. Dengan cara ini, kinerja dan efisiensi dapat ditingkatkan, serta biaya dapat dikurangi. Tentu saja, transaksi kunci masih perlu dilakukan di blockchain.

Pemisahan Kontrak dan Penggunaan Kembali Kontrak Standar

Sebuah proyek mungkin mencakup beberapa kontrak yang benar-benar diterapkan. Meskipun hanya menerapkan satu kontrak, kode juga dapat dibagi menjadi beberapa kontrak untuk pemeliharaan melalui pewarisan.

Pada saat yang sama, memanfaatkan kontrak standar yang sudah ada ( seperti ERC721) dapat meningkatkan efisiensi pengembangan. Misalnya, menggunakan ERC721 untuk mengelola posisi, baik nyaman dan dapat menggunakan kembali kode yang sudah matang.

Ringkasan

Pengembangan praktis adalah cara terbaik untuk belajar. Mencoba untuk mengimplementasikan versi sederhana dari bursa terdesentralisasi dapat memberi Anda pemahaman yang lebih dalam tentang implementasi kode Uniswap dan mempelajari lebih banyak poin pengetahuan dalam proyek nyata. Semoga pengalaman berbagi ini bermanfaat bagi Anda.

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

Lihat Asli
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.
  • Hadiah
  • 3
  • Bagikan
Komentar
0/400
gas_fee_traumavip
· 11jam yang lalu
Kontrak ini sulit, bro.
Lihat AsliBalas0
SchrodingerAirdropvip
· 11jam yang lalu
Renaissance saya terlahir kembali di perdagangan yang tidak biasa
Lihat AsliBalas0
degenwhisperervip
· 11jam yang lalu
v3 pada akhirnya masih kurang fleksibel
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)