مقدمة في Infura

في مقال “سير عمل التطوير” و “أين موقع المستخدمون في نموذجنا العقلي؟” ، وصفنا تفاعلاتنا مع شبكة Ethereum التي تمر عبر بوابة الشبكة. في “أساسيات Ethereum” ، تحدثنا عن عملاء Ethereum والعقد وكيفية التفاعل مع الشبكة التي تحتاجها لتشغيل عقدة كاملة.

ومع ذلك ، بالنسبة للمطورين الذين بدأوا للتو في استخدام Ethereum أو المستخدمين الذين ليس لديهم وصول سهل (أو معرفة) لعقدة Ethereum ، يمكنك استخدام خدمة بوابة Ethereum تسمى Infura.

يوفر Infura نقطة وصول بسيطة لواجهة برمجة التطبيقات ليس فقط لشبكة Ethereum mainnet وجميع شبكات الاختبار العامة ، ولكن أيضًا لـ IPFS و Ethereum 2.0 Beacon Chain و Filecoin و Optimism و Arbitrum و Polygon. سيؤدي دمج Infura في سير عملك إلى تسهيل النشر كثيرًا. مع نمو مشروعك ، يمكنك تمامًا التفكير في خيارات أخرى ، لكنها طريقة جيدة وسهلة التطوير.

اتبع الخطوات أدناه للاشتراك في Infura (هناك أيضًا إرشادات رائعة خطوة بخطوة على موقع Infura هنا):

التسجيل 

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

إعداد مشروعك الأول

بمجرد التسجيل ، ستضغط على شعار Ethereum على الجانب الأيسر. (انظر أدناه)

يمكنك أيضًا رؤية نقاط نهاية الشبكة المتاحة الأخرى المدرجة هنا ، والتي ستكون أكثر منذ أن أخذنا لقطة الشاشة أعلاه!

بعد ذلك ، انقر فوق “إنشاء مشروع جديد” في الزاوية اليمنى العليا:

اختر اسمًا لمشروعك وانتقل إلى “الإعدادات”. هناك ، ستتمكن من الوصول إلى بيانات الاعتماد التي ستستخدمها في بيئتك المحلية (إما Truffle أو بعض الإطارات الأخرى) للمساعدة في تسهيل النشر. مرة أخرى ، هذه هي بيانات اعتمادك الشخصية والحساسة ، لذا تأكد من تخزينها في ملف .env الذي تضيفه إلى ملف .gitignore الخاص بك! اقرأ المزيد عن ذلك هنا.

سيبدو ملف .env الخاص ببيانات اعتماد Infura الخاصة بنا على النحو التالي:

MNEMONIC="Your MNEMONICs" // A wallet with enough ETH
INFURA_URL="Your Infura URL with API key"

دمج Infura في بيئة التطوير الخاصة بك

الآن دعنا نرى كيف نأخذ بيانات اعتماد Infura الخاصة بنا ونقوم بتوصيلها بإطار عمل تطوير مثل Truffle. لهذا ، سوف نتعمق أكثر في ملف truffle-config.js الخاص بنا

ملف تكوين Truffle (truffle-config.js) هو العمود الفقري لمشروع قائم على Truffle. حتى الآن ، رأينا أنها تستخدم فقط لتخزين تفاصيل الشبكات المختلفة التي نستهدفها (على سبيل المثال ، المحلية ، testnet ، mainet ، وما إلى ذلك) ، لكنها تُستخدم فعليًا في الكثير ، مثل تهيئة الشبكة.

لتوضيح ذلك ، دعنا نلقي نظرة على قسم الشبكات في ملف truffle-config.js من مثال SimpleStorage الذي كنا نعمل عليه في الدروس السابقة. إليك عينة من ملف truffle-config.js الذي يستهدف نقطة نهاية Ganache التي قمنا بإعدادها مسبقًا:

module.exports = {
  networks: {
    development: {
      host: "127.0.0.1",
      port: 8545,
      network_id: "*" // Match any network id
    }
  },
  compilers: {
    solc: {
      version: "^0.8.0"
    }
  }
};

عندما قمنا بتشغيل ملف truffle init سابقًا ، يحتوي ملف truffle-config.js على الكثير من المواد المفيدة التي تم التعليق عليها. على سبيل المثال ، هذا قسم ضمن الشبكات:

  // Useful for deploying to a public network.
    // NB: It's important to wrap the provider as a function.
    // ropsten: {
    // provider: () => new HDWalletProvider(mnemonic, `https://ropsten.infura.io/v3/YOUR-PROJECT-ID`),
    // network_id: 3,       // Ropsten's id
    // gas: 5500000,        // Ropsten has a lower block limit than mainnet
    // confirmations: 2,    // # of confs to wait between deployments. (default: 0)
    // timeoutBlocks: 200,  // # of blocks before a deployment times out  (minimum/default: 50)
    // skipDryRun: true     // Skip dry run before migrations? (default: false for public nets )
    // },

لتنشيط هذا ، كل ما يتعين علينا القيام به هو التعليق على الكود مرة أخرى (⌘ / في VSCode) والاستبدال في بيانات الاعتماد التي حصلنا عليها من Infura. لاحظ أنك بحاجة إلى تغيير معرّف المشروع وأي شبكة نطاق فرعي ترغب في العمل من خلالها. تأكد أيضًا من تغيير network_id إلى المناسب لشبكتك.

للحصول على بيانات اعتماد Infura الخاصة بنا بأمان من ملف .env الخاص بنا ، ستقوم بتضمين هذا في الجزء العلوي من ملف truffle-config.js (يتم توفير HDWallet ، نحتاج فقط إلى إزالة التعليق منها ):

const HDWallet = require('@truffle/hdwallet-provider');
const dotenv = require('dotenv');
dotenv.config();
const mnemonic = process.env.MNEMONIC;

(كمرجع ، في المقتطف أعلاه ، نستخدم أيضًا مكتبة Truffle’s HDWalletProvider التي تمكننا من استخدام mnemonic  مخصصة كجزء من النشر.)

يمكننا تغيير اسم شبكة الاختبار الخاصة بنا إلى أي اسم نريده. إليك ما سيبدو عليه Rinkeby:

    rinkeby: {
      provider: () => new HDWalletProvider(mnemonic, process.env.INFURA_URL),
      network_id: "4",
      gas: 5500000
    }

لترحيل SimpleStorage إلى Rinkeby ، نقوم بتشغيل الأمر التالي:

$ truffle migrate --network rinkeby

هذا كل شيء! إذا كان لديك ما يكفي من اختبار Rinkeby Eth في الحساب المرتبط بعبارة mnemonic، فسيتم نشر عقدك الآن على شبكة اختبار عامة باستخدام Infura!

إضافة تعليق