Gần đây, khi phát triển một dự án sàn giao dịch phi tập trung, tôi đã tham khảo một số mã nguồn của các DEX nổi tiếng và học được nhiều kỹ thuật phát triển hợp đồng thú vị. Với tư cách là một người mới bắt đầu tiếp xúc với phát triển 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 nó 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 thông minh.
Địa chỉ hợp đồng dự đoán
Địa chỉ hợp đồng được triển khai thườ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 thông tin giao dịch. Đ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, bằng cách thêm tham số salt khi tạo hợp đồng. Địa chỉ được tạo ra theo cách này là có thể dự đoán, tuân theo logic "địa chỉ mới = hash('0xFF', địa chỉ người tạo, salt, initcode)".
Sử dụng hàm callback
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 A trong phương thức được gọi là rất hữu ích. Ví dụ, trong DEX, khi gọi phương thức swap của hợp đồng hồ bơi giao dịch, nó 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 cần chuyển Token cần thiết vào hồ bơi giao dịch trong cuộc gọi lại, đ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.
Truyền thông tin bằng ngoại lệ
Trong việc ước lượng giao dịch, có thể sử dụng try-catch để bao bọc việc thực hiện phương thức swap. Bởi vì trong ước lượng sẽ không thực hiện việc hoán đổi Token, nên sẽ phát sinh lỗi. Có thể ném ra lỗi đặc biệt trong hàm callback và sau đó bắt và phân tích thông tin cần thiết. Phương pháp này tránh việc phải sửa đổi phương thức swap chỉ dành cho nhu cầu ước lượng, làm cho logic trở nên gọn gàng hơn.
Vấn đề độ chính xác trong xử lý số lớn
Khi liên quan đến việc tính toán giá cả và tính thanh khoản, để tránh mất độ chính xác do phép chia, có thể trước tiên dịch chuyển giá trị sang trái 96 bit ( tương đương với việc nhân với 2^96) rồi tiến hành tính toán. Mặc dù về lý thuyết vẫn sẽ có một chút mất độ chính xác, nhưng trong phạm vi chấp nhận được.
Tính toán lợi nhuận theo cách Chia sẻ
Đối với thu nhập phí giao dịch của nhà cung cấp tính thanh khoản, không cần phải ghi lại mỗi giao dịch. Có thể ghi lại tổng phí giao dịch và phí phải nhận cho mỗi đơn vị tính thanh khoản, số tiền có thể rút khi LP rút được tính toán dựa trên tính thanh khoản đang nắm giữ. Điều này tương tự như nguyên lý cổ tức cổ phiếu.
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 được đưa lên chuỗi hoặc lấy từ chuỗi. Ví dụ, danh sách hồ bơi giao dịch, thông tin, v.v. có thể được lưu trữ trong cơ sở dữ liệu truyền thống và được đồng bộ định kỳ từ chuỗi. Điều này có thể cải thiện hiệu quả và giảm chi phí. Tất nhiên, các giao dịch quan trọng vẫn cần phải diễn ra trên chuỗi.
Phân tách hợp đồng và sử dụng hợp đồng tiêu chuẩn
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 tách mã thông qua kế thừa. Đồng thời, có thể tận 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ụ, sử dụng NFT để quản lý vị thế thanh khoản.
Để hiểu sâu về những kỹ thuật này, cách tốt nhất là tự tay phát triển một phiên bản DEX đơn giản. Trong thực hành, bạn sẽ hiểu sâu hơn về các ý tưởng thiết kế khác nhau và cũng có thể học được nhiều kiến thức hữu ích hơn. Hy vọng những chia sẻ này sẽ mang lại cho bạn nguồn cảm hứng và sự giúp đỡ.
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.
10 thích
Phần thưởng
10
2
Chia sẻ
Bình luận
0/400
AirdropHustler
· 07-19 11:31
Kỹ năng phát triển này có thể coi là bán với lợi nhuận mỏng cho Bro.
7 mẹo phát triển hợp đồng thông minh hữu ích hỗ trợ dự án DEX
Chia sẻ mẹo nhỏ về phát triển hợp đồng
Gần đây, khi phát triển một dự án sàn giao dịch phi tập trung, tôi đã tham khảo một số mã nguồn của các DEX nổi tiếng và học được nhiều kỹ thuật phát triển hợp đồng thú vị. Với tư cách là một người mới bắt đầu tiếp xúc với phát triển 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 nó 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 thông minh.
Địa chỉ hợp đồng dự đoán
Địa chỉ hợp đồng được triển khai thườ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 thông tin giao dịch. Đ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, bằng cách thêm tham số salt khi tạo hợp đồng. Địa chỉ được tạo ra theo cách này là có thể dự đoán, tuân theo logic "địa chỉ mới = hash('0xFF', địa chỉ người tạo, salt, initcode)".
Sử dụng hàm callback
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 A trong phương thức được gọi là rất hữu ích. Ví dụ, trong DEX, khi gọi phương thức swap của hợp đồng hồ bơi giao dịch, nó 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 cần chuyển Token cần thiết vào hồ bơi giao dịch trong cuộc gọi lại, đ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.
Truyền thông tin bằng ngoại lệ
Trong việc ước lượng giao dịch, có thể sử dụng try-catch để bao bọc việc thực hiện phương thức swap. Bởi vì trong ước lượng sẽ không thực hiện việc hoán đổi Token, nên sẽ phát sinh lỗi. Có thể ném ra lỗi đặc biệt trong hàm callback và sau đó bắt và phân tích thông tin cần thiết. Phương pháp này tránh việc phải sửa đổi phương thức swap chỉ dành cho nhu cầu ước lượng, làm cho logic trở nên gọn gàng hơn.
Vấn đề độ chính xác trong xử lý số lớn
Khi liên quan đến việc tính toán giá cả và tính thanh khoản, để tránh mất độ chính xác do phép chia, có thể trước tiên dịch chuyển giá trị sang trái 96 bit ( tương đương với việc nhân với 2^96) rồi tiến hành tính toán. Mặc dù về lý thuyết vẫn sẽ có một chút mất độ chính xác, nhưng trong phạm vi chấp nhận được.
Tính toán lợi nhuận theo cách Chia sẻ
Đối với thu nhập phí giao dịch của nhà cung cấp tính thanh khoản, không cần phải ghi lại mỗi giao dịch. Có thể ghi lại tổng phí giao dịch và phí phải nhận cho mỗi đơn vị tính thanh khoản, số tiền có thể rút khi LP rút được tính toán dựa trên tính thanh khoản đang nắm giữ. Điều này tương tự như nguyên lý cổ tức cổ phiếu.
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 được đưa lên chuỗi hoặc lấy từ chuỗi. Ví dụ, danh sách hồ bơi giao dịch, thông tin, v.v. có thể được lưu trữ trong cơ sở dữ liệu truyền thống và được đồng bộ định kỳ từ chuỗi. Điều này có thể cải thiện hiệu quả và giảm chi phí. Tất nhiên, các giao dịch quan trọng vẫn cần phải diễn ra trên chuỗi.
Phân tách hợp đồng và sử dụng hợp đồng tiêu chuẩn
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 tách mã thông qua kế thừa. Đồng thời, có thể tận 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ụ, sử dụng NFT để quản lý vị thế thanh khoản.
Để hiểu sâu về những kỹ thuật này, cách tốt nhất là tự tay phát triển một phiên bản DEX đơn giản. Trong thực hành, bạn sẽ hiểu sâu hơn về các ý tưởng thiết kế khác nhau và cũng có thể học được nhiều kiến thức hữu ích hơn. Hy vọng những chia sẻ này sẽ mang lại cho bạn nguồn cảm hứng và sự giúp đỡ.