كيفية إعداد بيئة تطوير EOSIO وتشغيلها

دعنا نبني بيئة لتطوير DApps التي تعمل على منصة EOS.

كمرجع لنا ، استخدمنا إعداد البيئة المحلية في وثيقة ويكي EOSIO الرسمية.

مكونات EOSIO

EOSIO له ثلاثة مكونات.

  • العقدة: مكون العقدة الذي يدير blockchain
  • keosd: مكون يدير المحفظة
  • cleos: CLI الذي يتحكم في blockchain ومحفظة

تثبيت EOSIO

في هذه المقالة ، نوضح موضوعنا على أساس MaxOS Darwin 10.12.

أولاً ، يرجى استنساخ الكود المصدري من بوابة EOSIO

git clone https://github.com/EOSIO/eos --recursive

يجب تثبيت Xcode و homebrew لإنشاء التعليمات البرمجية المصدر. في حالة عدم تثبيت الاثنين ، يرجى تثبيت Xcode والبيرة أولاً.

  • xcode: https://developer.apple.com/xcode/
  • البيرة: https://brew.sh

عند تشغيل البرنامج النصي للبناء داخل الكود المصدري ، سيتم الانتهاء من الإنشاء تلقائيًا.

$ eos cd
$ ./eosio_build.sh

بعد الانتهاء من الإنشاء بنجاح ، ستظهر الرسائل أدناه.

