Những ý tưởng sáng tạo trong phát triển hợp đồng: Lấy cảm hứng từ mã Uniswap
Gần đây, khi tôi viết một hướng dẫn phát triển sàn giao dịch phi tập trung, tôi đã nghiên cứu sâu về mã nguồn của Uniswap V3 và thu được nhiều kiến thức. Là một nhà phát triển đã từng tạo ra hợp đồng NFT đơn giản, đây là lần đầu tiên tôi tham gia vào lĩnh vực hợp đồng Defi. Dưới đây là một số mẹo nhỏ mà tôi đã tổng hợp, tôi tin rằng chúng sẽ hữu ích cho những người mới bắt đầu phát triển hợp đồng.
Địa chỉ triển khai hợp đồng có thể dự đoán
Thông thường, địa chỉ nhận được sau khi triển khai hợp đồng có vẻ ngẫu nhiên, vì nó liên quan đến nonce. Tuy nhiên, trong một số trường hợp, chúng ta cần suy luận địa chỉ hợp đồng thông qua giao dịch và thông tin liên quan. Uniswap sử dụng phương pháp CREATE2 để tạo hợp đồng, thêm tham số salt, khiến cho địa chỉ hợp đồng được tạo ra có thể dự đoán được. Phương pháp 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ể.
Sử dụng hàm callback một cách thông minh
Trong Solidity, các hợp đồng có thể gọi lẫn nhau. Phương thức swap của Uniswap sử dụng cơ chế gọi lại, đảm bảo rằng toàn bộ logic giao dịch được thực hiện đầy đủ mà không cần ghi lại các biến phức tạp để đảm bảo an toàn.
Thông tin truyền đạt bất thường và ước lượng giao dịch
Trong hợp đồng Quoter của Uniswap, phương pháp swap được thực thi qua try-catch để bắt các lỗi cụ thể nhằm ước tính token cần thiết cho giao dịch. Phương pháp này vừa thực dụng vừa đơn giản, không cần phải cải tạo riêng phương pháp swap cho việc ước tính nhu cầu.
Giải quyết vấn đề độ chính xác của số lớn
Uniswap thường sử dụng thao tác dịch trái 96 bit (tương đương với nhân với 2^96) trong quá trình tính toán để đảm bảo độ chính xác mà không bị tràn. Phương pháp này đặc biệt hiệu quả trong việc xử lý tính toán giá cả và thanh khoản.
Tính toán lợi nhuận theo chế độ Chia sẻ
Để tránh việc phải ghi lại phí giao dịch cho mỗi nhà cung cấp thanh khoản (LP) trong mỗi giao dịch, Uniswap đã áp dụng một phương pháp tương tự như cổ tức cổ phiếu. Bằng cách ghi lại tổng phí giao dịch và phí phải phân bổ cho mỗi thanh khoản, LP có thể tính toán lợi nhuận của mình dựa trên thanh khoản nắm giữ khi rút tiền.
Chiến lược thu thập thông tin trên chuỗi
Không phải tất cả thông tin đều cần phải lấy từ chuỗi. Ví dụ, danh sách hồ bơi giao dịch, thông tin hồ bơi giao dịch có thể được lưu trữ trong cơ sở dữ liệu truyền thống và đồng bộ định kỳ từ chuỗi. Phương pháp này có thể cải thiện đáng kể hiệu suất và hiệu quả.
Chia hợp đồng và sử dụng hợp đồng tiêu chuẩn
Các dự án lớn có thể bao gồm nhiều hợp đồng được triển khai thực tế, hoặc chia một hợp đồng thành nhiều hợp đồng thông qua kế thừa. Hợp đồng NonfungiblePositionManager của Uniswap là một ví dụ rất tốt, nó kế thừa từ nhiều hợp đồng và sử dụng hợp đồng ERC721 tiêu chuẩn của OpenZeppelin.
Thực hành mang lại kiến thức thực sự. Bằng cách tự tay thực hiện một phiên bản đơn giản của sàn giao dịch phi tập trung, bạn sẽ hiểu sâu hơn về cách mã của Uniswap được triển khai và có được kinh nghiệm quý báu trong các dự án thực tế. Dù bạn là người đam mê Web3 hay nhà phát triển dự án Defi, tôi tin rằng những mẹo này sẽ hữu ích cho 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.
12 thích
Phần thưởng
12
10
Đăng lại
Chia sẻ
Bình luận
0/400
LuckyBlindCat
· 07-19 21:04
Mã này có hiểu không?
Xem bản gốcTrả lời0
AirdropHuntress
· 07-19 01:08
Đáng nghiên cứu, mã có chút gì đó đặc biệt.
Xem bản gốcTrả lời0
MEVEye
· 07-18 19:39
Có chút thú vị Khám phá mẹo hợp đồng nhỏ
Xem bản gốcTrả lời0
UncleWhale
· 07-18 19:39
Lưu lại trước, sau này sẽ dùng để học phát triển.
Xem bản gốcTrả lời0
MetaMaximalist
· 07-18 19:34
cái nhìn hấp dẫn về tính bền vững của giao thức. nhưng thật lòng mà nói đây là những điều cơ bản của web3...
Phân tích mã Uniswap: 7 mẹo phát triển hợp đồng giúp ích cho dự án Tài chính phi tập trung
Những ý tưởng sáng tạo trong phát triển hợp đồng: Lấy cảm hứng từ mã Uniswap
Gần đây, khi tôi viết một hướng dẫn phát triển sàn giao dịch phi tập trung, tôi đã nghiên cứu sâu về mã nguồn của Uniswap V3 và thu được nhiều kiến thức. Là một nhà phát triển đã từng tạo ra hợp đồng NFT đơn giản, đây là lần đầu tiên tôi tham gia vào lĩnh vực hợp đồng Defi. Dưới đây là một số mẹo nhỏ mà tôi đã tổng hợp, tôi tin rằng chúng sẽ hữu ích cho những người mới bắt đầu phát triển hợp đồng.
Địa chỉ triển khai hợp đồng có thể dự đoán
Thông thường, địa chỉ nhận được sau khi triển khai hợp đồng có vẻ ngẫu nhiên, vì nó liên quan đến nonce. Tuy nhiên, trong một số trường hợp, chúng ta cần suy luận địa chỉ hợp đồng thông qua giao dịch và thông tin liên quan. Uniswap sử dụng phương pháp CREATE2 để tạo hợp đồng, thêm tham số salt, khiến cho địa chỉ hợp đồng được tạo ra có thể dự đoán được. Phương pháp 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ể.
Sử dụng hàm callback một cách thông minh
Trong Solidity, các hợp đồng có thể gọi lẫn nhau. Phương thức swap của Uniswap sử dụng cơ chế gọi lại, đảm bảo rằng toàn bộ logic giao dịch được thực hiện đầy đủ mà không cần ghi lại các biến phức tạp để đảm bảo an toàn.
Thông tin truyền đạt bất thường và ước lượng giao dịch
Trong hợp đồng Quoter của Uniswap, phương pháp swap được thực thi qua try-catch để bắt các lỗi cụ thể nhằm ước tính token cần thiết cho giao dịch. Phương pháp này vừa thực dụng vừa đơn giản, không cần phải cải tạo riêng phương pháp swap cho việc ước tính nhu cầu.
Giải quyết vấn đề độ chính xác của số lớn
Uniswap thường sử dụng thao tác dịch trái 96 bit (tương đương với nhân với 2^96) trong quá trình tính toán để đảm bảo độ chính xác mà không bị tràn. Phương pháp này đặc biệt hiệu quả trong việc xử lý tính toán giá cả và thanh khoản.
Tính toán lợi nhuận theo chế độ Chia sẻ
Để tránh việc phải ghi lại phí giao dịch cho mỗi nhà cung cấp thanh khoản (LP) trong mỗi giao dịch, Uniswap đã áp dụng một phương pháp tương tự như cổ tức cổ phiếu. Bằng cách ghi lại tổng phí giao dịch và phí phải phân bổ cho mỗi thanh khoản, LP có thể tính toán lợi nhuận của mình dựa trên thanh khoản nắm giữ khi rút tiền.
Chiến lược thu thập thông tin trên chuỗi
Không phải tất cả thông tin đều cần phải lấy từ chuỗi. Ví dụ, danh sách hồ bơi giao dịch, thông tin hồ bơi giao dịch có thể được lưu trữ trong cơ sở dữ liệu truyền thống và đồng bộ định kỳ từ chuỗi. Phương pháp này có thể cải thiện đáng kể hiệu suất và hiệu quả.
Chia hợp đồng và sử dụng hợp đồng tiêu chuẩn
Các dự án lớn có thể bao gồm nhiều hợp đồng được triển khai thực tế, hoặc chia một hợp đồng thành nhiều hợp đồng thông qua kế thừa. Hợp đồng NonfungiblePositionManager của Uniswap là một ví dụ rất tốt, nó kế thừa từ nhiều hợp đồng và sử dụng hợp đồng ERC721 tiêu chuẩn của OpenZeppelin.
Thực hành mang lại kiến thức thực sự. Bằng cách tự tay thực hiện một phiên bản đơn giản của sàn giao dịch phi tập trung, bạn sẽ hiểu sâu hơn về cách mã của Uniswap được triển khai và có được kinh nghiệm quý báu trong các dự án thực tế. Dù bạn là người đam mê Web3 hay nhà phát triển dự án Defi, tôi tin rằng những mẹo này sẽ hữu ích cho bạn.