الرموز المميزة هي أصول رقمية تمثل الملكية عبر فئات متنوعة من الأصول. يتيح الترميز رقمنة حقوق الملكية. يُشار إلى الرموز المميزة على سولانا باسم رموز SPL (مكتبة برامج سولانا).
يغطي هذا القسم المفاهيم الأساسية لكيفية تمثيل الرموز المميزة على سولانا. راجع قسم أساسيات رموز SPL للحصول على أمثلة التعليمات البرمجية.
النقاط الرئيسية
-
Token Programs تحتوي على منطق التعليمات الكامل للتفاعل مع الرموز على الشبكة (سواء القابلة للاستبدال أو غير القابلة للاستبدال).
-
يمثل حساب الإصدار رمزًا مميزًا محددًا ويخزن البيانات الوصفية العامة حول الرمز المميز مثل إجمالي العرض وسلطة الإصدار (العنوان المصرح له بإنشاء وحدات جديدة من الرمز المميز).
-
يتتبع حساب الرمز المميز الملكية الفردية للرموز المميزة لحساب إصدار محدد لمالك محدد.
-
حساب الرمز المميز المرتبط هو حساب رمز مميز يتم إنشاؤه بعنوان مشتق من عناوين المالك وحساب الإصدار.
برامج الرموز المميزة
يحتوي نظام سولانا البيئي على برنامجين رئيسيين للرموز المميزة. الكود المصدري لكلا البرنامجين أدناه.
Token Program (الأصلي)
- قدرة الرموز المميزة الأساسية (الإصدار، النقل، إلخ.)
- ثابت ومستخدم على نطاق واسع
Token Extension Program (Token 2022)
- يتضمن جميع ميزات Token Program الأصلي
- يضيف ميزات من خلال "الإضافات"
Token Programs تحتوي على منطق التعليمات الكامل للتفاعل مع الرموز على الشبكة (سواء القابلة للاستبدال أو غير القابلة للاستبدال). جميع الرموز على سولانا هي في الأساس حسابات بيانات مملوكة لـ Token Program.
Token Program
حساب الإصدار
يتم تحديد الرموز المميزة على سولانا بشكل فريد من خلال عنوان حساب الإصدار المملوك لـ Token Program. يعمل هذا الحساب كعداد عام لرمز مميز محدد ويخزن بيانات مثل:
- العرض: إجمالي عرض الرمز
- الكسور العشرية: الدقة العشرية للرمز
- سلطة الإصدار: الحساب المخول بإنشاء وحدات جديدة من الرمز، مما يزيد من العرض
- سلطة التجميد: الحساب المخول بتجميد الرموز في token account، مما يمنع نقلها أو حرقها
يتم تهيئة صلاحية الإصدار عند تهيئة mint account. وهي تُخوِّل عمليات الإصدار المستقبلية، غير أنه لا يشترط أن يكون الحساب الذي أنشأ mint account أو دفع تكاليفه هو صاحب هذه الصلاحية.
حساب الإصدار
التفاصيل الكاملة المخزنة في كل mint account تشمل ما يلي:
pub struct Mint {/// Optional authority used to mint new tokens. The mint authority may only/// be provided during mint creation. If no mint authority is present/// then the mint has a fixed supply and no further tokens may be/// minted.pub mint_authority: COption<Pubkey>,/// Total supply of tokens.pub supply: u64,/// Number of base 10 digits to the right of the decimal place.pub decimals: u8,/// Is `true` if this structure has been initializedpub is_initialized: bool,/// Optional authority to freeze token accounts.pub freeze_authority: COption<Pubkey>,}
للمرجعية، إليك رابط Solana Explorer لـ حساب إصدار USDC.
حساب الرمز (Token Account)
ينشئ Token Program حسابات الرموز لتتبع الملكية الفردية لكل وحدة رمز. يخزن token account بيانات مثل:
- الإصدار: الرمز الذي يحتفظ به token account
- المالك: الحساب المخول بنقل الرموز من token account
- الكمية: عدد الرموز التي يحتفظ بها token account حاليًا
حساب الرمز
التفاصيل الكاملة المخزنة في كل token account تشمل ما يلي:
pub struct Account {/// The mint associated with this accountpub mint: Pubkey,/// The owner of this account.pub owner: Pubkey,/// The amount of tokens this account holds.pub amount: u64,/// If `delegate` is `Some` then `delegated_amount` represents/// the amount authorized by the delegatepub delegate: COption<Pubkey>,/// The account's statepub state: AccountState,/// If is_native.is_some, this is a native token, and the value logs the/// rent-exempt reserve. An Account is required to be rent-exempt, so/// the value is used by the Processor to ensure that wrapped SOL/// accounts do not drop below this threshold.pub is_native: COption<u64>,/// The amount delegatedpub delegated_amount: u64,/// Optional authority to close the account.pub close_authority: COption<Pubkey>,}
تحتاج المحفظة إلى token account لكل رمز (mint) ترغب في الاحتفاظ به، مع تعيين عنوان المحفظة كمالك لـ token account. يمكن لكل محفظة امتلاك عدة token accounts لنفس الرمز (mint)، ولكن يمكن أن يكون لـ token account مالك واحد فقط ويحتفظ بوحدات من رمز واحد (mint).
علاقة الحسابات
لاحظ أن بيانات كل token account تتضمن حقل owner يُحدِّد من يملك الصلاحية على هذا token account. ويختلف هذا عن مالك البرنامج المُحدَّد في نوع الحساب الأساسي، والذي هو Token Program لجميع token accounts.
حساب الرمز المرتبط (Associated Token Account)
تعمل حسابات الرموز المميزة المرتبطة على تبسيط عملية العثور على عنوان token account لـ mint ومالك محددين. فكر في associated token account على أنه token account "الافتراضي" لـ mint ومالك محددين.
يتم إنشاء associated token account بعنوان مشتق من عنوان المالك وعنوان mint account. من المهم أن تفهم أن associated token account هو مجرد token account بعنوان محدد.
يقدم هذا مفهومًا أساسيًا في تطوير سولانا: Program Derived Address (PDA). يشتق PDA عنوانًا بشكل حتمي باستخدام مدخلات محددة مسبقًا، مما يسهل العثور على عنوان الحساب.
حساب الرمز المميز المرتبط
لاحظ أن كل محفظة تحتاج إلى token account خاص بها للاحتفاظ بالرموز المميزة من نفس الـ mint.
علاقة الحسابات الموسعة
Is this page helpful?