Repo tampaknya bersifat privat: Setiap opsi memiliki kelebihan dan kekurangannya masing-masing sehingga Anda dapat membuat implementasi hibrida untuk memitigasi, berikut adalah beberapa aplikasi multi-program yang dapat Anda adopsi:
Marinade Finance: menggunakan program inti tunggal + program satelit untuk domain tertentu. Anda dapat memeriksa bagaimana mereka menangani otoritas admin vs otoritas operasional (program inti memiliki multisig dewan sebagai admin, tetapi PDA untuk operasi penarikan stake). Selain itu, program referral adalah wrapper yang melakukan CPI ke program utama
Marginfi: menggunakan isolasi berbasis grup dengan program bersama
Ellipsis Labs: menggunakan program inti + program tambahan yang melakukan CPI ke inti. phoenix-v1 adalah orderbook inti sementara program seat manager dan market maker melakukan CPI ke dalamnya
Jebakan Umum:
Mempercayai ID program pemanggil secara buta — Hanya karena sebuah CPI berasal dari Program X bukan berarti Program X telah memverifikasi pengguna. Selalu periksa ulang signer yang relevan. Lupa bahwa PDA tidak mempertahankan status signer di seluruh instruksi — PDA yang menandatangani di instruksi 1 tidak secara otomatis menjadi signer di instruksi 2 kecuali Anda melakukan CPI dengan invoke_signed lagi. Otoritas upgrade terpusat — Jika semua program berbagi otoritas upgrade, modularitas Anda bersifat ilusi. Pertimbangkan multisig.