@@ -27,7 +27,11 @@ description:
2727
2828### المفتاح العام
2929
30- يوضح المثال أدناه كيفية استخدام مكتبة تطوير سولانا لإنشاء زوج مفاتيح.
30+ يوضح المثال أدناه كيفية استخدام مجموعة تطوير برمجيات سولانا لإنشاء keypair.
31+ يتضمن ` Keypair ` ما يلي:
32+
33+ - مفتاح عام يعمل كعنوان الحساب
34+ - مفتاح خاص يُستخدم لتوقيع المعاملات
3135
3236<CodeTabs storage = " accounts" flags = " r" >
3337
@@ -60,11 +64,11 @@ async fn main() {
6064
6165</CodeTabs >
6266
63- ### العنوان المشتق من البرنامج
67+ ### Program Derived Address
6468
65- [ العنوان المشتق من البرنامج ] ( /docs/core/pda ) (PDA) هو عنوان يتم اشتقاقه بشكل
66- حتمي باستخدام معرّف البرنامج ومدخل واحد أو أكثر اختياري (بذور ). يوضح المثال
67- أدناه كيفية استخدام مكتبة تطوير سولانا لإنشاء عنوان مشتق من البرنامج .
69+ [ Program Derived Address ] ( /docs/core/pda ) (PDA) هو عنوان يتم اشتقاقه بشكل حتمي
70+ باستخدام معرّف البرنامج ومدخلات اختيارية واحدة أو أكثر (البذور ). يوضح المثال
71+ أدناه كيفية استخدام مجموعة تطوير برمجيات سولانا لإنشاء Program Derived Address .
6872
6973<CodeTabs storage = " accounts" flags = " r" >
7074
@@ -124,12 +128,12 @@ async fn main() {
124128
125129<WithMentions >
126130
127- - [ ` lamports ` ] ( mention:lamports ) : عدد [ لامبورتس ] ( #lamports ) في الحساب
128- - [ ` data ` ] ( mention:data ) : [ بيانات] ( #data ) الحساب
129- - [ ` owner ` ] ( mention:owner ) : معرّف البرنامج الذي [ يملك] ( #owner ) الحساب
130- - [ ` executable ` ] ( mention:executable ) : يشير إلى ما إذا كان الحساب يحتوي على ثنائي
131- [ قابل للتنفيذ] ( #executable )
132- - [ ` rent_epoch ` ] ( mention:rent_epoch ) : حقل [ فترة الإيجار ] ( # rent- epoch) المهمل
131+ - [ ` lamports ` ] ( mention:lamports ) : عدد وحدات lamport في الحساب
132+ - [ ` data ` ] ( mention:data ) : بيانات الحساب
133+ - [ ` owner ` ] ( mention:owner ) : معرّف البرنامج الذي يملك الحساب
134+ - [ ` executable ` ] ( mention:executable ) : يشير إلى ما إذا كان الحساب يحتوي على ملف
135+ ثنائي قابل للتنفيذ
136+ - [ ` rent_epoch ` ] ( mention:rent_epoch ) : حقل rent epoch المهمل
133137
134138``` rust title="Account"
135139pub struct Account {
@@ -156,23 +160,24 @@ pub struct Account {
156160
157161<ScrollyCoding >
158162
159- ## !!steps لامبورت
163+ ## !!steps وحدات Lamports
160164
161- رصيد الحساب بوحدة [ lamport] ( /docs/references/terminology#lamport ) .
165+ رصيد الحساب بوحدات [ lamport] ( /docs/references/terminology#lamport ) .
162166
163167يجب أن يكون لكل حساب حد أدنى من رصيد lamport، يسمى
164- [ rent] ( /docs/references/terminology#rent ) ، والذي يسمح بتخزين بياناته على
165- السلسلة. يتناسب الإيجار مع حجم الحساب.
168+ [ rent] ( /docs/references/terminology#rent ) ، مما يسمح بتخزين بياناته على السلسلة.
169+ يتناسب rent مع حجم الحساب.
166170
167171<Callout type = " info" >
168- على الرغم من أن هذا الرصيد يسمى إيجار ، إلا أنه يعمل أكثر مثل وديعة، حيث يمكن
172+ على الرغم من أن هذا الرصيد يسمى rent ، إلا أنه يعمل أكثر مثل وديعة، حيث يمكن
169173 استرداد الرصيد الكامل عند إغلاق الحساب. (يأتي اسم "rent" من حقل [ rent
170- epoch] ( #rent-epoch ) الذي تم إلغاؤه الآن.)
174+ epoch] ( #rent-epoch ) المهمل الآن.)
171175</Callout >
172176
173- (انظر صيغة
177+ (انظر
174178[ الحد الأدنى للرصيد] ( https://github.com/anza-xyz/agave/blob/v2.1.13/sdk/rent/src/lib.rs#L93-L97 )
175- و[ الثوابت] ( https://github.com/anza-xyz/agave/blob/v2.1.13/sdk/rent/src/lib.rs#L47-L70 )
179+ صيغة و
180+ [ الثوابت] ( https://github.com/anza-xyz/agave/blob/v2.1.13/sdk/rent/src/lib.rs#L47-L70 )
176181المطبقة.)
177182
178183``` rust !! title="Account Examples"
@@ -201,20 +206,20 @@ Account {
201206
202207## !!steps البيانات
203208
204- يشار إلى هذا الحقل عادةً باسم "بيانات الحساب". تعتبر ` data ` في هذا الحقل عشوائية
205- لأنها يمكن أن تحتوي على أي تسلسل من البايتات. يحدد كل برنامج هيكل البيانات
206- المخزنة في هذا الحقل.
209+ يشار إلى هذا الحقل عادةً باسم "بيانات الحساب". تعتبر ` data ` في هذا الحقل
210+ اعتباطية حيث يمكن أن تحتوي على أي تسلسل من البايتات. كل برنامج يحدد بنية
211+ البيانات المخزنة في هذا الحقل.
207212
208- - حسابات البرامج : يحتوي هذا الحقل إما على كود البرنامج القابل للتنفيذ أو عنوان
209- [ حساب بيانات البرنامج] ( #program-data-accounts ) الذي يخزن كود البرنامج القابل
213+ - program account : يحتوي هذا الحقل إما على رمز البرنامج القابل للتنفيذ أو عنوان
214+ [ حساب بيانات البرنامج] ( #program-data-accounts ) الذي يخزن رمز البرنامج القابل
210215 للتنفيذ.
211216- حسابات البيانات: يخزن هذا الحقل عمومًا بيانات الحالة، المقصود قراءتها.
212217
213218تتضمن قراءة البيانات من حساب سولانا خطوتين:
214219
2152201 . جلب الحساب باستخدام [ عنوانه] ( #account-address )
216- 2 . فك تشفير حقل ` data ` الخاص بالحساب من البايتات الخام إلى هيكل البيانات
217- المناسب ، كما هو محدد من قبل البرنامج الذي يملك الحساب.
221+ 2 . فك تشفير حقل ` data ` الخاص بالحساب من البايتات الخام إلى بنية البيانات
222+ المناسبة ، كما هو محدد من قبل البرنامج الذي يملك الحساب.
218223
219224``` rust !! title="Account Examples"
220225// Example Token Mint Account
@@ -244,14 +249,15 @@ Account {
244249
245250## !!steps المالك
246251
247- يحتوي هذا الحقل على معرف البرنامج الخاص بمالك الحساب.
252+ يحتوي هذا الحقل على معرف البرنامج لمالك الحساب.
248253
249- كل حساب في سولانا له [ برنامج] ( /docs/core/programs ) معين كمالك له. مالك الحساب هو
250- البرنامج الوحيد الذي يمكنه تغيير ` data ` الخاصة بالحساب أو خصم وحدات lamport ، كما
254+ كل حساب في سولانا لديه [ برنامج] ( /docs/core/programs ) معين كمالك له. مالك الحساب
255+ هو البرنامج الوحيد الذي يمكنه تغيير ` data ` الخاصة بالحساب أو خصم لامبورتس ، كما
251256هو موضح في تعليمات البرنامج.
252257
253- (في حالة حساب البرنامج، يكون المالك هو
254- [ برنامج التحميل الخاص به] ( https://solana.com/docs/core/programs#loader-programs ) .)
258+ (في حالة program account، يكون المالك هو
259+ [ برنامج التحميل] ( https://solana.com/docs/core/programs#loader-programs ) الخاص
260+ به.)
255261
256262``` rust !! title="Account Examples"
257263// Example Token Mint Account
@@ -279,10 +285,10 @@ Account {
279285
280286## !!steps قابل للتنفيذ
281287
282- يشير هذا الحقل إلى ما إذا كان الحساب هو [ حساب برنامج ] ( #program-accounts ) أو
288+ يشير هذا الحقل إلى ما إذا كان الحساب هو [ program account ] ( #program-accounts ) أو
283289[ حساب بيانات] ( #data-accounts )
284290
285- - إذا كان ` true ` : فالحساب هو حساب برنامج
291+ - إذا كان ` true ` : فالحساب هو program account
286292- إذا كان ` false ` : فالحساب هو حساب بيانات
287293
288294``` rust !! title="Account Examples"
@@ -313,8 +319,8 @@ Account {
313319
314320** حقل ` rent_epoch ` مهمل.**
315321
316- في الماضي، كان هذا الحقل يتتبع متى سيحتاج الحساب إلى دفع الإيجار . ومع ذلك، تم
317- إهمال آلية تحصيل الإيجار هذه منذ ذلك الحين.
322+ في الماضي، كان هذا الحقل يتتبع متى سيحتاج الحساب إلى دفع rent . ومع ذلك، تم إهمال
323+ آلية تحصيل الإيجار هذه منذ ذلك الحين.
318324
319325``` rust !! title="Account Examples"
320326// Example Token Mint Account
@@ -344,38 +350,37 @@ Account {
344350
345351## أنواع الحسابات
346352
347- هناك فئتان أساسيتان تندرج فيهما الحسابات:
353+ هناك فئتان أساسيتان تندرج تحتهما الحسابات:
348354
349355- [ حسابات البرامج] ( #program-accounts ) : حسابات تحتوي على رمز قابل للتنفيذ
350356- [ حسابات البيانات] ( #data-accounts ) : حسابات لا تحتوي على رمز قابل للتنفيذ
351357
352- هذا الفصل يعني أن الرمز القابل للتنفيذ للبرنامج وحالته يتم تخزينهما في حسابات
353- منفصلة. (مشابه لأنظمة التشغيل، التي عادة ما يكون لديها ملفات منفصلة للبرامج
354- وبياناتها.)
358+ هذا الفصل بين رمز البرنامج وحالته هو ميزة أساسية في نموذج حسابات سولانا. (مشابه
359+ لأنظمة التشغيل، التي عادة ما تحتوي على ملفات منفصلة للبرامج وبياناتها.)
355360
356361### حسابات البرامج
357362
358- كل برنامج مملوك من قبل [ برنامج التحميل ] ( /docs/core/programs#loader-programs ) ،
359- الذي يستخدم لنشر وإدارة الحساب. عندما يتم نشر [ برنامج] ( /docs/core/programs )
360- جديد، يتم إنشاء حساب لتخزين رمزه [ القابل للتنفيذ] ( #executable ) . يسمى هذا حساب
363+ كل برنامج مملوك من قبل [ برنامج محمّل ] ( /docs/core/programs#loader-programs ) ، الذي
364+ يُستخدم لنشر وإدارة الحساب. عندما يتم نشر [ برنامج] ( /docs/core/programs ) جديد،
365+ يتم إنشاء حساب لتخزين رمزه [ القابل للتنفيذ] ( #executable ) . هذا ما يسمى بحساب
361366البرنامج. (للتبسيط، يمكنك اعتبار حساب البرنامج هو البرنامج نفسه.)
362367
363- في الرسم البياني أدناه، يمكنك رؤية استخدام برنامج التحميل لنشر حساب برنامج.
364- يحتوي حقل ` data ` الخاص بحساب البرنامج على رمز البرنامج القابل للتنفيذ.
368+ في الرسم البياني أدناه، يمكنك رؤية استخدام برنامج محمّل لنشر حساب برنامج. يحتوي
369+ حقل ` data ` الخاص بحساب البرنامج على رمز البرنامج القابل للتنفيذ.
365370
366- ![ رسم توضيحي لحساب برنامج، ومكوناته الأربعة وبرنامج التحميل الخاص به.] ( /assets/docs/core/accounts/program-account-simple.svg )
371+ ![ رسم توضيحي لحساب برنامج، ومكوناته الأربعة وبرنامج المحمّل الخاص به.] ( /assets/docs/core/accounts/program-account-simple.svg )
367372
368373#### حسابات بيانات البرامج
369374
370375البرامج المنشورة باستخدام loader-v3 لا تحتوي على رمز البرنامج في حقل ` data `
371- الخاص بها. بدلاً من ذلك، يشير حقل ` data ` إلى ** حساب بيانات البرنامج ** منفصل،
372- والذي يحتوي على رمز البرنامج. (انظر الرسم البياني أدناه.)
376+ الخاص بها. بدلاً من ذلك، يشير حقل ` data ` إلى ** حساب بيانات برنامج ** منفصل، يحتوي
377+ على رمز البرنامج. (انظر الرسم البياني أدناه.)
373378
374379![ حساب برنامج مع بيانات. البيانات تشير إلى حساب بيانات برنامج منفصل] ( /assets/docs/core/accounts/program-account-expanded.svg )
375380
376381<Callout >
377- أثناء نشر البرنامج أو الترقيات، يتم استخدام حسابات المخزن المؤقت لتجهيز
378- التحميل مؤقتًا.
382+ أثناء نشر البرنامج أو الترقيات، تُستخدم حسابات المخزن المؤقت لتجهيز التحميل
383+ مؤقتًا.
379384</Callout >
380385
381386المثال أدناه يجلب حساب Token Program. لاحظ أن حقل ` executable ` مضبوط على ` true ` ،
@@ -452,7 +457,7 @@ async fn main() -> Result<()> {
452457
453458### حسابات البيانات
454459
455- حسابات البيانات لا تحتوي على كود قابل للتنفيذ. بدلاً من ذلك، تقوم بتخزين
460+ لا تحتوي حسابات البيانات على رمز قابل للتنفيذ. بدلاً من ذلك، تقوم بتخزين
456461المعلومات.
457462
458463#### حساب حالة البرنامج
@@ -465,7 +470,8 @@ async fn main() -> Result<()> {
465470
4664711 . استدعاء [ System Program] ( /docs/core/programs#the-system-program ) لإنشاء حساب.
467472 (ثم ينقل System Program الملكية إلى البرنامج الجديد.)
468- 2 . تهيئة بيانات الحساب، كما هو محدد في [ تعليماته] ( /docs/core/instructions ) .
473+ 2 . تهيئة بيانات الحساب، كما هو محدد في [ التعليمات] ( /docs/core/instructions )
474+ الخاصة به.
469475
470476![ رسم تخطيطي لحساب بيانات مملوك من قبل حساب برنامج] ( /assets/docs/core/accounts/data-account.svg )
471477
@@ -770,9 +776,9 @@ async fn main() -> Result<()> {
770776عندما يتم إرسال SOL إلى عنوان جديد لأول مرة، يتم إنشاء حساب في ذلك العنوان مملوك
771777من قبل System Program.
772778
773- في المثال أدناه، يتم إنشاء keypair جديد وتمويله بـ SOL. بعد تشغيل الكود، يمكنك
774- رؤية أن عنوان ` owner ` للحساب هو ` 11111111111111111111111111111111 ` (وهو
775- [ System Program] ( /docs/core/programs#the-system-program ) ).
779+ في المثال أدناه، يتم إنشاء زوج مفاتيح جديد وتمويله بـ SOL. بعد تشغيل الكود،
780+ يمكنك رؤية أن عنوان مالك الحساب ` owner ` هو ` 11111111111111111111111111111111 `
781+ (وهو [ System Program] ( /docs/core/programs#the-system-program ) ).
776782
777783<CodeTabs storage = " accounts" flags = " r" >
778784
@@ -869,8 +875,8 @@ async fn main() -> Result<()> {
869875
870876#### حسابات Sysvar
871877
872- توجد حسابات Sysvar في عناوين محددة مسبقًا وتوفر وصولاً إلى بيانات حالة المجموعة.
873- تتحدث ديناميكيًا مع بيانات حول مجموعة الشبكة. راجع القائمة الكاملة لـ
878+ توجد حسابات Sysvar في عناوين محددة مسبقًا وتوفر الوصول إلى بيانات حالة المجموعة.
879+ يتم تحديثها ديناميكيًا ببيانات حول مجموعة الشبكة. راجع القائمة الكاملة لـ
874880[ حسابات Sysvar] ( https://docs.anza.xyz/runtime/sysvars ) .
875881
876882المثال أدناه يجلب ويفك تشفير البيانات من حساب Sysvar Clock.
0 commit comments