7 mẹo phát triển hợp đồng hữu ích hỗ trợ dự án DEX

Tổng hợp mẹo phát triển hợp đồng

Gần đây, khi phát triển một 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 kỹ năng phát triển hợp đồng hữu ích. Là một người mới bắt đầu tiếp cận phát triển hợp đồng Defi, những kỹ năng này đã mang lại cho tôi nhiều cảm hứng, tôi tin rằng cũng sẽ hữu ích cho những người bạn khác muốn học phát triển hợp đồng.

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

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

Thông thường, địa chỉ hợp đồng triển khai có vẻ ngẫu nhiên và khó dự đoán. 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, chẳng hạn như xác định quyền giao dịch hoặc lấy địa chỉ của pool.

Điều này có thể được thực hiện bằng cách sử dụng phương pháp CREATE2 để tạo hợp đồng. Cách cụ thể là thêm tham số salt khi tạo hợp đồng:

solidity pool = address(new UniswapV3Pool{salt: keccak256(abi.encode(token0, token1, fee))}());

Địa chỉ hợp đồng được tạo ra theo cách này là có thể dự đoán, logic sinh ra là:

Địa chỉ mới = hash("0xFF", địa chỉ người tạo, salt, initcode)

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àm callback

Trong một số tình huống, việc gọi lẫn nhau giữa các hợp đồng là rất hữu ích. Chẳng hạn, 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.

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

Sử dụng ngoại lệ để truyền thông tin

Khi ước tính giao dịch, chúng ta cần mô phỏng phương pháp swap nhưng không thực sự hoán đổi Token. Có thể ném ra lỗi đặc biệt trong hàm callback giao dịch, sau đó bắt lỗi đó và phân tích thông tin cần thiết từ đó.

Phương pháp này có vẻ là mánh khóe, nhưng rất thực tế. Không cần phải cải tiến phương pháp swap đặc biệt cho giao dịch ước lượng, logic đơ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

Giải quyết vấn đề độ chính xác của số lớn

Trong việc tính toán giá cả và thanh khoản, để tránh mất độ chính xác trong các phép chia, có thể sử dụng phép dịch trái ( tương đương với nhân với 2^96).

Ví dụ:

solidity numerator1 = FullMath.mulDiv(liquidity << FixedPoint96.RESOLUTION, sqrtRatioBX96 - sqrtRatioAX96, sqrtRatioBX96);

Điều này có thể đảm bảo độ chính xác trong giao dịch bình thường mà không bị tràn. Mặc dù về lý thuyết vẫn có một chút mất mát độ chính xác, nhưng đã có thể chấp nhận.

Tính lợi nhuận theo cách chia sẻ

Để tránh việc ghi lại phí giao dịch cho tất cả LP mỗi lần giao dịch, có thể sử dụng phương thức Share.

Chỉ cần ghi lại tổng phí giao dịch và phí giao dịch cần phân bổ cho mỗi thanh khoản. Khi LP rút tiền, phí giao dịch có thể rút được sẽ được tính dựa trên thanh khoản đang nắm giữ, tương tự như cổ tức cổ phiếu.

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 dữ liệu ngoài chuỗi một cách hợp lý

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

Một số giao diện RPC nâng cao cũng cung cấp cách lấy dữ liệu tối ưu hóa bộ nhớ đệm, có thể cải thiện hiệu suất và hiệu quả.

Phân chia và tái sử dụng hợp đồng

Các dự án lớn có thể được chia thành nhiều hợp đồng triển khai thực tế, hoặc được chia thành nhiều hợp đồng bảo trì thông qua kế thừa.

Đồng thời, có thể tái 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. Ví dụ:

solidity hợp đồng NonfungiblePositionManager là INonfungiblePositionManager, PeripheryImmutableState, PoolInitializer, Quản lý thanh khoản, PeripheryValidation, Multicall, ERC721Permit, PeripheryPayments, NFTDescriptor { // ... }

Học cách triển khai mã của các dự án xuất sắc và cố gắng tự tay phát triển sẽ giúp bạn hiểu sâu hơn về sàn giao dịch phi tập trung. Hy vọng những mẹo nhỏ này sẽ hữu ích cho việc phát triển hợp đồng của bạn!

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

UNI-6.16%
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
LayerZeroEnjoyervip
· 08-01 16:48
BTC đã nổ hết rồi mà còn nghiên cứu defi à?
Xem bản gốcTrả lời0
degenwhisperervip
· 08-01 00:26
Cắt dán mã của uni trực tiếp
Xem bản gốcTrả lời0
GateUser-40edb63bvip
· 07-29 21:17
Hợp đồng thông minh này thật cao cấp.
Xem bản gốcTrả lời0
PoetryOnChainvip
· 07-29 21:03
Thực ra chỉ là sao chép uni thôi...
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)