Baru-baru ini saat menulis tutorial pengembangan bursa terdesentralisasi, saya merujuk beberapa implementasi kode dari proyek terkenal dan belajar banyak teknik pengembangan kontrak yang menarik. Sebagai pemula yang mencoba mengembangkan kontrak Defi untuk pertama kalinya, teknik-teknik ini sangat menginspirasi saya, dan saya percaya ini juga akan membantu teman-teman lain yang ingin belajar pengembangan kontrak.
Alamat Kontrak yang Dapat Diprediksi
Alamat yang biasanya diperoleh dari penyebaran kontrak terlihat acak, karena terkait dengan nonce. Namun dalam beberapa skenario, kita perlu menyimpulkan alamat kontrak melalui informasi yang setara dengan transaksi, yang sangat berguna dalam menentukan izin transaksi atau mendapatkan alamat kolam.
Salah satu cara adalah dengan menggunakan metode CREATE2 untuk membuat kontrak, dengan menambahkan parameter salt agar alamat yang dihasilkan dapat diprediksi. Logika pembuatan alamat baru adalah: hash("0xFF", alamat pembuat, salt, initcode).
Menggunakan Fungsi Callback dengan Bijak
Dalam beberapa skenario, pemanggilan metode kontrak B oleh kontrak A dan kemudian panggilan balik metode A oleh B sangat berguna.
Misalnya, saat bertransaksi, metode swap dari kontrak pool akan memanggil swapCallback, mengirimkan jumlah Token yang sebenarnya diperlukan. Pemanggil dalam callback akan mentransfer Token ke dalam pool, ini memastikan keamanan dan integritas metode swap, tanpa perlu pencatatan variabel yang rumit.
Menggunakan pengecualian untuk menyampaikan informasi
Dalam perdagangan simulasi untuk memperkirakan Token yang dibutuhkan, Anda dapat melemparkan kesalahan khusus dalam fungsi callback, kemudian menangkap kesalahan tersebut dan menganalisis informasi yang diperlukan darinya. Dengan cara ini, tidak perlu memodifikasi metode swap khusus untuk memperkirakan kebutuhan, logikanya menjadi lebih sederhana.
Masalah Akurasi Penyelesaian Angka Besar
Dalam skenario yang melibatkan perhitungan, untuk menghindari kehilangan presisi dalam operasi pembagian, kita dapat terlebih dahulu menggeser ke kiri 96 bit ( yang setara dengan mengalikan 2^96), kemudian melakukan operasi pembagian. Dengan cara ini, presisi dapat terjamin tanpa mengalami overflow.
Metode Share untuk Menghitung Keuntungan
Untuk skenario yang memerlukan pencatatan pendapatan biaya LP, tidak mungkin untuk mencatat setiap LP pada setiap transaksi, karena ini akan menghabiskan banyak Gas. Dapat digunakan metode mirip dividen saham, hanya mencatat total biaya dan biaya yang harus dialokasikan per unit likuiditas, kemudian saat LP menarik, dihitung berdasarkan likuiditas yang dimiliki.
Penyimpanan informasi tambahan di luar rantai
Tidak semua informasi perlu diunggah ke blockchain atau diambil dari blockchain. Beberapa data yang tidak kritis seperti daftar kolam transaksi, informasi kolam, dll. dapat disimpan dalam database biasa dan disinkronkan secara berkala dari blockchain. Ini dapat meningkatkan kinerja dan efisiensi.
Pembagian Kontrak dan Penggunaan Kembali Kontrak Standar
Proyek besar dapat membagi kontrak menjadi beberapa bagian, atau memecah dan memelihara dengan cara pewarisan. Pada saat yang sama, kontrak standar seperti ERC721 dapat digunakan kembali, meningkatkan efisiensi pengembangan.
Secara langsung mengembangkan versi sederhana dari bursa terdesentralisasi, dapat lebih memahami penerapan teknik-teknik ini dengan lebih mendalam. Semoga berbagi ini bermanfaat bagi semua.
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.
19 Suka
Hadiah
19
7
Bagikan
Komentar
0/400
HappyMinerUncle
· 08-04 03:00
Ini terlalu rumit, ya? Para penambang, silakan ambil tempatnya.
Lihat AsliBalas0
SadMoneyMeow
· 08-03 20:33
Permainan kontrak ini terlalu mewah.
Lihat AsliBalas0
SandwichTrader
· 08-01 04:28
Gelombang baru yang rusak tetapi tidak rugpull
Lihat AsliBalas0
LayerZeroHero
· 08-01 03:29
Disarankan untuk langsung menguji dapptools, menggunakan gas untuk pengujian lebih dapat diandalkan.
Lihat AsliBalas0
hodl_therapist
· 08-01 03:21
Apakah kamu yakin ini semua adalah teknologi terbaru? ... terlihat agak tua.
7 Tips Pengembangan Kontrak yang Berguna untuk Mendukung Proyek Defi
Berbagi Tips Kecil untuk Pengembangan Kontrak
Baru-baru ini saat menulis tutorial pengembangan bursa terdesentralisasi, saya merujuk beberapa implementasi kode dari proyek terkenal dan belajar banyak teknik pengembangan kontrak yang menarik. Sebagai pemula yang mencoba mengembangkan kontrak Defi untuk pertama kalinya, teknik-teknik ini sangat menginspirasi saya, dan saya percaya ini juga akan membantu teman-teman lain yang ingin belajar pengembangan kontrak.
Alamat Kontrak yang Dapat Diprediksi
Alamat yang biasanya diperoleh dari penyebaran kontrak terlihat acak, karena terkait dengan nonce. Namun dalam beberapa skenario, kita perlu menyimpulkan alamat kontrak melalui informasi yang setara dengan transaksi, yang sangat berguna dalam menentukan izin transaksi atau mendapatkan alamat kolam.
Salah satu cara adalah dengan menggunakan metode CREATE2 untuk membuat kontrak, dengan menambahkan parameter salt agar alamat yang dihasilkan dapat diprediksi. Logika pembuatan alamat baru adalah: hash("0xFF", alamat pembuat, salt, initcode).
Menggunakan Fungsi Callback dengan Bijak
Dalam beberapa skenario, pemanggilan metode kontrak B oleh kontrak A dan kemudian panggilan balik metode A oleh B sangat berguna.
Misalnya, saat bertransaksi, metode swap dari kontrak pool akan memanggil swapCallback, mengirimkan jumlah Token yang sebenarnya diperlukan. Pemanggil dalam callback akan mentransfer Token ke dalam pool, ini memastikan keamanan dan integritas metode swap, tanpa perlu pencatatan variabel yang rumit.
Menggunakan pengecualian untuk menyampaikan informasi
Dalam perdagangan simulasi untuk memperkirakan Token yang dibutuhkan, Anda dapat melemparkan kesalahan khusus dalam fungsi callback, kemudian menangkap kesalahan tersebut dan menganalisis informasi yang diperlukan darinya. Dengan cara ini, tidak perlu memodifikasi metode swap khusus untuk memperkirakan kebutuhan, logikanya menjadi lebih sederhana.
Masalah Akurasi Penyelesaian Angka Besar
Dalam skenario yang melibatkan perhitungan, untuk menghindari kehilangan presisi dalam operasi pembagian, kita dapat terlebih dahulu menggeser ke kiri 96 bit ( yang setara dengan mengalikan 2^96), kemudian melakukan operasi pembagian. Dengan cara ini, presisi dapat terjamin tanpa mengalami overflow.
Metode Share untuk Menghitung Keuntungan
Untuk skenario yang memerlukan pencatatan pendapatan biaya LP, tidak mungkin untuk mencatat setiap LP pada setiap transaksi, karena ini akan menghabiskan banyak Gas. Dapat digunakan metode mirip dividen saham, hanya mencatat total biaya dan biaya yang harus dialokasikan per unit likuiditas, kemudian saat LP menarik, dihitung berdasarkan likuiditas yang dimiliki.
Penyimpanan informasi tambahan di luar rantai
Tidak semua informasi perlu diunggah ke blockchain atau diambil dari blockchain. Beberapa data yang tidak kritis seperti daftar kolam transaksi, informasi kolam, dll. dapat disimpan dalam database biasa dan disinkronkan secara berkala dari blockchain. Ini dapat meningkatkan kinerja dan efisiensi.
Pembagian Kontrak dan Penggunaan Kembali Kontrak Standar
Proyek besar dapat membagi kontrak menjadi beberapa bagian, atau memecah dan memelihara dengan cara pewarisan. Pada saat yang sama, kontrak standar seperti ERC721 dapat digunakan kembali, meningkatkan efisiensi pengembangan.
Secara langsung mengembangkan versi sederhana dari bursa terdesentralisasi, dapat lebih memahami penerapan teknik-teknik ini dengan lebih mendalam. Semoga berbagi ini bermanfaat bagi semua.