عناوين مشتقة من البرنامج (PDAs)

عناوين Program Derived Addresses (PDAs) هي عناوين حسابات بحجم 32 بايت يتم اشتقاقها بشكل حتمي من معرف برنامج ومجموعة من seeds. يُضمن أنها لا تقع على منحنى Ed25519، مما يعني عدم وجود مفتاح خاص لها. فقط البرنامج الذي تم استخدام معرفه في الاشتقاق يمكنه "التوقيع" لـ PDA، ويقوم بذلك من خلال invoke_signed أثناء استدعاءات البرامج المتقاطعة (CPIs).

Program Derived AddressProgram Derived Address

حقائق أساسية

  • حتمي: نفس seeds ومعرف البرنامج ينتجان دائماً نفس العنوان.
  • خارج المنحنى: يتم التحقق من أن العنوان المشتق ليس مفتاحاً عاماً صالحاً لـ Ed25519. إذا وقع الـ hash على المنحنى، يفشل الاشتقاق ويتم تجربة bump seed مختلف.
  • لا يوجد مفتاح خاص: نظراً لأن العنوان خارج المنحنى، لا يمكن لأحد إنتاج توقيع تشفيري له. يقوم البرنامج بـ "التوقيع" عبر آلية invoke_signed الخاصة بوقت التشغيل بدلاً من ذلك.

متى تستخدم PDAs

  • عنونة حتمية: اشتق نفس الحساب من نفس seeds في كل مرة.
  • توقيع البرنامج: فقط البرنامج المالك يمكنه التوقيع عبر invoke_signed، مما يمكّن البرامج من العمل كسلطات مستقلة.
  • حالة محددة للمستخدم: اشتق حسابات لكل مستخدم من seeds مفتاح المستخدم العام (مثل ["user", user_pubkey]).
  • لا توجد إدارة keypair: لا يوجد مفتاح خاص لتخزينه أو فقدانه. يتم اشتقاق العنوان بشكل كامل من seeds.

الحدود

الحدالقيمةالمصدر
الحد الأقصى للـ seeds16MAX_SEEDS
الحد الأقصى لطول الـ seed32 بايت كحد أقصى لكل seedMAX_SEED_LEN
نطاق الـ bump0-255 (1 بايت)يُضاف كعنصر seed نهائي
تكلفة create_program_address1,500 وحدة حسابيةcreate_program_address_units
أسوأ تكلفة لـ find_program_address1,500 عند الدخول + 1,500 × التكرارات1,500 عند الدخول + 1,500 لكل bump فاشل
الحد الأقصى لموقعي PDA لكل CPI16MAX_SIGNERS

Is this page helpful?

جدول المحتويات

تعديل الصفحة

تدار بواسطة

© 2026 مؤسسة سولانا.
جميع الحقوق محفوظة.
تواصل معنا