Repo có vẻ là private: Mỗi lựa chọn đều có ưu và nhược điểm riêng, vì vậy bạn có thể tạo một triển khai hybrid để giảm thiểu rủi ro, dưới đây là một số ứng dụng đa chương trình bạn có thể áp dụng:
Marinade Finance: sử dụng một chương trình lõi duy nhất + các chương trình vệ tinh cho các miền cụ thể. Bạn có thể xem cách họ xử lý quyền admin so với quyền vận hành (chương trình lõi có một council multisig làm admin, nhưng dùng PDA cho các hoạt động rút stake). Ngoài ra, chương trình referral là một wrapper CPI vào chương trình chính
Marginfi: sử dụng cách ly theo nhóm với chương trình chia sẻ
Ellipsis Labs: sử dụng chương trình lõi + các chương trình phụ trợ CPI vào lõi. phoenix-v1 là orderbook lõi trong khi các chương trình seat manager và market maker CPI vào nó
Các cạm bẫy phổ biến:
Tin tưởng mù quáng vào program ID của bên gọi — Chỉ vì một CPI đến từ Program X không có nghĩa là Program X đã xác minh người dùng. Luôn kiểm tra lại các signer liên quan. Quên rằng PDA không duy trì trạng thái signer xuyên suốt các instruction — Một PDA đã ký ở instruction 1 không tự động là signer ở instruction 2 trừ khi bạn CPI với invoke_signed lần nữa. Quyền nâng cấp tập trung — Nếu tất cả các chương trình chia sẻ cùng một quyền nâng cấp, tính module của bạn chỉ là ảo giác. Hãy cân nhắc dùng multisig.