FastPQ هو Iroha- نعم . STARK طريق إثبات لتأثيرات التنفيذ المختارة. لا يحل محل تنفيذ المعاملة العادي أو الإجماع. المعاملات لا تزال تجري ISI, IVM, و Sumeragi كالمعتاد FastPQ تستهلك شهادة التنفيذ المحددة وتحول الآثار المدعومة إلى مجموعات دليل.
الاندماج الحالي للمضيف يحتوي على ثلاث مسارات رئيسية:
تحويلات الأصول الرقمية الشفافة المسجلة أثناء تنفيذ الكتلة
Nexus رليات الممر المؤكدة التي تحمل غلاف إثبات AXT ملزمة FastPQ
SCCP مساعدات إثبات الرسالة الشفافة التي تغلف برهان FastPQ في غلاف مفتوح للتحقق.
تنشئ النقلات الرقمية الشفافة نسخة نقل مهيكلة عندما تتحول التعليمات إلى توازنات. تسجل النسخة:
الحساب المصدر وحساب الوجهة وتعريف الأصول والكمية
رصيد المرسل والمتلقي قبل وبعد التحويل
hash نقطة دخول المعاملة المستخدمة كـ hash اللحظة
بيان السلطة المستمد من الحساب الذي يقدم
هضم "بوسيدون" لترانسكريبتات ديلتا واحدة
تحويلات الحزمة تستخدم نسخة واحدة مع ديلتا متعددة في هذه الحالة هضم البوسيدون واحد ديلتا غائب.
عند استكمال الكتل ، يقوم Iroha بتجميع هذه النصوص بواسطة نقطة دخول هش. ثم يحمل شهد التنفيذ كل من حزم النص الأصلية وبطاقات الانتقال FastPQ التي أعدتها للمسجل .
كل دلتا نقل يصبح صفين من الصفوف:
الصف
شكل المفتاح
القيمة السابقة
بعد القيمة
الخصم المبعوث
asset/<asset-definition>/<source-account>
توازن المرسل قبل
توازن المرسل بعد
الائتمان المستلم
asset/<asset-definition>/<destination-account>
ميزان المستقبل قبل
ميزان المستلم بعد
يتم تطبيع القيم الرقمية إلى وحدات شاهدة للأعداد الكاملة. يتم رفض قيمة في FastPQ إذا لم يتم تمثيلها على أنها غير سلبية u64 على مقياس العشري المختار.
يصف هذا القسم الرياضيات التي يتم تنفيذها من قبل المحاسب والتحقق الحالي Rust. جميع العمليات الميدانية أدناه هي على حقل أولى Goldilocks:
F=Fp,p=264−232+1
FastPQ يستخدم Poseidon2 أكثر من F للالتزامات الميدانية. الإسفنج لها عرض t = 3, السعر r = 2, والقدرة 1. يمتص الهاش عناصر الحقل في كتلة المعدل-2 ويضيف عنصر حقل واحد. 1 قبل التغيير النهائي:
HF(x0,…,xm−1)=Poseidon2F(x0,…,xm−1,1)
يتم تعبئة سلاسل البايت في أطراف صغيرة من 7 بايتات بحيث يكون كل أطراف تحت p بشكل صارم:
pack(b)j=i=0∑6b7j+i28i,0≤pack(b)j<p
يتم تمثيل هشات الحقول المنفصلة عن المستوى على شكل:
HD(m)=HF(∣pack(D)∣,pack(D),∣pack(m)∣,pack(m))
بالنسبة لـ"هاشيز" التي تبدأ من إضافات النطاق البايت، يقوم FastPQ بتخطيط أول ثمانية بايتات صغيرة في الحقل:
seed(D)=le64(Hash(D)[0..8])modp
هنا Hash تعني Iroha's iroha_crypto::Hash::new، هضم بليك2بفار 32 بايت، إلا إذا كانت الصيغة تسمي صراحة Poseidon2 أو SHA-256.
تستخدم FastPQ أربع جولات كاملة، وسبعين وخمسين جولة جزئية، ثم أربعة جولات أخرى كاملة. الجولة الكاملة مع ثابتات دائرية c_r = (c_{r,0}, c_{r,1}, c_{r,2}) هي:
x′=M⋅S(x0+cr,0)S(x1+cr,1)S(x2+cr,2)
الجولة الجزئية هي:
x′=M⋅S(x0+cr,0)x1+cr,1x2+cr,2
جميع الإضافات والمضاعفات هي في F. المصفوفة الكانونية MDS هي:
يتم تحويل وقت إنشاء الكتلة من الميلي ثانية إلى نانو ثانية:
slot=saturating_mul(creation_time_ms,1,000,000)
المجموعة المعاملة هي المجموعة من النطاقات البايتية على المجموعة المرتبة من نقاط الدخول:
tx_set_hash=Hash(fastpq:v1:tx_set∥h0∥⋯∥hn−1)
حيث يتم تصنيف h_i هيشات المعاملة والنقطة الدخولية التي تؤدي إلى الزمن. في دليل العام IO، إذا كان perm_root أو tx_set_hash هو كل صفر، فإن الباحث يملأ قيم التراجع:
perm_root={032,Hash(fastpq:v1:perm_root∥p0∥⋯∥pn−1),if there are no permission hashesotherwise
خطوط النقل تحمل مسار ميركل نادر على 32 مستوى. إذا كان دليل مضيف مفقودًا ، يقوم الباحث بتجميع مسار تحديدي من مفتاح الصف ، قبل التوازن ، وما إذا كان الصف طرف المرسل أو الجانب المستلم .
بالنسبة للمسارات الاصطناعية، ملح النكهة هو fastpq:smt:from لصفوف المرسلين و fastpq:smt:to لصفوف المستلمين:
دع omega_T يكون مولد النطاقات التتبعية، و omega_E مولد المجال التقييمي، و g تعويض الكوزيت الذي يتم تشكيله. بالنسبة لعمدة التتبع ذات القيم v_i، فإن الاستقطاب ينتج معدلًا a_j بحيث
f(ωTi)=vi
يقدر التوسع منخفض الدرجة نفس الكلمة المتعددة على الجمع:
LDEf(i)=f(g⋅ωEi)
يقوم التنفيذ بحساب هذا عن طريق مضاعفة المعاملات بسلطات تعويض المجموعة قبل FFT:
aj′=ajgj
ومن ثم تقييم a' في مجال التقييم.
CPU FFT هو تحويل متكرر رادكس-2 كولي-توكي على المدخلات المعاكسة بيت. في طول المرحلة L ، نصف طول H=L/2، وجذر المرحلة:
ωL=ωN/L
كل فراش يحسب:
u=xj
v=xj+H⋅ωLj
xj′=u+v,xj+H′=u−v
يقوم العكس FFT بنفس التحوّل مع omega^{-1} ويزيد من خلال حجم النطاق المعاكس:
IFFT(x)=N−1⋅FFTω−1(x)
يتم التحقق من صحة جذور الكتالوج قبل استخدامها:
ω2k=1
ω2k−1=1(k>0)
بالنسبة للمناطق الصغيرة المشتقة من جذور الكتالوج، فإن الجهاز المصدر هو:
FRI يتعهد بتقييمات التركيب AIR. لكل جولة l ، تقوم عينات النسخة بإجراء تحدي beta_l. يتم تعبئة الطبقة إلى مضاعف من arity عن طريق تكرار القيمة الأخيرة. تنطوي كل مجموعة بحجم arity على:
yl+1,j=k=0∑a−1yl,ja+kβlk
حيث a هو ثقافة FRI. يتحقق المحقق، لكل سلسلة استفسارات منقطعة عن عينات، أن:
yl+1,⌊i/a⌋=k=0∑a−1yl,⌊i/a⌋a+kβlk
وتصديق كل مجموعة FRI مفتوحة ضد الجذر الطبقة المقابلة FRI.
يسمي كتالوج المعلمات القانونية لغة النسخة الاختبارية SHA3-256. تنفيذ البحث والتحقق الحالي يستخرج بيانات التحدي مع iroha_crypto::Hash::new ، وهو إضافة بليك2بفار 32 بايتًا، ثم يقلل من أول ثمانية بيانات صغيرة إلى F:
χ(tag)=le64(Hash(state∥len(tag)∥tag)[0..8])modp
مكالمات التحدي إضافة الجهاز الكامل إلى حالة النسخة. الترتيب لإعادة تشغيل هو:
العام IO ، نسخة البروتوكول، ونسخة المعلمات، واسم المعلمات
LDE الجذر والجذر المتبعة
gamma
تحديات التركيبة AIR alpha_0 ، alpha_1
AIR جذور البصمة و AIR جذور التكوين
البحث المنتج الكبير
أصول الطبقة FRI وتحديات beta_l
مؤشرات الاستفسارات التي تم أخذها عن عينات
يستمر أخذ العينات المطلوبة في رسم مقاطع تحدي 32 بايت وقراءةها كجزء صغير من u64 حتى يحصل على عدد المؤشرات الفريدة المطلوبة:
(الـ) AIR فتح التركيب يجب أن تكون مصادقة تحت: R_air_composition. (الـ) FRI السلسلة تبدأ من نفس A_q ويجب أن ينتهي في نهاية مؤكدة FRI أوراق تحت المحطة FRI الجذر.
قبل بناء المسار، يقوم برنامج FastPQ بتحريف ترتيب الحزمة عن طريق مفتاح الانتقال ، رتبة العمليات ، وترتيب إدخال. تتطلب خطوط النقل أيضًا بيانات البيانات المترجمة. تكون حزمة ذات صفات النقل ولكن لا توجد نسخ نقل غير صالحة.
بالنسبة لنسخ النقلات، تشمل التحققات الجانبية للاستثمار:
لا يجوز أن يتدفق رصيد المرسل
يجب أن يكون sender_after = sender_before - amount
يجب أن يكون receiver_after = receiver_before + amount
يجب أن تغطي النسخة كل صف نقل في اللحظة.
يجب أن يتطابق هضم بوزيدون ذو دلتا واحدة، عندما يكون موجوداً، مع الصورة الأولى من النص.
إذا كانت أدلة ميركل النادرة يجب أن يتم فكها كإصدار 1 ، فإن المسارات المفقودة تملأ بأدلة صناعية تحديدية.
يحتوي المسار على أعمدة اختيارية لنقل، ورقة النقود، حرق، منح الدور، إلغاء الدور، مجموعة البيانات المعدنية، وصفوف البحث عن الإذن. الصفوف العملية الرقمية تحمل أيضًا ديلتا موقعة، وتشغيل ديلتا لكل أصول، ومدادات الإمدادات.
irohad يبدأ طريق إثبات FastPQ عند البدء إذا كان يمكن تشغيل نهاية الخلفية الإثبات. المسار هو مهمة خلفية مع صف محدد. بعد أن ينتج كتلة شهادة تنفيذ ، يقوم مسار الالتزام بإرسال عمل إثبات يحتوي على هشات الكتلة وارتفاعها ورؤيتها وشهدها.
إذا لم يتم تشغيل الشارع أو كان الصف ممتلئًا ، فيتم تخطي الوظيفة وتستمر معالجة الكتل العادية. وهذا يعني أن شارع البحث الخلفي ليس بوابة قبول المعاملات أو إجماع. إنه طريق إثبات الإنتاج على الحالة التي تم تنفيذها بالفعل.
الشارع يبني إشارة مع:
text
parameter = "fastpq-lane-balanced"execution_mode = auto | cpu | gpuposeidon_mode = auto | cpu | gpu
auto يسمح للمؤكد باختيار الخلفية المتاحة. تنفيذ cpu الألواح إلى CPU. gpu تفضل تنفيذ GPU، مع CPU fallback حيث لا يمكن للخلفية استخدام النواة المطلوبة.
FastPQ التحقق من الأدلة يعيد بناء الالتزام الكانونيكي للمجموعة ويستبدل النسخة العامة. يقوم المحقق بتحقق من إصدار البروتوكول، والإصدار المحدد للبرامج، ومحدود الإعادة تشغيل، والتزام المسار، والمدخولات العامة، وفتحات Merkle التي تم اختبارها، وفتوحات AIR، وسلسلة استفسارات FRI.
غلافات إثبات Nexus AXT يمكن أن تضم AxtFastpqBinding. عند تنفيذ RegisterVerifiedLaneRelay ، Iroha:
يتحقق من غلاف إرسال المسار و FastPQ مواد الدعم.
يتحقق من مساحة البيانات والجذر الإبداعي
تُفكّر ملفة الدليل AXT
يتطلب fastpq_binding
يعيد بناء اللحظة FastPQ من تلك الالتزام.
يفكّر دليل FastPQ المدمج
يدعو المحقق FastPQ على اللحظة التي تم بناؤها وإثباتها
إذا نجحت التحقق، يقوم Iroha بتخزين VerifiedLaneRelayRecord الذي يحتوي على مرجع الرصيف والغلاف الأصلي وشبكة الحمل المفيد للدليل وارتفاع التحقق وأصل المظاهر وربط FastPQ.
غلافات إرسال الشارع تحمل أيضاً رقيقة FastPQ مادة إثبات. المواد هي هضم على الهوية المسار، هوية مساحة البيانات، ارتفاع الكتلة، ارتفاع التحقق من الكتلة الحاجز التسوية ، والجذر المظهر. إرسال يسمح بالاندماج فقط عندما يكون له كل من QC وموثوقة FastPQ مادة الدليل
بالنسبة لمغلفات Nexus AXT ، يتم تشكيل AxtFastpqBinding قبل إعادة عرض الأدلة. قيم المعايير الفارغة افتراضية إلى fastpq-lane-balanced؛ ID المؤكد الفارغة والإصدار الافتراضي إلى fastpq و v1 ؛ يتم تخفيض نوع المطالبة وتخفيضها.
المدخلات العامة AXT FastPQ هي حشيشات البايت المحددة:
في الطلب authorization يتم إدخال سطر للحصول على الحسابات:
role_id=claim_digest
permission_id=witness_commitment
epoch=le64(policy_commitment[0..8])
وسلسلة البيانات المعدنية التي تربط سياسة الترخيص. تضع الطلب compliance صفين من البيانات المتعددة: واحد للسياسة والآخر للمناطق المستهدفة للبيانات.
لـ tx_predicate و value_conservation، يتم استخدام كمية تأثير صريحة عندما يحتوي العلاقة على كمية مصدر أو وجهة إيجابية. وإلا فإن الرمز يستخرج كمية تحديدية محددة:
يستخدم صندوق المساعدة SCCP أيضًا FastPQ لإثبات رسائل عبر السلسلة الشفافة. هذا الطريق منفصل عن طريق إثبات الخلفية irohad. يقوم ببناء مجموعة FastPQ مباشرة من حزمة إثبات الرسالة SCCP ومشورة، ثم يلف الأدلة الناتجة للتحقق المفتوح.
تستخدم اللفة SCCP fastpq-lane-balanced وثلاث عمليات انتقال البيانات المعدنية:
المفتاح
العملية
sccp:transparent:v1:statement
MetaSet
sccp:transparent:v1:context
MetaSet
sccp:transparent:v1:payload
MetaSet
مدخلاتها العامة مشتقة من دليل داخلي شفاف SCCP:
إدخال FastPQ
SCCP المصدر
dsid
أول 16 بايت من إرسال Blake2b على البيان hash
slot
ارتفاع النهاية
old_root
الحمل المفيد
new_root
جذور الالتزام
perm_root
بلوك النهائي هاش
tx_set_hash
البيانات
يقوم SCCP المرموزات القانونية بكتابة الأرقام الكاملة الصغيرة وترميز صفوف البايت ذات الطول المتغير على النحو:
البيانات الشفافة هي سلسلة الإصدار، عائلة السلسلة، النطاقات المحلية والجهة المقابلة، ونموذج الأمن، حوكمة المرساة، كوديك الحساب، نموذج النهاية، هدف المؤكد، عائلة مؤكدة الخلفية، وحقول سلسلة/خلفية الخلفية/الظاهرة المثبتة على الطول، وتحديد الوجهة. مفتاح كوديك الحساب، نوع الحمولة المفيدة، البايتات المدخولية العامة، والحملة المفادة.
يتم تشفير دليل FastPQ الخام في Norito إلى StarkFriOpenProofV1 ، ثم يُغلف في OpenVerifyEnvelope مع مؤخرة Stark. يقوم التحقق من SCCP بإعادة بناء نفس اللحظة FastPQ من الحزمة والإشارة، ويتحقق من البيانات الأساسية المفتوحة في غلاف التحقق. ويدعو المحقق FastPQ على اللحظة والدليل الذي تم إعادة بناؤه.
كتالوج المعلمات القانونية يعرض مجموعتين من المعلمات. يستخدم خط البحث المضيف حاليا fastpq-lane-balanced.
المعلم
الغرض
الحقل
الحشيش
FRI
fastpq-lane-balanced
إصدار متوازن
الـ (جولديلوكس) التوسع التربيعي
الالتزامات بـ "بوسيدون2" ، الكتالوج SHA3
النقطة 8 ، الإنفجار 8 ، 46 استفسار
fastpq-lane-latency
طرق حساسة من التأخير
الـ (جولديلوكس) التوسع التربيعي
الالتزامات بـ "بوسيدون2" ، الكتالوج SHA3
السؤال 16، الإنفجار 16، 34 سؤال
كلاهما يستهدف أمن 128 بت واستخدم حجم النطاق المتبعة من 2^16. رمز إعادة تشغيل النسخة Rust V1 يستخرج حاليًا بايتات تحدي Fiat-Shamir مع iroha_crypto::Hash::new بدلاً من الاستدعاء المباشر إلى SHA3-256.
مستمرات الكتالوج الدقيقة المستخدمة من قبل Rust المؤشر هي: