7 mẹo phát triển hợp đồng: Học hỏi thực hành DeFi từ mã DEX

Mẹo phát triển hợp đồng: Kinh nghiệm học được từ mã Uniswap

Gần đây, khi tham gia một dự án hướng dẫn phát triển sàn giao dịch phi tập trung, tôi đã tham khảo mã nguồn của một DEX nổi tiếng và học được nhiều kiến thức thú vị. Là một người mới chỉ phát triển hợp đồng NFT đơn giản trước đây, lần thử nghiệm phát triển hợp đồng DeFi này đã mang lại cho tôi nhiều kiến thức quý giá. Dưới đây, tôi sẽ chia sẻ một số mẹo hữu ích, tin rằng sẽ rất có ích cho những người mới muốn học phát triển hợp đồng.

Web3 người mới series: Những mẹo phát triển hợp đồng tôi học được từ mã Uniswap

Địa chỉ hợp đồng có thể dự đoán

Thông thường, địa chỉ của hợp đồng được triển khai có vẻ ngẫu nhiên vì nó liên quan đến nonce. Nhưng trong một số trường hợp, chúng ta cần suy luận địa chỉ hợp đồng thông qua thông tin giao dịch tương ứng, chẳng hạn như xác định quyền giao dịch hoặc lấy địa chỉ của pool.

Một phương pháp thực hiện là sử dụng CREATE2 để tạo hợp đồng. Bằng cách thêm tham số salt, địa chỉ hợp đồng được tạo ra sẽ trở nên có thể dự đoán. Logic tạo ra địa chỉ mới là: hash("0xFF", địa chỉ người tạo, salt, initcode).

Web3 Người mới bắt đầu: Những mẹo nhỏ trong phát triển hợp đồng mà tôi đã học được từ mã Uniswap

Sử dụng hàm callback một cách khéo léo

Trong Solidity, các hợp đồng có thể gọi lẫn nhau. Một tình huống phổ biến là A gọi phương thức của B, và B trong phương thức được gọi sẽ gọi lại A. Điều này rất hữu ích trong một số trường hợp.

Ví dụ, trong một DEX nào đó, khi bạn gọi phương thức swap của hợp đồng pool để thực hiện giao dịch, nó sẽ gọi lại swapCallback, truyền vào số lượng token thực tế cần thiết cho giao dịch này. Bên gọi cần phải chuyển token cần thiết vào hợp đồng pool trong callback, thay vì tách phương thức swap ra. Điều này đảm bảo tính an toàn và thực hiện đầy đủ của phương thức swap mà không cần ghi chép biến phức tạp.

Sử dụng ngoại lệ để truyền thông tin, thực hiện ước lượng giao dịch bằng try-catch

Trong một số trường hợp, chúng ta cần mô phỏng phương thức swap để ước lượng lượng token cần thiết cho giao dịch, nhưng trong quá trình ước lượng thì không thực sự hoán đổi token, vì vậy sẽ báo lỗi. Một cách xử lý khéo léo là ném ra lỗi đặc biệt trong hàm callback giao dịch, sau đó bắt lỗi này và phân tích thông tin cần thiết từ thông điệp lỗi.

Phương pháp này có vẻ hơi lách luật nhưng rất thực tiễn. Nó tránh việc phải cải tiến phương pháp swap để ước tính nhu cầu giao dịch, làm cho logic trở nên đơn giản hơn.

Web3 người mới series: Những mẹo nhỏ trong phát triển hợp đồng mà tôi học được từ mã Uniswap

Sử dụng số lớn để giải quyết vấn đề độ chính xác

Trong các tình huống liên quan đến việc tính toán giá cả và thanh khoản, chúng ta cần tránh việc mất độ chính xác do phép chia. Một kỹ thuật thường được sử dụng là dịch trái 96 bit trong quá trình tính toán (tương đương với nhân với 2^96), sau đó thực hiện phép chia. Bằng cách này, có thể đảm bảo độ chính xác mà không bị tràn trong giao dịch thông thường.

Mặc dù về lý thuyết vẫn có một chút mất mát về độ chính xác, nhưng thường chỉ là mất mát của đơn vị nhỏ nhất, điều này có thể chấp nhận được.

Tính toán lợi nhuận bằng cách sử dụng Share

