الإصدار
يتيح لك Bloom إصدار أصلًا واقعيًا مُصرَّحًا به بوصفه عقد Solidity عاديًا على سلسلة Rome، وإدارته من وحدة تحكم خاصة بكل أصل. يمكن الوصول إلى الأصل من محافظ EVM وSolana، لكن الإصدار يقتصر على EVM فقط — لا تضع أي مستندات أو بيانات شخصية في Bloom، ولا يفعل مستثمرك ذلك أيضًا.
You do not hand Bloom any documents or personal data, and neither does your investor. يسجّل Bloom النتيجة للقرار المتعلق بالامتثال الخاص بك؛ وتُسجِّل السلسلة قيمة منطقية واحدة لكل عنوان. تبقى عملية KYC/AML الخاصة بك — مزودوك، وملفاتك، ومدة الاحتفاظ — بالكامل داخل نظامك أنت. النموذج الكامل موجود في COMPLIANCE.md؛ يشير هذا الدليل إليه بدلًا من إعادة صياغته.
ما يمكنك فعله
بصفتك مسؤولًا عن الأصل، كل ما يلي متاح لك من وحدة التحكم — وكل واحد من هذه الإجراءات هو معاملة حقيقية على السلسلة، ومربوط في صفحة الأدلة الصفحة:
أصدر أصلًا — ينشره المعالج على هيئة ثلاثة عقود (أدناه).
مراجعة الطلبات — وافق على كل طلب أو ارفضه (ويرافق الرفض سببٌ يستحقه المتقدِّم)، واسمح بإدخال عنوانٍ مُعتمَد إلى قائمة السماح.
إدارة قائمة السماح — أضف عنوانًا واحدًا، أو أضف دفعة من العناوين في معاملة واحدة (
batchAddToWhitelist، أو أزل عنوانًا؛ يفرض الرمز هذه القائمة في كل عملية نقل.تقييد الأصل — قيِّد التحويلات لتقتصر على قائمة السماح (وهذا يجعل المعروض نهائيًا)، أو ارفع القيد.
إدارة المعروض — اطّلع على الإجمالي، ثم سكّ أو أحرق بمجرد أن تكون لديك الصفة.
إدارة البيع — افتح بيعًا (الوحدات والسعر)، وأغلقه، واستدعِ المخزون غير المباع، واسحب العائدات.
تعيين العائد وتوزيعه — عيّن عملة السداد، ثم وزّع دفعة، والتي تمر على الحائزين معاملةً واحدة في كل مرة؛ ويتم تخطي الحائزين المستبعدين.
إدارة الأدوار — امنح دورًا لعنوان، أو اسحب واحدًا، أو تنازل عن دورك أنت.
يُفصَّل كل واحد أدناه، مع ما تفرضه السلسلة، في علامة التبويب التي ينتمي إليها.
وحدة تحكم المُصدِر

/issuer تعرض الأصول التي أصدرتها على هذه السلسلة وتتيح لك بدء أصل جديد.
وصّل محفظة EVM. يُعرض للزائر غير المتصل، أو لمحفظة Solana، تنبيهٌ لتوصيل النوع الصحيح من المحافظ بدلًا من وحدة تحكم فارغة — فمحفظة Solana لا يمكنها الإصدار، وهذا حدٌّ للمنتج تفرضه السلسلة كحاجز ثانٍ مستقل.
يعرض الجدول كل أصل مع اسمه ورمزه، ودورة حياته المرحلة، و البيع الحالة (شارة مفتوح أو شارة مغلق).
عمودان — الحائزون و قيد المراجعة — تعرض شرطة. يحتاج عدّ الحائزين إلى تعداد قائمة السماح، كما أن قائمة المراجعة هي مخزن خارج السلسلة تسجّل الدخول إليه لكل أصل؛ والشرطة تعني لم يُطلب حيث إن 0 قد تدّعي حقيقةً لم يقرأها التطبيق.
اضغط أصدر أصلًا لفتح المعالج، أو حدّد صفًا لفتح وحدة تحكم ذلك الأصل.
إنشاء أصل: المعالج

/create يجمع أربعة حقول ثم ينشر الأصل الخاص بك.
الاسم
مطلوب.
الرمز
مطلوب.
المعروض
عدد صحيح أكبر من الصفر.
الخانات العشرية
عدد صحيح من 0 إلى 18.
اضغط ابدأ. إذا كان أحد الحقول غير صالح، يخبرك المعالج أيّها ولماذا بدلًا من البقاء خلف زر معطّل. وعندما تكون المسودة صالحة، يُطلب من محفظتك توقيع كل خطوة بالتتابع.
لماذا يتم النشر على مراحل
يُنشَر الرمز على هيئة ثلاثة عقود عبر عدة معاملات — وليس معاملة واحدة أبدًا. عملية Arc ذات المعاملة الواحدة
createTokenسيتطلب 77 قفلًا للحسابات، وتضع Rome حدًا أقصى للمعاملة الواحدة عند 62 قفلًا. لذلك ينشر المعالج كل جزء في معاملته الخاصة ويكتسب حالة المصنع بعد ذلك عبرArcTokenFactoryV2.registerToken. هذا قيد من Rome جُعل مرئيًا، وليس تحسينًا اختياريًا — وتحافظ الحمايات على نموذج أمان Arc الأصلي بدقة (الوكيل القياسي، التنفيذ المدرج في القائمة البيضاء، وأن يكون المستدعي حاملًا لدور مدير الرمز، والتسجيل مرة واحدة فقط). انظر COMPLIANCE.md.
البطاقات الست
يعرض المعالج ست بطاقات تتتبع تقدّم النشر. تتحول البطاقة من بانتظار إلى جارٍ التوقيع… إلى تم (أو فشل) عند وصول معاملتها.
1
التنفيذ
تنفيذ الأصل المشترك لهذه السلسلة — محلول، ولا شيء لتوقيعه. (يتم ذلك قبل تشغيل أي خطوة.)
2
الأصل
ينشر الأصل الخاص بك ويعيّن اسمه ورمزه ومعروضه وخاناته العشرية في خطوة واحدة.
3
من يجوز له حيازته
ينشر وحدة الأذونات الخاصة بهذا الأصل، وتكون أنت مديرها.
4
فرضه على التحويلات
يوجّه الأصل إلى تلك الوحدة، بحيث يتحقق الأصل نفسه من كل عملية نقل.
5
قواعد العائد
ينشر الوحدة التي تقرر من يُدفع له ويربطها.
6
التسجيل
يسجّل الأصل — وهذا ما يفتح البيع ويتيح لك ترقيته لاحقًا.
تختزل البطاقات الست ثماني خطوات نشر أساسية، لذا فإن توقيعًا واحدًا ابدأ ينتج عنه ثمانية توقيعات. وتقرأ الملاحظة أسفل الزر "ستطلب منك محفظتك توقيع كل خطوة. يمكنك التوقف في أي وقت ومتابعة من حيث توقفت — لن يضيع شيء." كون التسجيل هو الخطوة الأخيرة هو ما يجعل التوقف آمنًا: فالأصل يكون نشرًا حقيقيًا في كل مرحلة، ثم يُسجَّل في النهاية.
عند اكتمال التشغيل، يقرأ المعالج "تم الإصدار. أصبح أصلك متاحًا عند …" مع رابط إلى وحدة تحكم الأصل عند /token/[address].
initializeيمنحك كل دور. يحصل مُشغّل المعالج — عنوان EVM الخاص بك — على أدوار مدير الرمز، والسكّ/الحرق، ومدير العائد/الموزّع، والمُرقّي، إضافةً إلى دور مدير وحدة قائمة السماح. لذلك تصبح حيازة المفاتيح جزءًا من وضع الامتثال الخاص بالأصل: لا يمكن استعادة محفظة مستثمر مفقودة إلا عبر إجراء إداري منك، وعلامة التبويب الحقوق تُظهر من يحمل كل صلاحية. (UPGRADER_ROLEيكون غير ممنوحًا تلقائيًا للمصنع — فامنحه صراحةً إذا كنت تريد ترقيات تتم عبر المصنع.)
وحدة التحكم الخاصة بكل أصل، وبوابة تسجيل الدخول

الفتح /token/[address] لا غير يعرض وحدة التحكم مباشرة. بل يعرض بوابة تسجيل الدخول:
"سجّل الدخول لإدارة هذا الأصل. وقّع رسالة بمحفظتك — لا توجد كلمة مرور. تستمد صلاحيتك من الأصل نفسه، وتُعاد التحقق منها في كل إجراء، لذا فإن إلغاءها يسري فورًا."
اضغط سجّل الدخول بمحفظتك. إليك ما يحدث بالضبط:
تُطلب من محفظتك
personal_signبيانًا قصيرًا مقروءًا للبشر (يبدأ بـ "Bloom — أثبت أنك تدير هذا الأصل") يذكر الإجراء الوحيد الذي يجيزه — قراءة قائمة طلبات هذا الأصل — إلى جانب عنوان الأصل ومعرّف السلسلة والطابع الزمني.يرسل التطبيق ذلك البيان الموقّع إلى
GET /api/applications.الـ الخادم بالتحقق منه: يستخرج عنوانك من التوقيع، ويتأكد من أن البيان خاص بهذه السلسلة وما يزال حديثًا (فهو يصرّح لمدة دقيقتين، لا لجلسة)، ويقرأ وحدة قائمة السماح الخاصة بالرمز من السلسلة، ويتحقق من أن عنوانك يحمل الدور الذي تتطلبه عملية الكتابة على قائمة السماح فعليًا —
MANAGER_ROLEفي تلك الوحدة.إذا كنت تحمله، تُعاد القائمة وتُعرض وحدة التحكم. وإذا لم يكن لديك، يرفض الخادم الطلب مع
403وسبب.

الأصل هو من يحدد من يجوز له إدارته — وليس هذا التطبيق. يُتحقق من الدور على وحدة الوحدة، وليس على الرمز، وامتلاك دورٍ بالاسم نفسه على الرمز لا غير ينتقل — فهما سلطتان مختلفتان. لا يوجد حساب ولا جلسة: كل طلب لاحق يحمل توقيعه الجديد الخاص، وهذا ما يعنيه "إعادة التحقق منه في كل إجراء" ألغِ دور محفظة على السلسلة فتتوقف عن القدرة على تسجيل الدخول فورًا.
يُظهر الرفض السبب مقتبسًا — لا يكتب Bloom أبدًا جملةً تشرح لماذا رُفضت محفظة. إذا رفضت التوقيع في محفظتك، فذلك هو "لا"، وليس رفض الأصل، ولا يُسجَّل على أنه رفض.
البوابة تعني لمن تعود وحدة التحكم، لا ما هو سري. المعروض، وحالة البيع، وقائمة السماح، والأدوار كلها قراءات عامة على السلسلة يجيب عنها أي مستكشف. ما يشتريه التوقيع هو قائمة الطلبات — إقرارات الآخرين — والحق في أن تُعرض لك وحدة التحكم أصلًا.
ترويسة وحدة التحكم
بعد تسجيل الدخول، تذكر الترويسة اسم الأصل وتعرض المرحلة — وهي الحقيقة الأكثر أهمية التي تملكها:
مسودة
لم تُربط أي وحدة أذونات بعد، لذا لا شيء يقيّد من يجوز له حيازة هذا.
مفتوح
التحويلات مفتوحة ولا يزال المعروض قابلًا للتغيير. يَجعل تقييد الأصل معروضه نهائيًا، ولا يمكن التراجع عن ذلك.
مقيَّد
لا يجوز أن يحوزه إلا العناوين الموجودة في قائمة السماح، ويكون معروضه نهائيًا — لا يمكن سكّ المزيد أو حرقه بعد الآن، بشكل دائم.
فوق علامات التبويب، يعرض ملخص أربعة أرقام — الحائزون · قيد المراجعة · المباع · العائد المدفوع. اثنان يُقرآن من السلسلة والمخزن (قيد المراجعة بمجرد تسجيل الدخول؛ المباع من واجهة المتجر); الحائزون يعتمد على عدد حائزين معاينة العائد، و العائد المدفوع يعتمد على مؤشر سجلّ المدفوعات الذي لم يأتِ بعد. تعرض كل خلية في حالة انتظار شرطةً وتشرح ما تحتاجه، بدلًا من 0 عرض قيمة ستدّعي حقيقةً لم يطلبها أحد من السلسلة.
علامات التبويب الست
تحتوي وحدة التحكم على ست علامات تبويب، بهذا الترتيب: الطلبات · من يجوز له حيازته · المعروض · البيع · العائد · الحقوق.
كل عملية كتابة في علامات التبويب هذه تستخدم عنصر تحكم مشتركًا يعرض الشروط المسبقة المسمّاة و عواقبها قبل الزر، ويذكر مرحلته أثناء التشغيل ("بانتظار محفظتك…", "جارٍ الهبوط على السلسلة…"). لا ينبغي أن يحدث أي تراجع ليعلمك ما كان يمكن التحقق منه أولًا.
الطلبات — قائمة المراجعة

تعرض هذه العلامة من قدّم طلبًا لحيازة الأصل. يعرض كل صف عنوان المتقدّم، والاختصاص القضائي، ونوع الحيازة، و التحققات عمود (ناجح إذا سجّل مزودك نتيجة، وإلا مُعلَن)، و الحالة (قيد المراجعة, موافق عليه, مرفوض). وسّع صفًا لرؤية حقائقه ووسيلتي تحكم: الموافقة — يجوز له حيازته و رفض. يتطلب الرفض سببًا، ويصبح ذلك جواب المتقدّم.
الموافقة عمليتان منفصلتان، وتُبقي علامة التبويب كلتيهما واضحة. عند الضغط على الموافقة يُسجّل قرارك في مخزن الطلبات. أما وضع العنوان على قائمة السماح الخاصة بالأصل على السلسلة فهو توقيع ثانٍ —
batchAddToWhitelist— وحتى يصل، يوضح الصف ذلك. وعندما يختلف القرار المسجَّل عن السلسلة، تذكر علامة التبويب الفجوة وتعرض عملية الكتابة التي تسدها: السماح بالدخول لإضافة عنوانٍ مُوافق عليه إلى قائمة السماح، أو (لعنوان مرفوض ما يزال مدرجًا) أداة إزالته. لا يمكن للعنوان حيازة الأصل حتى تصل عملية الكتابة إلى قائمة السماح.
ملاحظة ثابتة في هذه العلامة — وصلة الامتثال — تبيّن أين تُوصّل عمليتك أنت:
"لا تُطلب أي مستندات هنا ولا يُحتفظ بها — فالتحققات تخصك أنت. وصّل مزودك خلف واجهة
الطلبات، أو استورد القرارات التي اتخذتها مسبقًا. يسجّل Bloom النتيجة وتُسجل السلسلة نعمًا أو لا واحدًا مقابل العنوان."
هذه هي الواجهة التي يستبدلها المُصدِر المستضاف ذاتيًا: استبدل تنفيذ مخزن الطلبات بتنفيذك الدائم الخاص، ولن يحتاج أي مستدعي إلى التغيير. لا يجري Bloom أي تحققات ولا يحتفظ بأي مستند.
من يجوز له حيازته — بوابة التحويلات

تعرض هذه العلامة عدد العناوين المدرجة في قائمة السماح لهذا الأصل، وتتيح لك تبديل ما إذا كانت قائمة السماح مفروضة:
عندما تكون التحويلات غير مقيَّدة، فإنها تعرض خيار تقييد التحويلات لتقتصر على قائمة السماحوتذكر عواقب هذه الكتابة أن ذلك يجعل المعروض نهائيًا، وهو طريق أحادي الاتجاه لغير المسؤولين.
عندما تكون التحويلات مقيَّدة، فإنها تعرض خيار رفع القيد. وتذكر عواقبها بوضوح أن هذا ليس تراجعًا.
على غير مقيَّد (مسودة) بلا وحدة أذونات مرتبطة، تذكر العلامة ذلك — "لا توجد وحدة أذونات مرتبطة، لذا لا شيء يقيّد من يجوز له حيازة هذا" — ولا يظهر المفتاح.
يتحقق الرمز من كلا طرفي كل عملية نقل. ما دام الأصل مقيَّدًا، فإن أي عملية نقل يكون فيها أحد الطرفين خارج قائمة السماح تُرجَع على السلسلة بخطأ من النوع المناسب. وتُطبَّق البوابة نفسها على تحويل من محفظة EVM، وتحويل موقّع من Solana، وبيع عبر واجهة المتجر، وحركة السيولة الأولية — ولا توجد طريقة للالتفاف عليها إلا عبر صلاحياتك الإدارية أنت.
المعروض

تعرض هذه العلامة إجمالي المعروض القائم، بوحدات كاملة.
البيع — فتحه وإغلاقه واستلام العائدات

تشغّل هذه العلامة البيع الأساسي عبر عقد واجهة المتجر.
عندما لا يكون هناك بيع مفتوح، تعرض إمكانية فتح واحد: أدخل الوحدات المراد بيعها و السعر لكل وحدة (بـ
wUSDC)، ثم اضغط افتح البيع. تُعرض الشروط المسبقة لهذه الكتابة أولًا — يجب أن يكون الرمز مسجَّلًا، وأن تحتفظ واجهة المتجر بمخزون البيع، وأن تكون واجهة المتجر نفسها مدرجة في قائمة السماح على الرمز الذي تبيعه — لذا فإن أي بيع لم يصبح قابلاً للفتح بعد يذكر بالضبط ما يحتاجه.عندما يكون البيع مفتوحًا، فإنه يبيّن عدد الوحدات المتبقية من العرض ويتيح إغلاق هذا البيع.
استدعاء الوحدات غير المباعة ينقل المخزون غير المباع من واجهة المتجر إلى مستلم (الافتراضي هو أنت). هذا غير ليس إغلاقًا — يظل البيع مفعّلًا، وتذكر عاقبة الكتابة ذلك، لذا لا يمكن إساءة فهم الاستدعاء على أنه إلغاء.
سحب العائدات يرسل حصيلة واجهة المتجر إلى عنوان (الافتراضي هو أنت). تتراكم العائدات بصورة مستقلة عن حالة البيع، لذا يمكن سحبها سواء كان البيع مفتوحًا أم مغلقًا.
العائد — دفع الحائزين، واحدًا في كل معاملة

توزع هذه العلامة دفعة عائد على الحائزين.
التوزيع مسارٌ متسلسل، لا نقرة واحدة. على Rome،
distributeYieldWithLimitيدفع إلى حائز واحد في كل معاملة (حدّ الحساب)، لذا تكون الدفعة سلسلة من النوافذ، لكل منها توقيعها الخاص. تُدخل المبلغ مرة واحدة، بوحدات كاملة من عملة السداد، ويُقفل بمجرد بدء المسار. وتقوم الأولى النافذة بسحب كامل الدفعة منك ودفعها إلى الحائز الأول؛ وكل نافذة لاحقة تنقل فقط الأموال الموجودة بالفعل داخل عقد الرمز. يعيد Bloom قراءة المؤشر من السلسلة بعد كل نافذة — إذ تعاد ترتيب مجموعة الحائزين مع تغيّر الأرصدة، وإرسال فهرس قديم سيعيد البدء من الصفر ويسحب أموالك مرة ثانية.
تعرض العلامة التقدم — "جاري الدفع للحائز N من M" — وتنتهي عندما يلتف المؤشر. إذا لم تكن هناك عملة سداد مضبوطة للأصل، فتذكر العلامة ذلك؛ وتعيين عملة السداد هو الحقل الوحيد في التوزيع الذي لا يختاره سواك.
تبقى حصص الحائزين المقيَّدين داخل العقد. يُتخطّى العنوان المستبعد بواسطة وحدة القائمة السوداء للعائد، وتبقى حصته النسبية داخل عقد الرمز بدلًا من دفعها.
المدفوعات السابقة لا تُعرض بعد — فقراءتها تتتبع أحداث التوزيع رجوعًا إلى أول كتلة للأصل، وهذا يحتاج إلى مؤشر سجلّ لم يأتِ بعد. تذكر العلامة هذا داخلها بدلًا من عرض 0.
الحقوق — الأدوار

تعرض هذه العلامة كل دور يعلنه الرمز وما إذا كان محمولًا، ويُقرأ كل واحد منها عبر عملية واحدة hasRole يتم الاستدعاء مقابل الرمز. دورٌ يكون غير المُحتفَظ به يظهر كذلك بدلًا من أن يُحذف — في تبويب الحقوق، صفّ مفقود و "لا" هما حقيقتان مختلفتان.
أسفل القائمة، يوجد عنصر تحكم يغيّر الأدوار:
منح لحساب
عنوان تُدخله
DEFAULT_ADMIN_ROLE
سحب من حساب
عنوان تُدخله
DEFAULT_ADMIN_ROLE
التنازل عن دورك الخاص
نفسك (يتطلب OpenZeppelin أن يكون التأكيد من المتصل)
أنت
خيارات الأدوار هي أدوار الرمز نفسه، لذا لا يمكن لعنصر التحكم أن يعرض دورًا لا يملكه الرمز. وكما في كل عملية كتابة، يُعرض صف السلطة والنتيجة قبل الزر، لذا تُذكر البوابة وكونها باتجاه واحد قبل أن توقّع.
ما لا يلامس Bloom أو السلسلة قط
ولكي يكون واضحًا تمامًا أين يتم الامتثال:
مستندات KYC/AML والبيانات الشخصية المُعرِّفة
نظامك الخاص، مع مزوّديك وسياسات الاحتفاظ الخاصة بك — أبدًا هذا التطبيق أو السلسلة
قرارك بالسماح لعنوان بالدخول
سجل خارج السلسلة؛ أنت تملك المخزن
الأثر على السلسلة لذلك القرار
قيمة منطقية واحدة — isWhitelisted(address) — يُكتب بواسطة batchAddToWhitelist
تطبيق القاعدة
عقد الأصل، عند كل عملية تحويل
من يحق له إدارة الأصل
الدور الموجود في وحدة القائمة البيضاء الخاصة بالأصل، ويُتحقَّق منه عند كل طلب
للاطلاع على نموذج الامتثال كاملًا، اقرأ COMPLIANCE.md; وللاطلاع على آليات المسارين (EVM وSolana) التي يستخدمها حاملوك، اقرأ LANES.md.
آخر تحديث
هل كان هذا مفيدا؟