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 đã học được nhiều kỹ năng phát triển hợp đồng có giá trị thông qua việc nghiên cứu mã nguồn của Uniswap V3. Là một người mới bắt đầu tiếp xúc với 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 mới khác muốn học phát triển hợp đồng.
Địa chỉ hợp đồng có thể dự đoán
Thông thường, khi triển khai hợp đồng, địa chỉ nhận được là ngẫu nhiên, nhưng trong một số tình huống, chúng ta cần có khả năng dự đoán địa chỉ hợp đồng. Uniswap đã sử dụng phương thức CREATE2 để tạo ra hợp đồng, bằng cách thêm tham số salt, giúp cho địa chỉ hợp đồng được tạo ra có thể được dự đoán. Điều này rất hữu ích trong các tình huống như xác định quyền giao dịch hoặc lấy địa chỉ của các bể.
Sử dụng hiệu quả 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. Ví dụ, trong Uniswap, khi gọi phương thức swap của hợp đồng UniswapV3Pool, 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 cần chuyển Token vào UniswapV3Pool trong callback, điều này đảm bảo việc thực hiện hoàn chỉnh và an toàn của phương thức swap.
Sử dụng ngoại lệ để truyền thông tin
Trong hợp đồng Quoter của Uniswap, sử dụng try-catch để bao bọc việc thực hiện phương thức swap của UniswapV3Pool. Điều này nhằm mục đích mô phỏng swap để ước tính Token cần thiết cho giao dịch, thông qua việc bắt các lỗi cụ thể và phân tích thông tin lỗi để thu thập dữ liệu cần thiết. Phương pháp này tránh việc phải cải tiến đặc biệt phương thức swap chỉ để ước tính giao dịch, làm cho logic trở nên đơn giản hơn.
Đảm bảo độ chính xác trong tính toán số lớn
Trong Uniswap có liên quan đến một lượng lớn tính toán, để tránh mất độ chính xác khi thực hiện phép chia, thường sử dụng phép dịch trái 96 bit ( tương đương với việc nhân với 2^96). Như vậy, trong trường hợp giao dịch bình thường không bị tràn, có thể đảm bảo độ chính xác của phép tính. Mặc dù về lý thuyết vẫn có thể xảy ra một chút mất mát độ chính xác, nhưng đã có thể chấp nhận.
Tính toán lợi nhuận theo cách chia sẻ
Để tránh việc tiêu tốn nhiều Gas cho việc ghi lại phí giao dịch cho mỗi LP mỗi lần giao dịch, Uniswap đã áp dụng một phương pháp tương tự như cổ tức cổ phiếu. Chỉ cần 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, phí giao dịch mà LP nhận được có thể được tính toán dựa trên thanh khoản mà họ nắm giữ khi rút tiền.
Kết hợp dữ liệu trên chuỗi và ngoài chuỗi
Không phải tất cả thông tin đều cần phải lấy từ chuỗi. Chẳng hạn, danh sách giao dịch, thông tin hồ bơi có thể được lưu trữ trong cơ sở dữ liệu thông thường và đồng bộ định kỳ từ chuỗi. Giao dịch quan trọng được thực hiện trên chuỗi, trong khi thông tin không quan trọng có thể được lấy bằng cách hiệu quả hơn để nâng cao hiệu suất và hiệu quả.
Phân tách hợp đồng và tái sử dụng hợp đồng chuẩn
Các dự án lớn thường 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, cũng có thể duy trì bằng cách kế thừa và chia nhỏ thành nhiều hợp đồng. Đồng thời, việc sử dụng các hợp đồng tiêu chuẩn đã có như ( như ERC721) có thể nâng cao hiệu quả phát triển và đơn giản hóa quản lý.
Thực hành là cách học tốt nhất. Bằng cách tự tay xây dựng một phiên bản đơn giản của sàn giao dịch phi tập trung, không chỉ giúp hiểu sâu hơn về mã nguồn của Uniswap mà còn học hỏi được nhiều kiến thức thực tiễn từ các dự án. Hy vọng những chia sẻ kinh nghiệm này sẽ hữu ích cho con đường phát triển hợp đồng của bạn.
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.
14 thích
Phần thưởng
14
7
Chia sẻ
Bình luận
0/400
LiquidityOracle
· 08-02 23:11
Tổng hợp một bài viết khác về cách đầu tư cơ bản.
Xem bản gốcTrả lời0
WhaleWatcher
· 08-02 19:29
Có chút khó hiểu, ai có thể giải thích cho tôi về create2?
Xem bản gốcTrả lời0
RetailTherapist
· 07-31 02:40
Gửi cái này còn không bằng tự viết một dex để chơi đùa với mọi người.
Xem bản gốcTrả lời0
gas_guzzler
· 07-31 02:40
Dự đoán địa chỉ chiêu này cười chết, Thánh mẫu uniswap
Xem bản gốcTrả lời0
DeFiGrayling
· 07-31 02:35
Không nói nên lời, lại là buổi đào tạo kiểu này dành cho người mới...
Bảy mẹo giúp bạn nắm vững phát triển hợp đồng thông minh
Chia sẻ kinh nghiệm và mẹo phát triển hợp đồng
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 đã học được nhiều kỹ năng phát triển hợp đồng có giá trị thông qua việc nghiên cứu mã nguồn của Uniswap V3. Là một người mới bắt đầu tiếp xúc với 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 mới khác muốn học phát triển hợp đồng.
Địa chỉ hợp đồng có thể dự đoán
Thông thường, khi triển khai hợp đồng, địa chỉ nhận được là ngẫu nhiên, nhưng trong một số tình huống, chúng ta cần có khả năng dự đoán địa chỉ hợp đồng. Uniswap đã sử dụng phương thức CREATE2 để tạo ra hợp đồng, bằng cách thêm tham số salt, giúp cho địa chỉ hợp đồng được tạo ra có thể được dự đoán. Điều này rất hữu ích trong các tình huống như xác định quyền giao dịch hoặc lấy địa chỉ của các bể.
Sử dụng hiệu quả 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. Ví dụ, trong Uniswap, khi gọi phương thức swap của hợp đồng UniswapV3Pool, 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 cần chuyển Token vào UniswapV3Pool trong callback, điều này đảm bảo việc thực hiện hoàn chỉnh và an toàn của phương thức swap.
Sử dụng ngoại lệ để truyền thông tin
Trong hợp đồng Quoter của Uniswap, sử dụng try-catch để bao bọc việc thực hiện phương thức swap của UniswapV3Pool. Điều này nhằm mục đích mô phỏng swap để ước tính Token cần thiết cho giao dịch, thông qua việc bắt các lỗi cụ thể và phân tích thông tin lỗi để thu thập dữ liệu cần thiết. Phương pháp này tránh việc phải cải tiến đặc biệt phương thức swap chỉ để ước tính giao dịch, làm cho logic trở nên đơn giản hơn.
Đảm bảo độ chính xác trong tính toán số lớn
Trong Uniswap có liên quan đến một lượng lớn tính toán, để tránh mất độ chính xác khi thực hiện phép chia, thường sử dụng phép dịch trái 96 bit ( tương đương với việc nhân với 2^96). Như vậy, trong trường hợp giao dịch bình thường không bị tràn, có thể đảm bảo độ chính xác của phép tính. Mặc dù về lý thuyết vẫn có thể xảy ra một chút mất mát độ chính xác, nhưng đã có thể chấp nhận.
Tính toán lợi nhuận theo cách chia sẻ
Để tránh việc tiêu tốn nhiều Gas cho việc ghi lại phí giao dịch cho mỗi LP mỗi lần giao dịch, Uniswap đã áp dụng một phương pháp tương tự như cổ tức cổ phiếu. Chỉ cần 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, phí giao dịch mà LP nhận được có thể được tính toán dựa trên thanh khoản mà họ nắm giữ khi rút tiền.
Kết hợp dữ liệu trên chuỗi và ngoài chuỗi
Không phải tất cả thông tin đều cần phải lấy từ chuỗi. Chẳng hạn, danh sách giao dịch, thông tin hồ bơi có thể được lưu trữ trong cơ sở dữ liệu thông thường và đồng bộ định kỳ từ chuỗi. Giao dịch quan trọng được thực hiện trên chuỗi, trong khi thông tin không quan trọng có thể được lấy bằng cách hiệu quả hơn để nâng cao hiệu suất và hiệu quả.
Phân tách hợp đồng và tái sử dụng hợp đồng chuẩn
Các dự án lớn thường 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, cũng có thể duy trì bằng cách kế thừa và chia nhỏ thành nhiều hợp đồng. Đồng thời, việc sử dụng các hợp đồng tiêu chuẩn đã có như ( như ERC721) có thể nâng cao hiệu quả phát triển và đơn giản hóa quản lý.
Thực hành là cách học tốt nhất. Bằng cách tự tay xây dựng một phiên bản đơn giản của sàn giao dịch phi tập trung, không chỉ giúp hiểu sâu hơn về mã nguồn của Uniswap mà còn học hỏi được nhiều kiến thức thực tiễn từ các dự án. Hy vọng những chia sẻ kinh nghiệm này sẽ hữu ích cho con đường phát triển hợp đồng của bạn.