عقدة Astrix الكاملة والمكتبات المساعدة لها.
نحن ندعو المطورين وعشاق blockchain للتعاون واختبار وتحسين تنفيذ Rust الخاص بنا. يمثل كل سطر من التعليمات البرمجية هنا فرصة للمساهمة في حركة blockchain مفتوحة المصدر، وتشكيل منصة مصممة لقابلية التوسع والسرعة دون المساس باللامركزية.
ستكون تعليقاتك ومساهماتك وتقارير المشكلات جزءًا لا يتجزأ من تطوير قاعدة التعليمات البرمجية هذه ومواصلة نضجها كعقدة موثوقة في شبكة Atrix.
تثبيت المتطلبات العامة
sudo apt install curl git build-essential libssl-dev pkg-config
تثبيت Protobuf (مطلوب لـ gRPC)
sudo apt install protobuf-compiler libprotobuf-dev # Required for gRPC
تثبيت سلسلة أدوات clang (مطلوبة لإصدارات RocksDB وWASM secp256k1)
sudo apt-get install clang-format clang-tidy
clang-tools clang clangd libc++-dev
libc++1 libc++abi-dev libc++abi1
libclang-dev libclang1 liblldb-dev
libllvm-ocaml-dev libomp-dev libomp5
lld lldb llvm-dev llvm-runtime
llvm python3-clang
قم بتثبيت سلسلة أدوات الصدأ
إذا كان لديك برنامج Rust مثبتًا بالفعل، فقم بتحديثه عن طريق تشغيل: rustup update
قم بتثبيت حزمة Wasm
cargo install wasm-pack
تثبيت هدف Wasm32
rustup target add wasm32-unknown-unknown
استنساخ الريبو
git clone https://github.com/astrix-network/astrix-node
cd astrix-node
قم بتثبيت Git لنظام التشغيل Windows أو توزيعة Git بديلة.
قم بتثبيت المخازن المؤقتة للبروتوكول وأضف دليل bin
إلى Path
الخاص بك
قم بتثبيت LLVM-15.0.6-win64.exe
أضف دليل bin
الخاص بتثبيت LLVM ( C:Program FilesLLVMbin
) إلى PATH
قم بتعيين متغير البيئة LIBCLANG_PATH
للإشارة إلى دليل bin
أيضًا
هام: بسبب مشكلات تكوين تبعية C++، قد لا يعمل تثبيت LLVM AR
على Windows بشكل صحيح عند التبديل بين WASM وتجميع كود C++ الأصلي (إصدارات RocksDB+secp256k1
الأصلية مقابل WASM32 من secp256k1
). لسوء الحظ، يؤدي تعيين متغير بيئة AR
يدويًا أيضًا إلى إرباك سلسلة أدوات بناء C++ (لا ينبغي تعيينها كأصل أصلي ولكن يجب ضبطها لأهداف WASM32). حاليًا، أفضل طريقة لمعالجة هذه المشكلة هي كما يلي: بعد تثبيت LLVM على نظام التشغيل Windows، انتقل إلى دليل تثبيت bin
الهدف وانسخ LLVM_AR.exe
أو أعد تسميته إلى AR.exe
.
قم بتثبيت سلسلة أدوات الصدأ
إذا كان لديك برنامج Rust مثبتًا بالفعل، فقم بتحديثه عن طريق تشغيل: rustup update
قم بتثبيت حزمة Wasm
cargo install wasm-pack
تثبيت هدف Wasm32
rustup target add wasm32-unknown-unknown
استنساخ الريبو
git clone https://github.com/astrix-network/astrix-node
cd astrix-node
تثبيت Protobuf (مطلوب لـ gRPC)
brew install protobuf
قم بتثبيت llvm.
لا يدعم تثبيت XCode الافتراضي لـ llvm
أهداف إنشاء WASM. لإنشاء WASM على نظام MacOS، تحتاج إلى تثبيت llvm
من homebrew (في وقت كتابة هذا التقرير، كان إصدار llvm لنظام التشغيل MacOS هو 16.0.1).
brew install llvm
ملحوظة: يمكن لـ Homebrew استخدام مواقع تثبيت براميل مختلفة وفقًا للتكوين الخاص بك. على سبيل المثال:
/opt/homebrew/opt/llvm
-> /opt/homebrew/Cellar/llvm/16.0.1
/usr/local/Cellar/llvm/16.0.1
لتحديد موقع التثبيت يمكنك استخدام أمر brew list llvm
ومن ثم تعديل المسارات أدناه وفقًا لذلك:
% brew list llvm
/usr/local/Cellar/llvm/16.0.1/bin/FileCheck
/usr/local/Cellar/llvm/16.0.1/bin/UnicodeNameMappingGenerator
...
إذا كان لديك /opt/homebrew/Cellar
، فيجب أن تكون قادرًا على استخدام /opt/homebrew/opt/llvm
.
أضف ما يلي إلى ملف ~/.zshrc
الخاص بك:
export PATH= " /opt/homebrew/opt/llvm/bin: $PATH "
export LDFLAGS= " -L/opt/homebrew/opt/llvm/lib "
export CPPFLAGS= " -I/opt/homebrew/opt/llvm/include "
export AR=/opt/homebrew/opt/llvm/bin/llvm-ar
أعد تحميل الملف ~/.zshrc
source ~ /.zshrc
قم بتثبيت سلسلة أدوات الصدأ
إذا كان لديك برنامج Rust مثبتًا بالفعل، فقم بتحديثه عن طريق تشغيل: rustup update
قم بتثبيت حزمة Wasm
cargo install wasm-pack
تثبيت هدف Wasm32
rustup target add wasm32-unknown-unknown
استنساخ الريبو
git clone https://github.com/astrix-network/astrix-node
cd astrix-node
يشير Rust WebAssembly (WASM) إلى استخدام لغة برمجة Rust لكتابة التعليمات البرمجية التي يمكن تجميعها في WebAssembly، وهو تنسيق تعليمات ثنائي يتم تشغيله في متصفحات الويب وNodeJs. يتيح ذلك سهولة التطوير باستخدام لغات البرمجة JavaScript وTypeScript مع الاحتفاظ بمزايا Rust.
يمكن إنشاء مكونات WASM SDK من المصادر عن طريق تشغيل: - ./build-release
- إنشاء حزمة إصدار كاملة (تتضمن إصدارات الإصدار وتصحيح الأخطاء لأهداف الويب وnodejs) - ./build-docs
- بناء وثائق TypeScript - ./build-web
- إصدار بناء الويب - ./build-web-dev
- تطوير بناء الويب - ./build-nodejs
- إصدار بناء nodejs - ./build-nodejs-dev
- بناء عقدة التطوير
هام: لا تستخدم بنيات dev
في الإنتاج. فهي أكبر حجمًا وأبطأ بشكل ملحوظ وتتضمن رموز تصحيح الأخطاء.
cd cli
cargo run --release
قم بتشغيل خادم http داخل مجلد wallet/wasm/web
. إذا لم يكن لديك مرة واحدة، يمكنك استخدام ما يلي:
cd wallet/wasm/web
cargo install basic-http-server
basic-http-server
سيعمل خادم http الأساسي على المنفذ 4000 افتراضيًا، لذا افتح متصفح الويب الخاص بك وقم بتحميل http://localhost:4000
الإطار متوافق مع جميع متصفحات سطح المكتب والجوال الرئيسية.
ابدأ عقدة الشبكة الرئيسية
cargo run --release --bin astrixd
# or with UTXO-index enabled (needed when using wallets)
cargo run --release --bin astrixd -- --utxoindex
cargo run --release --bin astrixd -- --configfile /path/to/configfile.toml
# or
cargo run --release --bin astrixd -- -C /path/to/configfile.toml
=
جيدة، ويتم تحليل كل من arg=value
و arg = value
بشكل صحيح..
أو =
سوف يتطلب اقتباس القيمة، أي <وسيطة CLI> = "<القيمة>".addpeer = ["10.0.0.1", "1.2.3.4"]
.على سبيل المثال:
utxoindex = false
disable-upnp = true
perf-metrics = true
appdir = "some-dir"
netsuffix = 11
addpeer = ["10.0.0.1", "1.2.3.4"]
قم بتمرير علامة --help
لعرض جميع الوسائط الممكنة
cargo run --release --bin astrixd -- --help
يتم تعطيل نظام wRPC الفرعي افتراضيًا في astrixd
ويمكن تمكينه عبر:
بروتوكول جسون:
--rpclisten-json = < interface:port >
# or use the defaults for current network
--rpclisten-json = default
بروتوكول بورش:
--rpclisten-borsh = < interface:port >
# or use the defaults for current network
--rpclisten-borsh = default
ملاحظة جانبية:
تدمج Astrix Node نظامًا فرعيًا اختياريًا لـ wRPC. wRPC عبارة عن تطبيق RPC عالي الأداء ومحايد للنظام الأساسي ومرتكز على الصدأ ومؤطر WebSocket ويمكنه استخدام تشفير بروتوكول Borsh وJSON.
تشبه مراسلة بروتوكول JSON JSON-RPC 1.0، ولكنها تختلف عن المواصفات بسبب الإشعارات من جانب الخادم.
تشفير بورش مخصص للتواصل بين العمليات. عند استخدام Borsh، يجب إنشاء كل من العميل والخادم من نفس قاعدة التعليمات البرمجية.
يعتمد بروتوكول JSON على هياكل بيانات Astrix وهو حيادي لإصدار بنية البيانات. يمكنك الاتصال بنقطة نهاية JSON باستخدام أي مكتبة WebSocket. عملاء RPC المدمجون لـ JavaScript وTypeScript القادرون على التشغيل في متصفحات الويب وNode.js متاحون كجزء من إطار عمل Atrix WASM.
يمكن تصفية تسجيل الدخول إلى astrixd
و simpa
إما عن طريق:
تدعم قاعدة التعليمات البرمجية الحالية محاكاة كاملة للشبكة أثناء العملية، وبناء DAG فعليًا عبر الوقت الافتراضي مع تأخير افتراضي ووقت التحقق من الصحة (بعد إنشاء المحاكاة).
لرؤية الأوامر المتاحة
cargo run --release --bin simpa -- --help
سيقوم الأمر التالي بتشغيل محاكاة لإنتاج 1000 كتلة مع تأخير الاتصال لمدة ثانيتين و8 كتل في الثانية (كتل في الثانية) أثناء محاولة ملء كل كتلة بما يصل إلى 200 معاملة.
cargo run --release --bin simpa -- -t=200 -d=2 -b=8 -n=1000
يمكن إجراء ملفات تعريف الكومة في astrixd
و simpa
من خلال تمكين ميزة heap
وملف التعريف باستخدام الوسيطة --features
cargo run --bin astrixd --profile heap --features=heap
سيتم إنتاج ملف {bin-name}-heap.json
في جذر دليل العمل، والذي يمكن فحصه بواسطة عارض dhat
تشغيل الوحدة ومعظم اختبارات التكامل
cd astrix-node
cargo test --release
// or install nextest and run
باستخدام التالي
cd astrix-node
cargo nextest run --release
cd astrix-node
cargo bench
يمكن تصفية تسجيل الدخول إلى astrixd
و simpa
إما عن طريق:
تعريف متغير البيئة RUST_LOG
إضافة الوسيطة --loglevel كما في المثال التالي:
(cargo run --bin astrixd -- --loglevel info,astrix_rpc_core=trace,astrix_grpc_core=trace,consensus=trace,astrix_core=trace) 2>&1 | tee ~/astrix-node.log
في هذا الأمر قمنا بتعيين loglevel
على INFO
.