Giải mã mã Uniswap: 7 mẹo phát triển hợp đồng thông minh chi tiết

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

Kỹ năng phát triển hợp đồng học được từ mã Uniswap

Gần đây, khi viết một 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 Uniswap V3 và học được nhiều kiến thức quý giá. Là một nhà phát triển lần đầu tiên thử nghiệm phát triển hợp đồng Defi, những mẹo này sẽ rất hữu ích cho những người mới muốn học phát triển hợp đồng.

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

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

Thông thường, địa chỉ nhận được từ việc triển khai hợp đồng có vẻ ngẫu nhiên vì 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 cặp giao dịch và thông tin liên quan. Uniswap sử dụng phương thức CREATE2 để tạo hợp đồng, thêm tham số salt, khiến địa chỉ hợp đồng được tạo ra có thể dự đoán. Logic tạo địa chỉ là: địa chỉ mới = 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](https://img-cdn.gateio.im/webp-social/moments-0aaa61a4d43aba7fdeddbc55e3665305.webp01

Sử dụng khéo léo hàm callback

Trong một số tình huống, việc gọi lẫn nhau và callback giữa các hợp đồng là rất hữu ích. Ví dụ, trong phương thức swap của Uniswap, 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 cần thiết vào bể trong callback, đảm bảo tính toàn vẹn và an toàn của toàn bộ logic giao dịch.

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

Trong hợp đồng Quoter của Uniswap, việc sử dụng try catch để bọc thực hiện phương thức swap nhằm ước tính giao dịch. Bằng cách ném ra lỗi đặc biệt trong hàm callback, sau đó bắt và phân tích thông tin lỗi, chức năng ước tính giao dịch được thực hiện mà không cần phải cải tiến phương thức swap dành riêng cho nhu cầu ước tính.

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

Trong Uniswap, logic tính toán thường xuyên sử dụng thao tác dịch trái 96 bit (tương đương với nhân với 2^96). Phương pháp này vừa đảm bảo giao dịch bình thường không bị tràn, vừa đảm bảo độ chính xác. Mặc dù về lý thuyết vẫn tồn tại một chút mất mát độ chính xác rất nhỏ, nhưng trong thực tế, điều này có thể chấp nhận được.

![Web3 Người mới bắt đầu: Những mẹo nhỏ về phát triển hợp đồng mà tôi đã học được từ mã Uniswap])https://img-cdn.gateio.im/webp-social/moments-b0c3d4eb7e8ca88cc4cfc9476a34437a.webp(

Tính toán lợi nhuận của cơ chế Share

Để ghi lại hiệu quả lợi nhuận phí giao dịch của LP, Uniswap đã áp dụng một phương thức tương tự như cổ phần. Bằng cách ghi lại tổng phí giao dịch và phí giao dịch được phân bổ cho mỗi đơn vị thanh khoản, LP chỉ cần tính toán phí giao dịch có thể rút ra dựa trên thanh khoản nắm giữ, giảm đáng kể mức tiêu thụ gas.

![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])https://img-cdn.gateio.im/webp-social/moments-45e66af69435e6d4412ae506e77ab893.webp(

Sử dụng thông tin ngoại chuỗi một cách hợp lý

Xem xét chi phí cao của việc lưu trữ trên chuỗi, không phải tất cả thông tin đều cần được lưu trữ trê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, đồng bộ định kỳ với dữ liệu trên chuỗi. Phương pháp này có thể nâng cao hiệu quả và giảm chi phí.

Phân chia hợp đồng và tái sử dụng hợp đồng tiêu chuẩn

Một dự án có thể bao gồm nhiều hợp đồng thực tế được triển khai, ngay cả khi chỉ triển khai một hợp đồng, cũng có thể phân chia mã thành nhiều hợp đồng để duy trì thông qua kế thừa. Đồng thời, việc sử dụng các hợp đồng chuẩn có sẵn (như ERC721) có thể nâng cao hiệu quả phát triển và tăng cường độ tin cậy của hợp đồng.

Kết luận

Thực hành là phương pháp học tập tốt nhất. Bằng cách thử nghiệm 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ể hiểu sâu hơn về việc triển khai mã nguồn của Uniswap và học hỏi kinh nghiệm quý giá từ các dự án thực tế. Đối với các nhà phát triển có hứng thú tìm hiểu sâu về phát triển dự án Web3 và Defi, tham gia các khóa học thực chiến sẽ là một lựa chọn rất tốt.

![Web3 Người mới bắt đầu: Những mẹo phát triển hợp đồng tôi học được từ mã Uniswap])https://img-cdn.gateio.im/webp-social/moments-f95ddc9d89809cf11dbe65b9bafda157.webp(

UNI1.81%
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
  • 6
  • Chia sẻ
Bình luận
0/400
GateUser-9ad11037vip
· 15giờ trước
Người mới nhập một vị thế教程齁
Xem bản gốcTrả lời0
WalletManagervip
· 15giờ trước
Kiểm toán nghiêm ngặt trước hợp đồng chính là công trình nền tảng... Học một đợt xung
Xem bản gốcTrả lời0
SmartContractRebelvip
· 15giờ trước
Phát triển ông già ăn lộc cũ rồi.
Xem bản gốcTrả lời0
GateUser-a606bf0cvip
· 15giờ trước
Chỉ có vậy thôi? Cơ bản quá đi.
Xem bản gốcTrả lời0
BlockchainBouncervip
· 15giờ trước
Chạy nhanh như gió không hiểu
Xem bản gốcTrả lời0
GasGuzzlervip
· 16giờ trước
Dù có nói mười lần tôi cũng không viết được.
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)