# التحقق من العقود الذكية على Polygon zkEVM باستخدام المستكشف

> يمكن التحقق من الشيفرة المصدرية للعقود الذكية المنشورة على سلسلة Polygon POS باستخدام المستكشف، وبالمثل يمكن أيضًا التحقق من العقود المنشورة على شبكة Polygon zkEVM التجريبية باستخدام مستكشف شبكة Polygon zkEVM التجريبية...

بقلم Shodipo Ayomide، نُشرت في 19 يناير 2023. نسخة الويب: https://blog.shodipoayomide.com/ar/verifying-smart-contracts-on-the-polygon-zkevm-using-the-explorer

![](https://blog.shodipoayomide.com/banners/Verifying-Smart-Contracts-on-the-Polygon-zkEVM-Using-the-Explorer.png)

يمكن التحقق من الشيفرة المصدرية للعقود الذكية المنشورة على سلسلة Polygon POS باستخدام المستكشف، وبالمثل يمكن أيضًا التحقق من العقود المنشورة على شبكة Polygon zkEVM التجريبية باستخدام مستكشف شبكة Polygon zkEVM التجريبية. وسنستعرض في هذا الدرس التقني كيفية القيام بذلك.

توفّر العقود الذكية الموثّقة انعدام الحاجة إلى الثقة، لأنها عقود تتطابق شيفرتها المصدرية المنشورة مع الـ bytecode الخاص بها. والعقود الذكية الموثّقة تضمن ذلك. وهذا يتيح للمستخدمين قراءة العقد وفهم طريقة تنفيذه، وكذلك التفاعل معه مباشرة عبر المستكشف.

قبل أن نبدأ عملية التحقق، علينا أن نفهم أن العقود قد تكون ملفًا واحدًا أو عدة ملفات. ملفات solidity المفردة هي عقود solidity لا ترث عقودًا أو مكتبات أو واجهات أخرى.

في الواقع، نادرًا ما تكون العقود المنشورة ملفات solidity مفردة، لذا سنتحقق في هذا الدرس من رمز ERC20 منشور على شبكة zkEVM التجريبية. ويمكن التحقق من ملفات solidity المفردة بالطريقة نفسها تمامًا.

والآن لننتقل إلى التحقق من عقود zkEVM الخاصة بنا!

## نشر عقدنا

الخطوة الأولى هي نشر عقدنا

لتتمكن من النشر على الشبكة التجريبية، يجب أن تكون قد أضفتها إلى محفظة metamask الخاصة بك. وإن لم تفعل، فاتبع الخطوات الموضّحة في [هذه التدوينة](https://polygon.technology/blog/your-three-step-guide-to-using-polygon-zkevm-yes-its-that-easy). تشرح التدوينة بالتفصيل كيفية إضافة الشبكة التجريبية وكذلك كيفية الحصول على ETH الخاص بالشبكة التجريبية.

للنشر، توجّه إلى [Remix IDE](https://remix.ethereum.org/)، وأنشئ ملفًا جديدًا والصق فيه هذه الشيفرة.

```rust
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.9;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract zkToken is ERC20, Ownable {
    constructor() ERC20("zkToken", "ZKT") {
        _mint(msg.sender, 10000 * 10 ** decimals());

    }

    function mint(address to, uint256 amount) public onlyOwner {
            _mint(to, amount);
    }

}
```

توجّه إلى "تبويب compile"، وقبل أن تبدأ الترجمة، عليك أن تدوّن إصدار المترجم الذي تستخدمه. وسنستخدم هنا الإصدار 0.8.12.

![](https://i.ibb.co/x1Bp8Dp/Screenshot-90-LI.jpg)

بعد الضغط على "compile" ونجاح ترجمة العقد، حان وقت النشر.

توجّه الآن إلى تبويب "Deploy & Run Transaction". وبدّل من الخيار الافتراضي "Remix VM London" إلى "Injected Web3 Provider"، مما سيؤدي إلى ظهور نافذة metamask. وقبل القيام بذلك، تأكد من أنك انتقلت إلى شبكة polygon zkEVM التجريبية.

![](https://i.ibb.co/5xn2pmS/Screenshot-92.png)

اربط محفظتك، واضغط على زر "deploy" البرتقالي، وسيُنشر العقد فورًا!

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

## تسطيح عقدنا باستخدام إضافة Flattener في Remix

عندما نسطّح عقودنا الذكية، فإننا نجمع كل شيفرة solidity في ملف واحد بدلًا من وجود عدة ملفات مصدرية. وهذا يعني أنه بدلًا من وجود عبارات الاستيراد، تصبح الشيفرة المستوردة مضمّنة في الملف نفسه.

لتسطيح عقدنا الذكي، ننفّذ الخطوات التالية:

**الخطوة 1** - انتقل إلى "plugin manager" في Remix، وهو موجود أعلى تبويب الإعدادات مباشرة.

![](https://i.ibb.co/tpH6QVn/Screenshot-97-LI.jpg)

**الخطوة 2** - ابحث عن إضافة "Flattener" وفعّلها

![](https://i.ibb.co/0JKL8Lx/Screenshot-98-LI.jpg)

**الخطوة 3** - انتقل الآن إلى تبويب flattener وانقر على "Flatten Contracts/zkToken.

![](https://i.ibb.co/MZH7FzL/Screenshot-99.png)

**الخطوة 4** - يُحفظ العقد المسطّح بعد ذلك بالنقر على زر الحفظ

## التحقق من العقد على المستكشف

والآن بعد أن نُشر عقدنا، يمكننا الاطلاع عليه على [المستكشف](https://explorer.public.zkevm-test.net/).

أولًا وقبل كل شيء، نلصق عنوان العقد في شريط البحث، فتظهر لنا هذه الواجهة.

![](https://i.ibb.co/HNRNbMd/Screenshot-94.png)

انتقل إلى تبويب "code" وحدّد موقع زر "verify and publish".

![](https://i.ibb.co/NSJwHXm/Screenshot-95-LI.jpg)

بعد النقر على زر "verify and publish"، تظهر لنا ثلاثة خيارات، وسنمضي في الخيار الأول "verify via flattened source code"، ثم نضغط "Next"

![](https://i.ibb.co/gSfzjGN/Screenshot-96-LI.jpg)

بعد ذلك، نملأ النموذج المعروض.

- اسم العقد: "zkToken"
- المترجم: v0.8.12 (هذا هو إصدار المترجم الذي استخدمناه)
- التحسين: لا (لم نُجرِ تحسينًا على العقد)
- أخيرًا، ننسخ شيفرتنا المصدرية المسطّحة ونلصقها في حقل "Enter the Solidity Contract Code"، ثم نضغط زر "verify & Publish".

ونترك بقية الحقول كما هي.

![](https://i.ibb.co/1MgLVzz/Screenshot-100.png)

ها هو ذا!، أصبحت لدينا علامة التحقق التي تشير إلى أن عقدنا قد تم التحقق منه!

![](https://i.ibb.co/2Kddxnr/Screenshot-101.png)

---

## الخاتمة

لقد تحققنا بنجاح من عقد ERC20 الخاص بنا على شبكة polygon zkEVM التجريبية، وأصبح بإمكان أي شخص الآن التفاعل معه. ذكرتُ سابقًا أن ملفات solidity المفردة يمكن التحقق منها باتباع الخطوات نفسها، وإن كنت لا تحتاج إلى تسطيح شيفرتك.

أعتقد أنه قريبًا جدًا ستدعم أدوات التحقق مثل Sourcify، التي توفر تحققًا كاملًا باستخدام البيانات الوصفية للعقد، شبكة polygon zkEVM التجريبية، وعندما يحدث ذلك، سأكتب عنه!