[100 ٪] ربط CXX ​​القابل للتنفيذ unit_test
[100 ٪] بنيت الهدف unit_test
_______ _______ _______ _________ _______
(____ \ (___) (____ \\ __ __ / (___)
| (\ / | () || (\ /) (| () |
| (__ | | | || (_____ | | | | | | |
| __) | | | | (_____) | | | | | |
| (| | | |) | | | | | | |
| (____ / \ | (___) | / \ ____) | ___) (___ | (___) |
(_______ / (_______) \ _______) \ _______ / (_______)
تم بناء EOSIO بنجاح. 0:11:21
للتحقق من التثبيت ، قم بتشغيل الأوامر التالية:
/ usr / local / bin / mongod -f /usr/local/etc/mongod.conf &
cd / المستخدمين / سليل / بوابة / eos / build ؛ جعل الاختبار
للمزيد من المعلومات:
موقع EOSIO: https://eos.io
قناة EOSIO Telegram @ https://t.me/EOSProject
موارد EOSIO: https://eos.io/resources/
تبادل مكدس EOSIO: https://eosio.stackexchange.com
ويكي EOSIO: https://github.com/EOSIO/eos/wiki

استكشاف الأخطاء وإصلاحها

  1. عندما يحدث خطأ مثل أدناه أثناء عملية البناء:
خطأ CMake في /usr/local/Cellar/cmake/3.11.3/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
 أخفق العثور على Gettext libintl (مفقود: Intl_INCLUDE_DIR)
Call Stack (أحدث مكالمة أولاً):
 /usr/local/Cellar/cmake/3.11.3/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
 /usr/local/Cellar/cmake/3.11.3/share/cmake/Modules/FindIntl.cmake:47 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
 البرامج / cleos / CMakeLists.txt: 29 (find_package)

في هذه الحالة ، نحتاج إلى تعديل معلومات الاتصال ، حيث يتم توصيل البيرة المحلية و gettext بإصدارات مختلفة.

$ الشراب رابط gettext - القوة

إضافة مسار gettext إلى (~ / .profile)

تصدير PATH = "/ usr / local / opt / gettext / bin: $ PATH"

المرجع: https://github.com/EOSIO/eos/issues/2174

2. عندما يحدث خطأ مثل أدناه في عملية البناء:

خطأ في بناء نظام التشغيل Mac OS 10.13.3 "path mongo-cxx-driver موجود بالفعل"

يرجى اتباع الأمر أدناه:

sudo rm-rf / tmp / mongo *
cd / path / to / eos
rm بناء rf /
بوابة سحب
git subodule update - init - recursive
./eosio_build.sh

المرجع: https://github.com/EOSIO/eos/issues/3197

تؤكد

لنقم بتشغيل برنامج نصي للاختبار للتحقق مما إذا كانت البنية قد تمت بنجاح.

$ / usr / local / bin / mongod -f /usr/local/etc/mongod.conf &
بناء CD $ /
$ جعل الاختبار
تشغيل الاختبارات ...
اختبار المشروع / المستخدمين / سليل / بوابة / eos / بناء
ابدأ 1: test_cypher_suites
1/35 الاختبار رقم 1: test_cypher_suites ................... مرت 0.04 ثانية
ابدأ 2: validate_simple.token_abi
2/35 الاختبار رقم 2: validate_simple.token_abi ............ مرت 0.08 ثانية
ابدأ 3: validate_eosio.token_abi
...
34/35 الاختبار رقم 34: إعادة تشغيل سيناريوهات الاختبار الصعب ... مرت 151.83 ثانية
بدء 35: validate_dirty_db_test
35/35 اختبار # 35: validate_dirty_db_test ............... مرت 4.42 ثانية
تم اجتياز الاختبارات بنسبة 100٪ ، وفشل الاختبار من 35

لنقم بتثبيت البرنامج الذي يكمل الإنشاء.

بناء مؤتمر نزع السلاح $
جعل sudo تثبيت

تشغيل EOSIO

لنقم بتشغيل العديد من المكونات في EOSIO. لنقم بذلك بعقد واحدة كما هو أساسي لبناء بيئة تطوير.

nodeos

يرجى تشغيل مع خيار القيادة أدناه.

$ nodeos -e -p eosio - plugin eosio :: chain_api_plugin - plugin eosio :: history_api_plugin
  • -e: تشغيل كتلة الإنتاج
  • -p eosio: إعداد اسم المنتج
  • - البرنامج المساعد eosio :: chain_api_plugin: تشغيل API المتعلقة بالسلسلة
  • - البرنامج المساعد eosio :: history_api_plugin: قم بتشغيل API ذات الصلة بالتاريخ

يمكنك فقط تشغيل 'keosd' بدون خيارات بعد إكمال ملف التكوين.

  • موقع ملف التكوين: ‘~ / Library / Application Support / eosio / nodeos / config / config.ini’
  • عند تشغيل 'keosd' أولاً ، يتم إنشاء الملف المقابل تلقائيًا.
vi ~ / Library / Application / Support / eosio / nodeos / config / config.ini
 
...
# enable-stale-production = false
تمكين الإنتاج التي لا معنى لها = صحيح
...
# اسم المنتج =
اسم المنتج = eosio
...
البرنامج المساعد = eosio :: chain_api_plugin
البرنامج المساعد = eosio :: history_api_plugin
...

تشغيل العقيدات:

العقدة $

إذا كان يعمل بشكل طبيعي ، يمكنك رؤية رسالة تشير إلى إنشاء كتلة كل 0.5 ثانية.

لنقم بتشغيل واجهة برمجة التطبيقات للتحقق مما إذا كانت "العقيدات" تعمل بشكل صحيح.

قم بعمل طلب HTTP لخادم API في منفذ 8888.

$ curl -k -v 'http://127.0.0.1:8888/v1/chain/get_info' -X GET
 
ملاحظة: الاستخدام غير الضروري لـ -X أو - طلب ، تم استنتاج GET بالفعل.
* جرب 127.0.0.1 ...
* مجموعة TCP_NODELAY
* متصل بمنفذ 127.0.0.1 (127.0.0.1) 8888 (# 0)
> GET / v1 / chain / get_info HTTP / 1.1
> المضيف: 127.0.0.1:8888
> وكيل المستخدم: curl / 7.54.0
> قبول: * / *
>

أو قم بتشغيله عبر الأمر "cleos" أدناه:

cleos $ الحصول على معلومات
{
  "server_version": "012dc012" ،
  "chain_id": "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f"،
  "head_block_num": 580 ،
  "last_irreversible_block_num": 579 ،
  "last_irreversible_block_id": "000002436a1baaeb366b55995ddad7de0822f177d60a8c6e336e3f5fcb18ecc5"،
  "head_block_id": "00000244e6923239c0649ddada0dd47a2df80df13fa825275df9ddac975e6162"،
  "head_block_time": "2018-06-12T07: 12: 48" ،
  "head_block_producer": "eosio" ،
  "virtual_block_cpu_limit": 356561 ،
  "virtual_block_net_limit": 1871085 ،
  "block_cpu_limit": 199900 ،
  "block_net_limit": 1048576
}

keosd

تشغيل باستخدام خيار الأمر أدناه:

keosd $ - http-server-address = 127.0.0.1: 8900
  • - http-server-address: نظرًا لأن المنفذ الافتراضي للعقدة لـ REST API هو 8888 ، فلنستخدم 8900 منفذًا لتجنب الاصطدام. يجب أن نستخدم 8900 بالنسبة لنا لاستخدامه لاحقًا ، في cleos ، دون تعيين عنوان URL حيث سيتم التعرف على المنفذ كمنفذ افتراضي.

يمكنك فقط تشغيل 'keosd' بعد إكمال ملف التكوين بدلاً من الخيار.

  • موقع ملف التكوين: ~ / eosio-wallet / config.ini
  • عند تشغيل 'keosd' أولاً ، يتم إنشاء الملف المقابل تلقائيًا.
$ vi ~ / eosio-wallet / config.ini
 
# http-server-address = 127.0.0.1:8888
http-server-address = 127.0.0.1:8900

تشغيل keosd:

keosd $

قم بعمل طلب HTTP لخادم API على الرقم 8900:

$ curl -k -v ‘http://127.0.0.1:8900/v1/wallet/list_wallets '-X GET
ملاحظة: الاستخدام غير الضروري لـ -X أو - request ، تم استنتاج GET بالفعل.
* جرب 127.0.0.1 ...
* مجموعة TCP_NODELAY
* متصل بمنفذ 127.0.0.1 (127.0.0.1) 8900 (# 0)
> GET / v1 / wallet / list_wallets HTTP / 1.1
> المضيف: 127.0.0.1:8900
> وكيل المستخدم: curl / 7.54.0
> قبول: * / *
>

أو قم بتشغيله عبر الأمر "cleos" أدناه:

قائمة cleos محفظة
محافظ:
[]

إذا كان 'nodeos' و 'keosd' يعملان بشكل صحيح ، فيمكنك استخدام خدمات EOSIO.