7 tips praktis untuk membantu Anda menguasai pengembangan smart contract

robot
Pembuatan abstrak sedang berlangsung

Tips cerdas dalam pengembangan kontrak

Belakangan ini, saya sedang mempelajari proses pengembangan bursa terdesentralisasi, merujuk pada beberapa implementasi kode dari proyek-proyek terkenal, dan mempelajari banyak poin menarik. Sebagai pengembang yang mencoba pertama kali mengembangkan kontrak Defi, tips-tips kecil ini sangat membantu bagi pemula yang ingin belajar pengembangan kontrak.

Mari kita lihat beberapa trik cerdik ini, beberapa bahkan dapat disebut sebagai teknik yang aneh dan rumit.

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

alamat penyebaran kontrak yang dapat diprediksi

Alamat yang biasanya dihasilkan oleh penyebaran kontrak tampak acak, karena terkait dengan nonce. Namun, dalam beberapa skenario, kita perlu menyimpulkan alamat kontrak melalui informasi terkait transaksi, seperti menentukan hak transaksi atau mendapatkan alamat kolam.

Salah satu metode adalah menggunakan CREATE2 untuk membuat kontrak, menambahkan parameter salt: pool = address(new UniswapV3Pool{salt: keccak256(abi.encode(token0, token1, fee))}()); Dengan cara ini, alamat kontrak yang dibuat dapat diprediksi, logika pembangunnya adalah alamat baru = hash("0xFF", alamat pembuat, salt, initcode).

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

Menggunakan Fungsi Callback dengan Cerdik

Kontrak dalam Solidity dapat saling memanggil. Salah satu pola adalah A memanggil metode B, dan B mengembalikan panggilan ke A dalam metode yang dipanggil, yang sangat berguna dalam beberapa skenario.

Misalnya, saat memanggil metode swap dari kontrak UniswapV3Pool untuk melakukan transaksi, itu akan memanggil kembali swapCallback, dengan memasukkan Token yang dihitung diperlukan untuk transaksi ini. Pihak yang memanggil perlu mentransfer Token yang dibutuhkan untuk transaksi ke UniswapV3Pool dalam callback, dan bukan membagi metode swap menjadi dua bagian. Ini memastikan keamanan dan eksekusi lengkap dari metode swap, tanpa perlu pencatatan variabel yang rumit.

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

Dalam beberapa kontrak, estimasi transaksi dilakukan dengan melempar kesalahan khusus dalam fungsi callback transaksi, lalu menangkap kesalahan tersebut dan mengurai informasi yang diperlukan dari pesan kesalahan. Metode ini tampaknya merupakan jalan pintas, tetapi sangat praktis, tanpa perlu mengubah metode swap untuk estimasi kebutuhan transaksi, logikanya lebih sederhana.

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

Masalah ketepatan solusi angka besar

Dalam skenario yang melibatkan banyak perhitungan, seperti menghitung token yang ditukar berdasarkan harga dan likuiditas saat ini, perlu menghindari kehilangan presisi yang disebabkan oleh operasi pembagian. Salah satu cara adalah dengan menggunakan operasi pergeseran kiri, seperti << FixedPoint96.RESOLUTION, yang setara dengan mengalikan 2^96. Setelah pergeseran kiri, lakukan operasi pembagian, yang memastikan presisi selama transaksi normal tidak terjadi overflow.

Cara berbagi untuk menghitung keuntungan

Untuk skenario yang memerlukan pencatatan LP( penyedia likuiditas ) pendapatan biaya transaksi, tidak mungkin untuk mencatat biaya untuk setiap LP pada setiap transaksi, karena ini akan menghabiskan banyak Gas.

Salah satu solusi adalah mencatat total biaya transaksi dan biaya yang harus dialokasikan untuk setiap likuiditas. Ketika LP menarik biaya, biaya yang dapat ditarik dihitung berdasarkan likuiditas yang dimiliki. Ini mirip dengan mekanisme pemegang saham yang menarik dividen.

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

keseimbangan informasi on-chain dan off-chain

Tidak semua informasi perlu diambil dari blockchain. Penyimpanan di blockchain relatif mahal, banyak informasi dapat disimpan di basis data tradisional, seperti daftar kolam transaksi, informasi kolam transaksi, dan lain-lain. Data ini dapat disinkronkan secara berkala dari blockchain, tanpa perlu memanggil antarmuka RPC layanan blockchain atau node secara real-time.

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

Pemisahan Kontrak dan Pemanfaatan Kontrak Standar

Sebuah proyek dapat mencakup beberapa kontrak yang benar-benar dideploy. Meskipun hanya ada satu kontrak yang benar-benar dideploy, kode juga dapat dipecah menjadi beberapa kontrak untuk pemeliharaan melalui cara pewarisan.

Selain itu, memanfaatkan kontrak standar yang sudah ada, seperti ERC721, dapat meningkatkan efisiensi pengembangan kontrak. Ini tidak hanya memudahkan pengelolaan, tetapi juga dapat memanfaatkan standar yang sudah matang untuk meningkatkan kecepatan dan keamanan pengembangan.

Ringkasan

Pengembangan praktis adalah cara yang paling efektif untuk belajar tentang pengembangan kontrak. Mencoba untuk mengimplementasikan versi sederhana dari bursa terdesentralisasi akan membantu Anda memahami lebih dalam tentang penerapan kode proyek terkenal, dan juga akan memberikan Anda lebih banyak pengetahuan tentang proyek nyata. Praktik langsung, saya percaya ini pasti akan membantu Anda.

Seri Pemula Web3: 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
  • 6
  • Posting ulang
  • Bagikan
Komentar
0/400
ServantOfSatoshivip
· 08-12 16:04
Teknik jitu, ini kan hanya menyebutkan tindakan yang mencolok.
Lihat AsliBalas0
mev_me_maybevip
· 08-11 22:32
Apa rahasia besar yang ditemukan oleh pemula? Hanya hal-hal yang sudah sering dibicarakan.
Lihat AsliBalas0
CommunityLurkervip
· 08-11 16:39
Pemula adalah ya, disarankan untuk berlatih hello world terlebih dahulu.
Lihat AsliBalas0
Blockwatcher9000vip
· 08-10 12:50
Bicara dengan baik, itu adalah keterampilan, sebenarnya semua adalah berbagai macam trik.
Lihat AsliBalas0
OnChainDetectivevip
· 08-10 12:46
Telah lama mempelajari penerapan create2. Metode ini sepertinya digunakan untuk menanam ranjau.. yang mengerti pasti mengerti.
Lihat AsliBalas0
ContractExplorervip
· 08-10 12:42
Menemukan celah baru adalah yang paling mengasyikkan, berlomba dengan celah.
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)