Đối với các tình huống cần ghi lại lợi nhuận phí giao dịch của nhà cung cấp thanh khoản (LP), chúng ta không thể ghi lại phí giao dịch cho mỗi LP trong mỗi giao dịch, điều này sẽ tiêu tốn rất nhiều gas. Một phương pháp hiệu quả là ghi lại tổng phí giao dịch và phí giao dịch nên được phân bổ cho mỗi đơn vị thanh khoản.

Khi rút phí LP, chỉ cần tính toán phí có thể rút dựa trên tính thanh khoản nắm giữ. Điều này giống như cổ đông tính toán lợi nhuận có thể rút hiện tại dựa trên lợi nhuận mỗi cổ phiếu trong lịch sử của công ty và lợi nhuận vào lần rút gần nhất.

Web3 người mới series: Những mẹo phát triển hợp đồng tôi học được từ mã Uniswap

Sử dụng hợp lý dữ liệu ngoài chuỗi

Lưu trữ trên chuỗi tương đối đắt đỏ, không phải tất cả thông tin đều cần phải lên chuỗi hoặc lấy từ chuỗi. Ví dụ, danh sách hồ giao dịch, thông tin hồ có thể được lưu trữ trong cơ sở dữ liệu truyền thống và đồng bộ định kỳ từ chuỗi.

Nhiều nhà cung cấp RPC blockchain cũng cung cấp giao diện nâng cao, cho phép truy cập một số dữ liệu nhanh hơn và tiết kiệm chi phí hơn. Những giao diện này thường sử dụng bộ nhớ đệm để nâng cao hiệu suất và hiệu quả.

Học cách phân tách hợp đồng và sử dụng hợp đồng tiêu chuẩn

Một dự án có thể bao gồm nhiều hợp đồng được triển khai thực tế. Ngay cả khi chỉ triển khai một hợp đồng, chúng ta cũng có thể duy trì bằng cách chia mã thành nhiều hợp đồng thông qua kế thừa.

Ngoài ra, việc sử dụng các hợp đồng tiêu chuẩn hiện có (như ERC721) có thể nâng cao hiệu quả phát triển. Ví dụ, có thể sử dụng hợp đồng ERC721 để quản lý vị thế thanh khoản, vừa tiện lợi vừa nâng cao hiệu quả phát triển.

Tóm tắt

Thực hành là phương pháp học tập tốt nhất. Cố gắng xây dựng một phiên bản đơn giản của sàn giao dịch phi tập trung có thể giúp bạn hiểu sâu hơn về việc thực hiện mã của DEX, đồng thời học được nhiều điểm kiến thức thực tế trong các dự án. Dù bạn quan tâm đến phát triển dự án Web3 hay DeFi, tự tay thực hiện sẽ là một trải nghiệm học tập quý giá.

Web3 Người mới bắt đầu: Những mẹo nhỏ trong phát triển hợp đồng mà tôi học được từ mã Uniswap

DEFI-1.8%
Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
  • Phần thưởng
  • 5
  • Đăng lại
  • Chia sẻ
Bình luận
0/400
StablecoinEnjoyervip
· 08-09 08:07
Không có gì lạ khi DEX có thể chơi hiểu create2 rất mượt mà~
Xem bản gốcTrả lời0
OnchainArchaeologistvip
· 08-09 07:19
Địa chỉ dự đoán phần này vẫn phải dựa vào create2
Xem bản gốcTrả lời0
Layer2Observervip
· 08-09 07:17
Về mặt kỹ thuật, CREATE2 thực sự thanh lịch nhưng có nguy cơ bảo mật.
Xem bản gốcTrả lời0
WenMoon42vip
· 08-09 07:08
Trong Create2 có nhiều điều cần chú ý.
Xem bản gốcTrả lời0
DegenMcsleeplessvip
· 08-09 06:58
Hú hú, đã hai năm trông coi BTC rồi~

Dựa trên tính cách của bạn, hãy đưa ra bình luận:

Đừng giả vờ nữa, bản sao của Uni mỏng manh.
Xem bản gốcTrả lời0
Giao dịch tiền điện tử mọi lúc mọi nơi
qrCode
Quét để tải xuống ứng dụng Gate
Cộng đồng
Tiếng Việt
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)