Phân tích mã nguồn Uniswap: 7 mẹo phát triển hợp đồng giúp bạn bắt đầu với DEX

robot
Đang tạo bản tóm tắt

Mẹo nhỏ phát triển hợp đồng: Kinh nghiệm quý giá học được từ mã của Uniswap

Gần đây, khi phát triển một hướng dẫn cho 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 điểm 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, việc lần đầu tiên thử nghiệm phát triển hợp đồng Defi, những kỹ năng này chắc chắn sẽ hữu ích cho những nhà phát triển muốn bắt đầu.

Tiếp theo, hãy cùng nhau xem những mẹo nhỏ hữu ích này, một số trong đó thậm chí có thể được coi là kỹ thuật tinh vi.

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

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

Địa chỉ hợp đồng được triển khai thường trông có vẻ ngẫu nhiên, vì nó liên quan đến nonce. Tuy nhiên, trong một số tình huống, chúng ta cần suy luận địa chỉ hợp đồng thông qua thông tin giao dịch đối ứng, điều này rất hữu ích trong việc xác định quyền giao dịch hoặc lấy địa chỉ bể.

Có thể tạo hợp đồng theo cách CREATE2 bằng cách thêm tham số salt, địa chỉ được tạo ra sẽ có thể dự đoán được. Logic tạo địa chỉ là: địa chỉ mới = hash("0xFF", địa chỉ của người tạo, salt, initcode).

Web3 Người mới bắt đầu: Những mẹo 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 thông minh

Trong Solidity, các hợp đồng có thể gọi nhau. Đôi khi phương thức A gọi phương thức 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ố tình huống.

Ví dụ, khi giao dịch, phương thức swap của hợp đồng pool sẽ gọi lại swapCallback, truyền vào số lượng Token cần thiết thực tế. Bên gọi cần chuyển Token trong callback, thay vì chia swap thành hai bước gọi. Điều này đảm bảo rằng phương thức swap được thực hiện đầy đủ và an toàn.

Sử dụng ngoại lệ để truyền thông tin, sử dụng try-catch để thực hiện dự đoán giao dịch

Khi ước lượng giao dịch, chúng ta cần mô phỏng swap nhưng không thực sự trao đổi Token. Có thể ném ra lỗi đặc biệt trong callback, sau đó bắt và phân tích dữ liệu cần thiết từ thông tin lỗi. Như vậy, không cần phải cải tiến phương pháp swap cho nhu cầu ước lượng, logic sẽ đơn giản hơn.

Web3 Hướng dẫn cho người mới: 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 phép tính phức tạp, để tránh mất độ chính xác khi chia, có thể dịch trái 96 bit ( tương đương với nhân 2^96), sau đó tính toán rồi dịch phải. Bằng cách này, có thể đảm bảo độ chính xác mà không bị tràn. Mất độ chính xác của đơn vị nhỏ nhất thường có thể chấp nhận.

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

Đối với việc tính toán lợi nhuận LP, không cần phải ghi lại mỗi giao dịch. Có thể ghi lại tổng phí giao dịch và phần chia của mỗi thanh khoản cần nhận, khi LP rút tiền sẽ tính theo thanh khoản nắm giữ. Tương tự như cổ tức cổ phiếu, chỉ cần biết lịch sử lợi nhuận trên mỗi cổ phiếu và thời gian rút tiền lần trước.

Web3新人系列:我从Uniswap代码中学到的合约开发小技巧

Lưu trữ thông tin bên 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ưu trữ trên chuỗi. Ví dụ như danh sách hồ bơi giao dịch, thông tin, v.v., có thể tồn tại trong cơ sở dữ liệu thông thường và được đồng bộ định kỳ từ chuỗi. Một số giao diện RPC nâng cao cũng cung cấp cách thức lấy dữ liệu nhanh hơn và rẻ hơn.

Phân chia hợp đồng hợp lý, tận dụng tiêu chuẩn hiện có

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, nó cũng có thể được chia thành nhiều hợp đồng để duy trì thông qua việc kế thừa. Đồng thời, có thể sử dụng các hợp đồng tiêu chuẩn hiện có như ERC721 để nâng cao hiệu quả phát triển.

Tóm tắt

Tự tay thực hiện một phiên bản DEX đơn giản, để hiểu sâu hơn về việc triển khai mã, và học hỏi thêm nhiều kiến thức thực tế trong các dự án. Khuyên những ai quan tâm có thể thử theo các hướng dẫn liên quan từng bước hoàn thành, tin rằng sẽ có nhiều thu hoạch.

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

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
  • Chia sẻ
Bình luận
0/400
SelfSovereignStevevip
· 15giờ trước
Người mới đừng cứng nhắc với mã nguồn nhé
Xem bản gốcTrả lời0
TooScaredToSellvip
· 15giờ trước
Học những cái này có tác dụng gì, vẫn lỗ tiền như thường.
Xem bản gốcTrả lời0
ChainMaskedRidervip
· 15giờ trước
DEX người mới của bạn đã đến
Xem bản gốcTrả lời0
OnchainUndercovervip
· 15giờ trước
Học U giống như sao chép bài tập về nhà thật dễ dàng.
Xem bản gốcTrả lời0
PretendingSeriousvip
· 16giờ trước
Ừm hừm hiểu biết có giá trị đầy đủ quá
Xem bản gốcTrả lời0
  • Ghim
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)