نشر عقد ذكي الايثريوم في 6 خطوات

مقدمة

تشرح هذه المقالة تعليمات خطوة بخطوة حول كيفية استخدام Truffle Suite لتطوير واختبار عقد ذكي محليًا. تتيح لك نقاط فحص Codebase طوال هذا البرنامج التعليمي معرفة كيف يجب أن تبدو التعليمات البرمجية الخاصة بك في كل مرحلة.
بمجرد اختبار الكود الخاص بنا محليًا ، سنقوم بنشره على شبكة اختبار الايثريوم العامة والتحقق منه على موقع Etherscan!
سنقوم بذلك في 6 خطوات:
1- التثبيت
2- إنشاء مشروعنا
3- كتابة العقد الذكي
4- ترجمة وترحيل
5- اختبارات
6- نشر إلى Testnet


1- التثبيت

* NPM و Node
اتبع التعليمات لتثبيت NodeJS على جهازك. يأتي NPM مع Node افتراضيًا. بالنسبة إلى هذه الإرشادات التفصيلية ، أستخدم الإصدار Node الإصدار 9.10.0 وإصدار NPM 5.10.0.
* محرر الكود
تأكد من تثبيت محرر نصوص حديث. أنا أستخدم VSCode.
*Truffle :
يعد Truffle Suite إطارًا شائعًا لتطوير التطبيقات اللامركزية الكاملة على شبكة الاثريوم.
نريد أن نتأكد من تثبيت Truffle عالميًا ، لذلك في إستخدم الأمر:

npm install -g truffle


* Ganache :
يعمل Ganache باعتباره بلوكشين المحلي لدينا حتى نتمكن من نشر واختبار وظائفه محليًا قبل نشره على شبكة اختبار عامة. اتبع تعليمات التثبيت الموجودة على صفحة ويب Ganache.

2- إنشاء المشروع

انتقل إلى مساحة العمل المفضلة لديك وقم بإنشاء دليل جديد سيقيم فيه مشروع Truffle الخاص بنا ، وأنا أستخدم اسم truffle-smart-contract /:

mkdir truffle-smart-contract
cd truffle-smart-contract/
truffle init

عند الانتهاء ، يجب أن ترى شيئًا مشابهًا للإخراج في الشكل 1.

هيكل المجلد :
افتح دليل المشروع الجديد في محرر النصوص الخاص بك. يجب أن يبدو هيكل المجلد مثل الشكل 2. يجب أن يكون هناك 3 أدلة فرعية: contract/ ، migration/ test / ؛ وملف: truffle-config.js.


 contract/ حيث يتم تخزين رمز العقد الذكي Solidity الخاص بنا. يعرف Truffle البحث هنا عن ملفات .sol لتجميعها وترحيلها إلى البلوكشين.
migrations/ هي المكان الذي يوجد فيه منطق الترحيل لدينا. يمكننا هنا وصف الخطوات اللازمة عند نشر عقودنا بحيث يتم نشرها بشكل صحيح.
test/ هو المكان الذي سنكتب فيه لعقودنا الذكية للتأكد من أنها تعمل كما هو متوقع.
truffle-config.js على معلومات حول الشبكات والمترجمين ومواقع الملفات والتكوينات المخصصة الأخرى لإطار Truffle لمعرفة مكان أشياءنا. المزيد عن هذا الملف لاحقًا …

الإتصال ب Ganache
افتح Ganache ، الذي قمنا بتثبيته مسبقًا ، ثم انقر فوق “Quickstart”. سيؤدي هذا إلى بدء تشغيل البلوكشين المحلي. يجب أن تبدو نافذتك مثل الشكل 3.

العناوين العامة التي يمكنك رؤيتها هي أول 10 عناوين قدمها لك Ganache للتفاعل مع البلوكشين. قام Ganache بتحميل كل منها مع 100 ETH. سنستخدم هذه لاحقًا.

على طول جزء التنقل الأغمق في أعلى النافذة ، يمكنك رؤية صف يعرض تفاصيل حول البلوكشين: الكتلة الحالية ، وسعر الغاز ، وحد الغاز ، وما إلى ذلك. قم بتدوين معرف الشبكة وتفاصيل خادم RPC والعودة إلى النص الخاص بك محرر.

افتح ملف truffle-config.js واحذف كل ما هو موجود حاليًا. ألصق ما يلي من الشكل 4.

module.exports = {
  networks: {
    development: {
      host: "127.0.0.1",
      port: 7545,
      network_id: "5777",
    }
  }
}

في الشكل 4 ، نقوم بتحديد المكان الذي يجب أن تبحث فيه Truffle للعثور على البلوكشين المحلية الخاصة بنا. في السطر 3 نحدد شبكة تسمى التنمية. استخدم تفاصيل معرف الشبكة وخادم RPC التي سجلناها من Ganache لملء host وport و network_id.

دعنا نعود إلى محطتنا الطرفية للتأكد من أن Truffle يمكنه الاتصال بـالبلوكشين. قم بتشغيل ما يلي:

truffle test

يجب أن ترى شيئًا مشابهًا للإخراج في الشكل 5.

أشياء عظيمة. تم إعداد مساحة العمل الخاصة بنا لبدء التفاعل مع البلوكشين المحلية. يمكننا الآن البدء في تطوير عقدنا الذكي.

3- كتابة العقد الذكي

