7 Teknik Pengembangan Kontrak: Belajar Praktik Keuangan Desentralisasi dari Kode DEX

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

Baru-baru ini, saat berpartisipasi dalam proyek tutorial pengembangan bursa terdesentralisasi, saya merujuk pada implementasi kode dari DEX terkenal dan belajar banyak poin menarik. Sebagai seorang pemula yang sebelumnya hanya mengembangkan kontrak NFT sederhana, percobaan kali ini dalam mengembangkan kontrak DeFi sangat bermanfaat bagi saya. Berikut saya akan berbagi beberapa tips praktis yang saya percaya akan sangat membantu bagi pemula yang ingin belajar pengembangan kontrak.

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

Alamat 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 informasi terkait transaksi, seperti menentukan hak akses transaksi atau mendapatkan alamat pool.

Salah satu metode implementasi adalah dengan menggunakan CREATE2 untuk membuat kontrak. Dengan menambahkan parameter salt, alamat kontrak yang dihasilkan menjadi dapat diprediksi. Logika untuk menghasilkan alamat baru adalah: hash("0xFF", alamat pencipta, salt, initcode).

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

Menggunakan Fungsi Callback dengan Baik

Dalam Solidity, kontrak dapat saling memanggil. Salah satu skenario umum adalah A memanggil metode B, dan B memanggil kembali A dalam metode yang dipanggil. Ini sangat berguna dalam beberapa kasus.

Misalnya, di suatu DEX, ketika Anda memanggil metode swap dari kontrak pool untuk melakukan transaksi, ia akan memanggil kembali swapCallback, dengan jumlah token yang sebenarnya diperlukan untuk transaksi ini yang telah dihitung. Panggilan perlu mentransfer token yang diperlukan ke dalam kontrak pool dalam callback, dan bukan membagi metode swap. Ini dapat memastikan keamanan metode swap dan eksekusi yang lengkap, tanpa perlu pencatatan variabel yang rumit.

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

Dalam beberapa kasus, kita perlu mensimulasikan metode swap untuk memperkirakan jumlah token yang diperlukan untuk transaksi, tetapi saat memperkirakan, token tidak akan benar-benar ditukar, sehingga akan terjadi kesalahan. Salah satu cara yang cerdik untuk menangani ini adalah dengan melempar kesalahan khusus dalam fungsi callback transaksi, kemudian menangkap kesalahan tersebut dan mengurai informasi yang dibutuhkan dari pesan kesalahan.

Metode ini tampaknya sedikit curang, tetapi sangat praktis. Ini menghindari perombakan metode swap untuk memperkirakan permintaan perdagangan, menjadikannya lebih sederhana secara logika.

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

Menggunakan Bilangan Besar untuk Mengatasi Masalah Presisi

Dalam skenario yang melibatkan perhitungan harga dan likuiditas, kita perlu menghindari kehilangan presisi yang disebabkan oleh operasi pembagian. Salah satu teknik umum adalah dengan menggeser ke kiri 96 bit (setara dengan mengalikan dengan 2^96) selama proses perhitungan, kemudian melakukan operasi pembagian. Dengan cara ini, kita dapat memastikan presisi tanpa mengalami overflow dalam transaksi normal.

Meskipun secara teori masih akan ada sedikit kehilangan akurasi, biasanya hanya kehilangan unit terkecil, yang dapat diterima.

Menghitung Pendapatan dengan Metode Share

Untuk skenario yang memerlukan pencatatan pendapatan biaya untuk penyedia likuiditas (LP), kita tidak dapat mencatat biaya untuk setiap LP pada setiap transaksi, karena ini akan menghabiskan banyak gas. Metode yang efisien adalah dengan mencatat total biaya dan biaya yang harus dialokasikan untuk setiap unit likuiditas.

Saat menarik biaya dari LP, Anda hanya perlu menghitung biaya yang dapat ditarik berdasarkan likuiditas yang dimiliki. Ini mirip dengan bagaimana pemegang saham menghitung pendapatan yang dapat ditarik saat ini berdasarkan laba per saham perusahaan yang historis dan pendapatan saat penarikan terakhir.

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

Memanfaatkan Data Off-Chain Secara Rasional

Penyimpanan di blockchain relatif mahal, dan 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 dari blockchain.

Banyak penyedia RPC blockchain juga menawarkan antarmuka tingkat lanjut, yang memungkinkan akses data tertentu dengan lebih cepat dan ekonomis. Antarmuka ini biasanya memanfaatkan caching untuk meningkatkan kinerja dan efisiensi.

Pelajari Pemisahan Kontrak dan Penggunaan Kontrak Standar

Sebuah proyek mungkin terdiri dari beberapa kontrak yang sebenarnya diterapkan. Bahkan jika hanya satu kontrak yang diterapkan, kita juga dapat memecah kode menjadi beberapa kontrak melalui cara pewarisan untuk pemeliharaan.

Selain itu, memanfaatkan kontrak standar yang sudah ada (seperti ERC721) dapat meningkatkan efisiensi pengembangan. Misalnya, kontrak ERC721 dapat digunakan untuk mengelola posisi likuiditas, yang tidak hanya nyaman tetapi juga dapat meningkatkan efisiensi pengembangan.

Ringkasan

Praktik adalah metode belajar terbaik. Mencoba untuk mengimplementasikan versi sederhana dari bursa terdesentralisasi dapat membantu Anda memahami lebih dalam tentang implementasi kode DEX, serta mempelajari lebih banyak poin pengetahuan dari proyek nyata. Baik Anda tertarik pada pengembangan proyek Web3 atau DeFi, terlibat langsung akan menjadi pengalaman belajar yang berharga.

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

DEFI-2.98%
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
  • 6
  • Posting ulang
  • Bagikan
Komentar
0/400
RugpullSurvivorvip
· 29menit yang lalu
Ayo ayo belajar Posisi Lock-up Rug Pull
Lihat AsliBalas0
StablecoinEnjoyervip
· 08-09 08:07
Tidak heran DEX bisa bermain dengan baik, create2 sangat keren~
Lihat AsliBalas0
OnchainArchaeologistvip
· 08-09 07:19
Alamat prediksi bagian ini masih harus mengandalkan create2
Lihat AsliBalas0
Layer2Observervip
· 08-09 07:17
Secara teknis, CREATE2 memang elegan, tetapi ada risiko keamanan.
Lihat AsliBalas0
WenMoon42vip
· 08-09 07:08
Di Create2 ada banyak cara.
Lihat AsliBalas0
DegenMcsleeplessvip
· 08-09 06:58
Hoho sudah dua tahun jaga malam melihat BTC~

Berdasarkan kepribadianmu, keluarkan komentar:

Jangan berpura-pura deh, pengganda Uni tipis
Lihat AsliBalas0
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)