Hướng dẫn cho người mới về Web3: Chia sẻ kỹ thuật phát triển hợp đồng 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 điểm thú vị. Là một nhà phát triển lần đầu 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.
Địa chỉ triển khai hợp đồng có thể dự đoán
Địa chỉ hợp đồng được triển khai thường trô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 cách CREATE2 để tạo hợp đồng, thêm tham số salt để đị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).
Khéo léo sử dụng 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ụ, khi gọi phương thức swap của một nền tảng giao dịch nào đó, nó 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ể giao dịch 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ệ
Trong việc ước tính giao dịch, một số nền tảng bọc việc thực thi phương thức swap bằng try catch. Do việc ước tính sẽ không thực sự tạo ra sự trao đổi Token, sẽ kích hoạt lỗi. 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, có thể lấy được dữ liệu cần thiết. Phương pháp này tránh nhu cầu phải cải tiến phương thức swap cho việc ước tính giao dịch.
Đảm bảo độ chính xác trong phép toán 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ể sử dụng thao tác dịch trái (tương đương với nhân với 2^96). Bằng cách này, có thể đảm bảo độ chính xác trong trường hợp giao dịch bình thường không bị tràn. Mặc dù về lý thuyết vẫn tồn tại một chút mất độ chính xác, nhưng đã có thể chấp nhận.
Tính toán lợi nhuận từ cơ chế Share
Để tiết kiệm tiêu thụ Gas, không thể ghi lại phí giao dịch cho mỗi nhà cung cấp thanh khoản trong mỗi giao dịch. Có thể ghi lại tổng phí giao dịch và phí giao dịch được phân bổ cho mỗi thanh khoản, phí có thể rút sẽ được tính toán dựa trên thanh khoản nắm giữ khi LP rút. Điều này tương tự như cơ chế chia cổ tức của cổ phiếu.
Sử dụng hợp lý dữ liệu ngoài chuỗi
Không phải tất cả thông tin đều cần được lấy từ chuỗi. Ví dụ, danh sách hồ giao dịch, thông tin hồ giao dịch có thể được lưu trữ trong cơ sở dữ liệu truyền thống và đồng bộ từ chuỗi định kỳ. Một số nhà cung cấp RPC blockchain cung cấp giao diện cao cấp, giúp lấy dữ liệu nhanh hơn và tiết kiệm chi phí hơn.
Tách hợp đồng và ứng dụng hợp đồng tiêu chuẩn
Dự án có thể chứa nhiều hợp đồng được triển khai thực tế, hoặc chia nhỏ một hợp đồng thành nhiều hợp đồng thông qua kế thừa. Việc sử dụng các hợp đồng tiêu chuẩn hiện có (như ERC721) có thể nâng cao hiệu quả phát triển. Ví dụ, một số nền tảng sử dụng hợp đồng ERC721 để quản lý vị trí, vừa tiện lợi trong quản lý vừa nâng cao hiệu quả phát triển.
Thực hành là phương pháp học tốt nhất. Cố gắng triển khai 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ã của DEX chính thống, học hỏi được nhiều kiến thức trong các dự án thực tế. Khuyên các nhà phát triển quan tâm tham khảo các khóa học mã nguồn mở liên quan, từng bước hoàn thành việc phát triển sàn giao dịch đơn giả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.
22 thích
Phần thưởng
22
6
Đăng lại
Chia sẻ
Bình luận
0/400
BagHolderTillRetire
· 07-08 01:52
Hợp đồng làm tôi cảm thấy đau đầu.
Xem bản gốcTrả lời0
RugDocScientist
· 07-05 04:24
Có chút gì đó, anh bạn đúng là biết tóm tắt.
Xem bản gốcTrả lời0
SeasonedInvestor
· 07-05 04:20
Hì hì Người mới thân thiện, nếu không học được thì đừng học nữa.
Xem bản gốcTrả lời0
SatoshiLegend
· 07-05 04:17
Chi tiết kỹ thuật không hoàn thiện, vẫn còn nhiều lỗ hổng ở cấp độ nguồn gốc... Khuyên bạn nên tham khảo mã nguồn v2
Bảy mẹo phát triển hợp đồng Uniswap Hướng dẫn cần đọc cho người mới
Hướng dẫn cho người mới về Web3: Chia sẻ kỹ thuật phát triển hợp đồng 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 điểm thú vị. Là một nhà phát triển lần đầu 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.
Địa chỉ triển khai hợp đồng có thể dự đoán
Địa chỉ hợp đồng được triển khai thường trô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 cách CREATE2 để tạo hợp đồng, thêm tham số salt để đị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).
Khéo léo sử dụng 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ụ, khi gọi phương thức swap của một nền tảng giao dịch nào đó, nó 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ể giao dịch 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ệ
Trong việc ước tính giao dịch, một số nền tảng bọc việc thực thi phương thức swap bằng try catch. Do việc ước tính sẽ không thực sự tạo ra sự trao đổi Token, sẽ kích hoạt lỗi. 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, có thể lấy được dữ liệu cần thiết. Phương pháp này tránh nhu cầu phải cải tiến phương thức swap cho việc ước tính giao dịch.
Đảm bảo độ chính xác trong phép toán 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ể sử dụng thao tác dịch trái (tương đương với nhân với 2^96). Bằng cách này, có thể đảm bảo độ chính xác trong trường hợp giao dịch bình thường không bị tràn. Mặc dù về lý thuyết vẫn tồn tại một chút mất độ chính xác, nhưng đã có thể chấp nhận.
Tính toán lợi nhuận từ cơ chế Share
Để tiết kiệm tiêu thụ Gas, không thể ghi lại phí giao dịch cho mỗi nhà cung cấp thanh khoản trong mỗi giao dịch. Có thể ghi lại tổng phí giao dịch và phí giao dịch được phân bổ cho mỗi thanh khoản, phí có thể rút sẽ được tính toán dựa trên thanh khoản nắm giữ khi LP rút. Điều này tương tự như cơ chế chia cổ tức của cổ phiếu.
Sử dụng hợp lý dữ liệu ngoài chuỗi
Không phải tất cả thông tin đều cần được lấy từ chuỗi. Ví dụ, danh sách hồ giao dịch, thông tin hồ giao dịch có thể được lưu trữ trong cơ sở dữ liệu truyền thống và đồng bộ từ chuỗi định kỳ. Một số nhà cung cấp RPC blockchain cung cấp giao diện cao cấp, giúp lấy dữ liệu nhanh hơn và tiết kiệm chi phí hơn.
Tách hợp đồng và ứng dụng hợp đồng tiêu chuẩn
Dự án có thể chứa nhiều hợp đồng được triển khai thực tế, hoặc chia nhỏ một hợp đồng thành nhiều hợp đồng thông qua kế thừa. Việc sử dụng các hợp đồng tiêu chuẩn hiện có (như ERC721) có thể nâng cao hiệu quả phát triển. Ví dụ, một số nền tảng sử dụng hợp đồng ERC721 để quản lý vị trí, vừa tiện lợi trong quản lý vừa nâng cao hiệu quả phát triển.
Thực hành là phương pháp học tốt nhất. Cố gắng triển khai 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ã của DEX chính thống, học hỏi được nhiều kiến thức trong các dự án thực tế. Khuyên các nhà phát triển quan tâm tham khảo các khóa học mã nguồn mở liên quan, từng bước hoàn thành việc phát triển sàn giao dịch đơn giản.