التكليف#
أطلق فريقنا إضافتين إلى Core Registry، وهي البرمجيات مفتوحة المصدر التي أعدّتها Chia Network لسجلات أرصدة الكربون الوطنية: لوحة بيانات يستطيع السجل وضعها على موقعه العام، ودفتر عناوين بمن يُصدر لهم الأرصدة.
السجل القائم على Core Registry يحفظ مشاريع الكربون في الدولة وأرصدتها. ويستطيع ترميز تلك الأرصدة على بلوكتشين Chia. وتُنشر سجلاته في Climate Action Data Trust، وهو سجل مشترك لأرصدة الكربون بدأ باسم Climate Warehouse التابع للبنك الدولي. وبوتان، أول دولة يرتبط سجلها بذلك السجل المشترك، تشغّل سجلها على Core Registry. وقد بنت Chia هذه البرمجيات مع فريق Climate Warehouse.
وكشفت اختبارات للنظام الذي حدده البنك الدولي ما ستحتاج إليه الدول التي تشغّله في المرحلة التالية. وتلك التعديلات طلبتها مملكة بوتان والبنك الدولي، وجاءتنا بها Chia. وأكبر جزأين فيها: السجل كله في عرض واحد، داخل التطبيق وعلى الموقع العام للدولة، ووضع حد لإدخال عنوان محفظة كل مستلم يدوياً، وهي مهمة كانت مرهقة وتفتح الباب للأخطاء.
الجزء الصعب: ثمانية مستودعات وعقدة متزامنة#
قبل تغيير أي شيء، كان على فريقنا أن يشغّل Core Registry، وهي عدة تطبيقات لا تطبيق واحد. فللسجل واجهة خلفية وواجهة استخدام، وكذلك لمحرك الترميز. ومشغّل الرموز (token driver)، وهو الجزء الذي ينشئ الرموز على السلسلة وتتلفها، كان أيضاً ما يشغّل المستكشف، والمستكشف جاء بواجهة استخدام خاصة به. ثم جمع مستودعان إضافيان كل ذلك في واجهة برمجية (API) واحدة وتطبيق واحد.
وكانت النسخة المحلية تعني ثمانية مستودعات تعمل معاً: تطبيقات JavaScript على إصدار واحد من Node، ومشغّل الرموز على إصدار واحد من Python، وكلها تقرأ ملف إعدادات مشتركاً واحداً. وفي القاعدة عقدة Chia، كان على محفظتها وعلى DataLayer فيها أن تتزامنا مع شبكة Chia التجريبية الخاصة بالسجلات قبل أن يعمل أي شيء فوقهما.
وأرشد مهندسو Chia فريقنا خلال الإعداد عبر اتصالات مباشرة، ولم يكونوا يدمجون إلا الإيداعات الموقّعة (signed commits). وجاء أول سطر من شيفرتنا الجديدة بعد أن اكتمل ذلك كله.
ما الذي بنيناه: لوحة بيانات يستطيع السجل نشرها#
لوحة البيانات تطبيق جديد يقف إلى جانب تطبيق السجل نفسه. وكانت Chia قد حددت الخطوط العريضة لما ينبغي أن تعرضه. وصممها Saif Pasha، في Figma أولاً ثم بالشيفرة.
الصفحة الأولى تعطي أعداد المشاريع بحسب كل حالة، وكل حالة مرتبطة بتعريفها في مسرد المصطلحات. وتفصّل الكربون المُصدَر بحسب المنهجية وبحسب نوع المشروع، وتعرض عدد المشاريع التي يستضيفها السجل بنفسه. والصفحة الثانية ترسم الكربون المُصدَر على مدى عشر سنوات بحسب نوع الوحدة، مع مرشّح للحالة، وكل أرصدة السجل بحسب الحالة، مع مرشّح لسنة الإصدار (vintage).
ويستطيع السجل استضافة لوحة البيانات على موقعه العام لأنها تُبنى أيضاً بوصفها تطبيق ويب مستقلاً. ثم أضافها مهندسو Chia إلى Core Registry، فصارت التطبيق الرابع في المجموعة.
دفتر العناوين والبوابة التي أمامه#
أخذ دفتر العناوين فريقنا إلى الواجهة الخلفية. وكان أصعب جزء فيه الوسيط (proxy). فالأرصدة تُصدَر في محرك الترميز، ولم تكن لديه قاعدة بيانات. ولأن المحرك يعمل دائماً إلى جانب السجل، وُضع دفتر العناوين في قاعدة بيانات السجل. وما زالت واجهة استخدام المحرك لا تتحدث إلا إلى المحرك، وهو يمرر كل طلب إلى وجهته.
وحقيقتان شكّلتا الوسيط. فهوية من يرسل إليهم المُصدِر الأرصدة أمر خاص، والسجل يمكن أن يعمل أيضاً نسخةً للقراءة فقط مفتوحة للاستعلامات العامة. لذلك فالوسيط بوابة. فهو يبحث أولاً عن المفتاح الخاص بمحرك الترميز. ولا يحصل على مفتاح السجل إلا الطلب الذي يحمل المفتاح الصحيح، ويقرأ الوسيط مفتاح السجل من إعداداته ويرفقه على الخادم، بعيداً عن متناول أي متصفح. وكل ما عدا ذلك يتوقف عند البوابة ولا يصل إلى السجل أبداً.
ويرى المُصدِر قائمة. يُدخَل اسم كل مستلم وعنوان محفظته مرة واحدة، ويمكن تعديلهما أو حذفهما في الصفحة نفسها. ومن ذلك الحين، يبدأ إصدار الأرصدة باسم يُختار من قائمة منسدلة، وإن كان لصق العنوان لا يزال ممكناً.
النتيجة#
راجع مهندسو Chia كل تعديل ودمجوه في شيفرة Core Registry مفتوحة المصدر، وسلّمت Chia العمل إلى البنك الدولي وبوتان.


ومع وجود لوحة البيانات تطبيقاً رابعاً في المجموعة، صار بإمكان أي دولة تعمل على Core Registry أن تعرض للجمهور أرقام سجلها على موقعها الخاص. وصار بإمكان المُصدِرين فيها إرسال الأرصدة إلى مستلم حُفظ وتُحقق منه مرة واحدة، بعد أن كان كل إصدار يبدأ بعنوان محفظة يُكتب باليد.