دعنا نعود إلى محرر النصوص الخاص بنا وإنشاء ملف جديد في العقود / المجلد يسمى HelloWorld.sol. يوضح الشكل 6 رمز HelloWorld ، لذا الصقها

pragma solidity >=0.5.0;

contract HelloWorld {
    string private greeting;

    constructor() public {
        greeting = "Hello World";
    }

    function getGreeting() public view returns(string memory){
        return greeting;
    }
}

السطر الاول:
تحدد صلابة pragma إصدار Solidity الذي يجب استخدامه عند تجميع العقد. أستخدم الإصدار المتين 0.5.0 وما فوق ، قد تحتاج إلى التحقق من الإصدار الذي تستخدمه بحيث يتم تجميع إصدارك بشكل صحيح. قم بذلك عن طريق العودة إلى الجهاز وتشغيل إصدار الكمأة.
السطر الثالث:
نحدد هنا اسم العقد الذكي: HelloWorld. يتم تضمين جميع وظائف هذا العقد داخل قوس مجعد زائدة.
السطر الرابع:
هنا نحدد متغير حالة يسمى تحية من نوع السلسلة. هذه هي التحية التي ستعود بها وظيفة getGreeting.
السطر السادس إلى الثامن:
يتم استدعاء المنشئ عند تهيئة العقد الذكي. في بلدنا ، نقوم بتعيين متغير حالة الترحيب ليكون “Hello World”.
السطر العاشر إلى الثاني عشر:
تُرجع دالة getGreeting ببساطة قيمة متغير حالة الترحيب ، الذي تم تعيينه في المُنشئ. تعني الكلمة الأساسية للعرض أن الوظيفة لا تُجري أي تغييرات في الحالة أثناء تنفيذها.

4- ترجمة وترحيل

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

truffle compile

يجب أن ترى شيئًا مشابهًا لهذا

يجب أن يكون هناك الآن مجلد جديد في دليل الجذر الخاص بك يسمى build /. هذا هو المكان الذي يجلس فيه التعليمات البرمجية المترجمة الخاصة بك.

الترحيل

الترحيل هو عملية نشر العقود الذكية المترجمة إلى البلوكشين.
في محرر النصوص الخاص بك ، قم بإنشاء ملف جديد في مجلد الترحيل / المجلد يسمى 2_deploy_contract.js. هنا سوف نرشد Truffle كيفية نشر العقد الذكي الذي تم إنشاؤه حديثًا. قم بلصق الكود من الشكل 8 في 2_deploy_contract.js:

const HelloWorld = artifacts.require("HelloWorld");

module.exports = function(deployer) {
  deployer.deploy(HelloWorld);
};

قم بتشغيل ما يلي في الوحدة الطرفية الخاصة بك لترحيل العقد الخاص بك:

truffle migrate

يجب أن ترى شيئًا مشابهًا للإخراج في الشكل 9:


مدهش. تم نشر العقد الخاص بك إلى البلوكشين المحلية الخاصة بك! توجه إلى الغاناش وألق نظرة على الصف الأول من جدول الحسابات. يجب أن ترى أن رصيد ETH قد انخفض بشكل طفيف ، وأن عدد المعاملات قد زاد فوق 0 ، كما هو موضح في الشكل 10.

ينخفض رصيد ETH لأنه يكلف نشر GAS إلى البلوكشين، ويمثل عدد المعاملات المتزايد المعاملات التي تم استخدامها لنشر العقد.

5- اختبارات

لضمان عمل العقد الذكي بشكل صحيح ، نحتاج إلى كتابة بعض الاختبارات. سنقوم بكتابة اختبار صلابة لعقد HelloWorld الخاص بنا للتأكد من أنه عند استدعاء getGreeting () يتم إرجاع الاستجابة الصحيحة.
توجه إلى محرر النصوص الخاص بك وقم بإنشاء ملف جديد داخل الاختبار / المجلد يسمى TestHelloWorld.sol. الصق الرمز من الشكل 11 في الملف

pragma solidity >=0.5.0;

import "truffle/Assert.sol";
import "truffle/DeployedAddresses.sol";
import "../contracts/HelloWorld.sol";

contract TestHelloWorld {
    function testItGreets() public {
        // Get the deployed contract
        HelloWorld helloWorld = HelloWorld(DeployedAddresses.HelloWorld());

        // Call getGreeting function in deployed contract
        string memory greeting = helloWorld.getGreeting();

        // Assert that the function returns the correct greeting
        Assert.equal(greeting, "Hello World", "It should greet me with Hello World.");
    }
}

دعنا نجري الاختبار!

truffle test

من المفترض أن ترى ناتجًا مشابهًا للشكل 12 يؤكد نجاح الاختبار:

أحسنت ، لقد طورت واختبرت ونشرت عقدك الذكي الخاص بك على شبكة اختبار Kovan Ethereum. آمل أن يلهمك هذا لتجربة المزيد مع Truffle و Ethereum و Blockchain بشكل عام.

المصدر:

https://medium.com/swlh/develop-test-and-deploy-your-first-ethereum-smart-contract-with-truffle-14e8956d69fc#

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

شعار ووردبريس.كوم

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   /  تغيير )

Google photo

أنت تعلق بإستخدام حساب Google. تسجيل خروج   /  تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   /  تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   /  تغيير )

Connecting to %s

WordPress.com. قالب: Baskerville 2 بواسطة Anders Noren.

أعلى ↑

%d مدونون معجبون بهذه: