Gần đây, khi viế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 một số dự án nổi tiếng và học được nhiều kỹ thuật phát triển hợp đồng thú vị. Là một người mới lần đầu thử nghiệm phát triển hợp đồng Defi, những kỹ thuật 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.
Địa chỉ hợp đồng có thể dự đoán
Thông thường, địa chỉ của hợp đồng được triển khai trông có vẻ ngẫu nhiên, vì nó liên quan đến nonce. Nhưng 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ề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ỉ của bể.
Một phương pháp là sử dụng cách CREATE2 để tạo hợp đồng, thông qua việc thêm tham số salt để làm cho địa chỉ được tạo ra có thể dự đoán. Logic tạo địa chỉ mới là: hash("0xFF", địa chỉ người tạo, salt, initcode).
Sử dụng hàm callback một cách thông minh
Trong một số tình huống, việc hợp đồng A gọi phương thức của hợp đồng B và B lại gọi lại phương thức của A là rất hữu ích.
Ví dụ, trong 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 thực tế cần thiết. Bên gọi sẽ chuyển Token vào pool trong hàm gọi lại, điều này đảm bảo tính an toàn và toàn vẹn của phương thức swap, không cần ghi chép biến phức tạp.
Sử dụng ngoại lệ để truyền thông tin
Trong việc giao dịch mô phỏng để ước tính Token cần thiết, có thể ném ra lỗi đặc biệt trong hàm callback, sau đó bắt lỗi đó và phân tích thông tin cần thiết từ nó. Như vậy không cần phải cải tiến phương thức swap riêng cho ước tính nhu cầu, logic sẽ đơn giản hơn.
Giải quyết vấn đề độ chính xác của số lớn
Trong các tình huống liên quan đến tính toán, để tránh mất độ chính xác trong phép chia, có thể dịch trái 96 bit ( tương đương với nhân với 2^96), sau đó thực hiện phép chia. Bằng cách này, có thể đảm bảo độ chính xác mà không bị tràn.
Tính toán lợi nhuận theo phương thức Share
Đối với các tình huống cần ghi lại lợi nhuận phí LP, không thể ghi lại cho mỗi LP trong mỗi giao dịch, điều này sẽ tiêu tốn rất nhiều Gas. Có thể áp dụng cách tương tự như cổ tức cổ phiếu, chỉ ghi lại tổng phí và phí được phân bổ cho mỗi đơn vị thanh khoản, khi LP rút tiền sẽ tính theo thanh khoản nắm giữ.
Lưu trữ thông tin hỗ trợ ngoài chuỗi
Không phải tất cả thông tin đều cần được đưa lên blockchain hoặc lấy từ blockchain. Một số dữ liệu không quan trọng như danh sách giao dịch, thông tin pool, v.v. có thể được lưu trữ trong cơ sở dữ liệu thông thường và đồng bộ định kỳ từ blockchain. Điều này có thể cải thiện hiệu suất và hiệu quả.
Phân tách hợp đồng và tái sử dụng hợp đồng tiêu chuẩn
Các dự án lớn có thể chia nhỏ hợp đồng thành nhiều phần, hoặc chia nhỏ và 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 như ERC721, tăng cường hiệu quả phát triển.
Tự tay phát triển 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ề ứng dụng của những kỹ thuật này. Hy vọng những chia sẻ này sẽ hữu ích cho mọi người.
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.
19 thích
Phần thưởng
19
7
Chia sẻ
Bình luận
0/400
HappyMinerUncle
· 08-04 03:00
Điều này phức tạp quá nhỉ, các bạn Người khai thác hãy nhận lấy hố.
Xem bản gốcTrả lời0
SadMoneyMeow
· 08-03 20:33
Cách chơi hợp đồng này thật quá xa xỉ.
Xem bản gốcTrả lời0
SandwichTrader
· 08-01 04:28
Một thế hệ mới tồi tệ nhưng không phải là những kẻ lừa đảo.
Xem bản gốcTrả lời0
LayerZeroHero
· 08-01 03:29
Khuyên bạn nên thử nghiệm trực tiếp trên dapptools, sử dụng gas để kiểm tra đáng tin cậy hơn.
Xem bản gốcTrả lời0
hodl_therapist
· 08-01 03:21
Bạn chắc chắn rằng đây là công nghệ mới nhất không... trông có vẻ hơi cũ.
7 mẹo phát triển hợp đồng hữu ích hỗ trợ dự án Defi
Chia sẻ mẹo phát triển hợp đồng
Gần đây, khi viế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 một số dự án nổi tiếng và học được nhiều kỹ thuật phát triển hợp đồng thú vị. Là một người mới lần đầu thử nghiệm phát triển hợp đồng Defi, những kỹ thuật 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.
Địa chỉ hợp đồng có thể dự đoán
Thông thường, địa chỉ của hợp đồng được triển khai trông có vẻ ngẫu nhiên, vì nó liên quan đến nonce. Nhưng 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ề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ỉ của bể.
Một phương pháp là sử dụng cách CREATE2 để tạo hợp đồng, thông qua việc thêm tham số salt để làm cho địa chỉ được tạo ra có thể dự đoán. Logic tạo địa chỉ mới là: hash("0xFF", địa chỉ người tạo, salt, initcode).
Sử dụng hàm callback một cách thông minh
Trong một số tình huống, việc hợp đồng A gọi phương thức của hợp đồng B và B lại gọi lại phương thức của A là rất hữu ích.
Ví dụ, trong 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 thực tế cần thiết. Bên gọi sẽ chuyển Token vào pool trong hàm gọi lại, điều này đảm bảo tính an toàn và toàn vẹn của phương thức swap, không cần ghi chép biến phức tạp.
Sử dụng ngoại lệ để truyền thông tin
Trong việc giao dịch mô phỏng để ước tính Token cần thiết, có thể ném ra lỗi đặc biệt trong hàm callback, sau đó bắt lỗi đó và phân tích thông tin cần thiết từ nó. Như vậy không cần phải cải tiến phương thức swap riêng cho ước tính nhu cầu, logic sẽ đơn giản hơn.
Giải quyết vấn đề độ chính xác của số lớn
Trong các tình huống liên quan đến tính toán, để tránh mất độ chính xác trong phép chia, có thể dịch trái 96 bit ( tương đương với nhân với 2^96), sau đó thực hiện phép chia. Bằng cách này, có thể đảm bảo độ chính xác mà không bị tràn.
Tính toán lợi nhuận theo phương thức Share
Đối với các tình huống cần ghi lại lợi nhuận phí LP, không thể ghi lại cho mỗi LP trong mỗi giao dịch, điều này sẽ tiêu tốn rất nhiều Gas. Có thể áp dụng cách tương tự như cổ tức cổ phiếu, chỉ ghi lại tổng phí và phí được phân bổ cho mỗi đơn vị thanh khoản, khi LP rút tiền sẽ tính theo thanh khoản nắm giữ.
Lưu trữ thông tin hỗ trợ ngoài chuỗi
Không phải tất cả thông tin đều cần được đưa lên blockchain hoặc lấy từ blockchain. Một số dữ liệu không quan trọng như danh sách giao dịch, thông tin pool, v.v. có thể được lưu trữ trong cơ sở dữ liệu thông thường và đồng bộ định kỳ từ blockchain. Điều này có thể cải thiện hiệu suất và hiệu quả.
Phân tách hợp đồng và tái sử dụng hợp đồng tiêu chuẩn
Các dự án lớn có thể chia nhỏ hợp đồng thành nhiều phần, hoặc chia nhỏ và 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 như ERC721, tăng cường hiệu quả phát triển.
Tự tay phát triển 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ề ứng dụng của những kỹ thuật này. Hy vọng những chia sẻ này sẽ hữu ích cho mọi người.