الوثائق: erigon.gitbook.io المدونة: erigon.substack.com تويتر: x.com/ErigonEth
Erigon هو تطبيق لـ Ethereum (طبقة التنفيذ مع طبقة الإجماع القابلة للتضمين)، على حدود الكفاءة. عقدة الأرشيف بشكل افتراضي.
erigon
caplin
beaconAPI
shared
other
systemd
htop
استخدامًا غير صحيح للذاكرة الإعدادات الافتراضية المهمة : Erigon هي عقدة أرشيف افتراضيًا: استخدم --prune.mode
إذا لزم الأمر، اجعلها أصغر حجمًا (غير مسموح بالتغيير بعد البداية الأولى)
In-depth links are marked by the microscope sign (?)
ذاكرة الوصول العشوائي: >=32 جيجابايت، جولانج >= 1.22؛ دول مجلس التعاون الخليجي 10+ أو Clang؛ على نظام Linux: kernel > v4. بنية 64 بت.
SSD أو NVMe. لا تنصح باستخدام محرك الأقراص الصلبة - على محرك الأقراص الثابتة، سيبقى Erigon دائمًا كتل N خلف طرف السلسلة، لكنه لن يتخلف عن الركب. ضع في اعتبارك أن أداء SSD يتدهور عندما يقترب من سعته. CloudDrives (مثل gp3): تنفيذ الكتل بطيء على محركات أقراص الشبكة السحابية
؟ مزيد من التفاصيل حول حجم Erigon3 datadir
؟ مزيد من التفاصيل حول نوع البيانات المخزنة هنا
ملاحظات الإصدار والثنائيات
إنشاء أحدث إصدار (سيكون هذا مناسبًا لمعظم المستخدمين الذين يريدون فقط تشغيل عقدة):
git clone --branch release/ < x.xx > --single-branch https://github.com/erigontech/erigon.git
cd erigon
make erigon
./build/bin/erigon
قم بزيادة سرعة التنزيل عن طريق --torrent.download.rate=20mb
. ? See Downloader docs
استخدم --datadir
لاختيار مكان تخزين البيانات.
استخدم --chain=gnosis
لـ Gnosis Chain، --chain=bor-mainnet
لـ Polygon Mainnet، و-- --chain=amoy
لـ Polygon Amoy. بالنسبة لـ Gnosis Chain، فأنت بحاجة إلى عميل طبقة التوافق جنبًا إلى جنب مع Erigon (https://docs.gnosischain.com/category/step--3---run-consensus-client).
سيؤدي تشغيل make help
إلى سرد ووصف أوامر الراحة المتوفرة في Makefile.
datadir
chaindata # "Recently-updated Latest State", "Recent History", "Recent Blocks"
snapshots # contains `.seg` files - it's old blocks
domain # Latest State
history # Historical values
idx # InvertedIndices: can search/filtering/union/intersect them - to find historical data. like eth_getLogs or trace_transaction
accessors # Additional (generated) indices of history - have "random-touch" read-pattern. They can serve only `Get` requests (no search/filters).
txpool # pending transactions. safe to remove.
nodes # p2p peers. safe to remove.
temp # used to sort data bigger than RAM. can grow to ~100gb. cleaned at startup.
# There is 4 domains: account, storage, code, commitment
إذا كان بإمكانك تخزين datadir على 1 nvme-raid - فهذا رائع. إذا لم تتمكن من ذلك - فمن الممكن تخزين السجل على محرك أقراص رخيص.
# place (or ln -s) `datadir` on slow disk. link some sub-folders to fast (low-latency) disk.
# Example: what need link to fast disk to speedup execution
datadir
chaindata # link to fast disk
snapshots
domain # link to fast disk
history
idx
accessors
temp # buffers to sort data >> RAM. sequential-buffered IO - is slow-disk-friendly
# Example: how to speedup history access:
# - go step-by-step - first try store `accessors` on fast disk
# - if speed is not good enough: `idx`
# - if still not enough: `history`
# eth-mainnet - archive - April 2024
du -hsc /erigon/ *
6G /erigon/caplin
50G /erigon/chaindata
1.8T /erigon/snapshots
1.9T total
du -hsc /erigon/snapshots/ *
100G /erigon/snapshots/accessor
240G /erigon/snapshots/domain
260G /erigon/snapshots/history
410G /erigon/snapshots/idx
1.7T /erigon/snapshots
# bor-mainnet - archive - Jun 2024
du -hsc /erigon/ *
160M /erigon/bor
50G /erigon/chaindata
3.7T /erigon/snapshots
3.8T total
du -hsc /erigon/snapshots/ *
260G /erigon-data/snapshots/accessor
850G /erigon-data/snapshots/domain
650G /erigon-data/snapshots/history
1.4T /erigon-data/snapshots/idx
4.1T /erigon/snapshots
debug_getModifiedAccountsByNumber
فأرجعه--internalcl
ممكّن افتراضيًا. لتعطيل الاستخدام --externalcl
.chaindata
أقل من 15gb
. لا بأس في استخدام rm -rf chaindata
. (لمنع النمو: يوصى بـ --batchSize <= 1G
)--prune
: راجع --prune.mode
(الافتراضي: archive
، كامل: full
، EIP-4444: minimal
)--sync.loop.block.limit=5_000
ممكّن افتراضيًاالأعلام:
verbosity
log.console.verbosity
(الاسم المستعار الغالب verbosity
)log.json
log.console.json
(الاسم المستعار لـ log.json
)log.dir.path
log.dir.prefix
log.dir.verbosity
log.dir.json
من أجل تسجيل الدخول فقط إلى stdout/stderr، يمكن استخدام علامة --verbosity
(أو log.console.verbosity
) لتوفير قيمة int تحدد أعلى مستوى لسجل الإخراج:
LvlCrit = 0
LvlError = 1
LvlWarn = 2
LvlInfo = 3
LvlDebug = 4
LvlTrace = 5
لتعيين دير الإخراج للسجلات التي سيتم جمعها على القرص، يرجى تعيين --log.dir.path
إذا كنت تريد تغيير اسم الملف الناتج من erigon
، فيجب عليك أيضًا تعيين علامة --log.dir.prefix
على اسم بديل. العلامة --log.dir.verbosity
متاحة أيضًا للتحكم في إسهاب هذا التسجيل، بنفس قيمة int المذكورة أعلاه، أو قيمة السلسلة، على سبيل المثال 'debug' أو 'info'. الإسهاب الافتراضي هو "تصحيح" (4)، لتسجيل القرص.
يمكن ضبط تنسيق السجل على json باستخدام العلامات المنطقية log.json
أو log.console.json
، أو لإخراج القرص --log.dir.json
.
Erigon بشكل افتراضي هو الحل "الكل في واحد ثنائي"، ولكن من الممكن بدء TxPool كعمليات منفصلة. وينطبق الشيء نفسه على: طبقة JSON RPC (RPCDaemon)، وطبقة p2p (Sentry)، وطبقة تنزيل السجل (Downloader)، والإجماع. لا تبدأ الخدمات كعمليات منفصلة إلا إذا كان لديك سبب واضح لذلك: الحد من الموارد، والقياس، والاستبدال بالتنفيذ الخاص بك، والأمان. كيفية بدء خدمات Erigon كعمليات منفصلة، راجع docker-compose.yml. تحتوي كل خدمة على ملف ./cmd/*/README.md
خاص بها. مدونة ايريجون.
إجماع مدمج على Ethereum Mainnet وSepolia وHolesky وGnosis. لاستخدام طبقة الإجماع الخارجية: --externalcl
.
إذا كنت ترغب في تجربة Erigon: فالخيار الجيد هو بدء مزامنة إحدى شبكات الاختبار العامة، Holesky (أو Amoy). تتم مزامنته بشكل أسرع بكثير، ولا يشغل مساحة كبيرة على القرص:
git clone https://github.com/erigontech/erigon.git
cd erigon
make erigon
./build/bin/erigon --datadir= < your_datadir > --chain=holesky --prune.mode=full
يرجى ملاحظة خيار --datadir
الذي يسمح لك بتخزين ملفات Erigon في موقع غير افتراضي. اسم الدليل --datadir
ليس من الضروري أن يتطابق مع اسم السلسلة في --chain
.
يتم دعم إنتاج الكتل بشكل كامل لسلسلة Ethereum & Gnosis. لا يزال تجريبيًا بالنسبة إلى Polygon.
يمكنك تعيين إشارات Erigon من خلال ملف تكوين TOML باستخدام العلامة --config
. يمكن الكتابة فوق العلامات المحددة في ملف التكوين عن طريق كتابة العلامات مباشرة على سطر أوامر Erigon
./build/bin/erigon --config ./config.toml --chain=sepolia
بافتراض أن لدينا chain : "mainnet"
في ملف التكوين الخاص بنا، فإن إضافة --chain=sepolia
تسمح بالكتابة فوق العلامة الموجودة داخل ملف تكوين toml وتعيين السلسلة إلى sepolia
datadir = ' your datadir '
port = 1111
chain = " mainnet "
http = true
"private.api.addr" = " localhost:9090 "
"http.api" = [ " eth " , " debug " , " net " ]
يمكن استخدام Erigon كطبقة تنفيذ (EL) لعملاء طبقة الإجماع (CL). التكوين الافتراضي على ما يرام.
إذا كان عميل CL الخاص بك موجودًا على جهاز مختلف، فأضف --authrpc.addr 0.0.0.0
(تستمع واجهة برمجة تطبيقات المحرك إلى المضيف المحلي افتراضيًا) بالإضافة إلى --authrpc.vhosts
حيث يكون
هو مضيفك المصدر أو any
.
من أجل إنشاء اتصال آمن بين طبقة الإجماع وطبقة التنفيذ، يتم إنشاء مفتاح JWT السري تلقائيًا.
سيكون مفتاح JWT السري موجودًا في datadir افتراضيًا تحت اسم jwt.hex
ويمكن تحديد مساره بالعلامة --authrpc.jwtsecret
.
يجب تحديد هذه المعلومات في طبقة الإجماع أيضًا لتأسيس الاتصال بنجاح. يمكن العثور على مزيد من المعلومات هنا.
بمجرد تشغيل Erigon، يتعين عليك توجيه عميل CL الخاص بك إلى
، حيث يكون
إما localhost
أو عنوان IP الخاص بالجهاز الذي يقوم بتشغيل Erigon، والإشارة أيضًا إلى مسار JWT السري الذي أنشأه Erigon.
Caplin هو عميل توافقي متكامل للتحقق من صحته، مثل Prysm وLighthouse وTeku وNimbus وLodestar. هدفها هو:
السبب الرئيسي وراء تطوير طبقة إجماع جديدة هو تجربة الفوائد المحتملة التي يمكن أن تأتي معها. على سبيل المثال، لا تعمل Engine API بشكل جيد مع Erigon. ترسل واجهة برمجة تطبيقات المحرك البيانات كتلة واحدة في كل مرة، وهو ما لا يناسب طريقة عمل Erigon. تم تصميم Erigon للتعامل مع العديد من الكتل في وقت واحد ويحتاج إلى فرز البيانات ومعالجتها بكفاءة. لذلك، سيكون من الأفضل لشركة Erigon أن تتعامل مع الكتل بشكل مستقل بدلاً من الاعتماد على Engine API.
يتم تمكين Caplin بشكل افتراضي. لتعطيله وتمكين Engine API، استخدم علامة --externalcl
. ومن تلك النقطة فصاعدًا، لن تكون هناك حاجة إلى طبقة إجماع خارجية بعد الآن.
يحتوي Caplin أيضًا على وضع أرشيفي للحالات والكتل التاريخية. يمكن تمكينه من خلال علامة --caplin.archive
. لتمكين واجهة برمجة التطبيقات Beacon API الخاصة بالكابلين، يجب إضافة العلامة --beacon.api=
. على سبيل المثال: --beacon.api=beacon,builder,config,debug,node,validator,lighthouse
سيمكن جميع نقاط النهاية. **ملاحظة: Caplin ليست جاهزة للتخزين لذا لا يزال يتعين تنفيذ نقاط نهاية التجميع. بالإضافة إلى ذلك، سيؤدي تمكين Beacon API إلى زيادة استخدام ذاكرة الوصول العشوائي (RAM) بمقدار 6 جيجابايت.
حدد 6 علامات لتجنب التعارضات: --datadir --port --http.port --authrpc.port --torrent.port --private.api.addr
. مثال على سلاسل متعددة على نفس الجهاز:
# mainnet
./build/bin/erigon --datadir="" --chain=mainnet --port=30303 --http.port=8545 --authrpc.port=8551 --torrent.port=42069 --private.api.addr=127.0.0.1:9090 --http --ws --http.api=eth,debug,net,trace,web3,erigon
# sepolia
./build/bin/erigon --datadir="" --chain=sepolia --port=30304 --http.port=8546 --authrpc.port=8552 --torrent.port=42068 --private.api.addr=127.0.0.1:9091 --http --ws --http.api=eth,debug,net,trace,web3,erigon
اقتبس المسار الخاص بك إذا كان يحتوي على مسافات.
? Detailed explanation is DEV_CHAIN.
على النطاق الترددي الجيد للشبكة، تتم مزامنة EthereumMainnet FullNode خلال 3 ساعات: يمكن لـ OtterSync المزامنة
تخزين مسطح KV. يستخدم Erigon قاعدة بيانات ذات قيمة أساسية ويقوم بتخزين الحسابات والتخزين بطريقة بسيطة.
? See our detailed DB walkthrough here.
المعالجة المسبقة . بالنسبة لبعض العمليات، يستخدم Erigon ملفات مؤقتة لمعالجة البيانات مسبقًا قبل إدراجها في قاعدة البيانات الرئيسية. يؤدي ذلك إلى تقليل تضخيم الكتابة وإدخالات قاعدة البيانات بشكل أسرع.
? See our detailed ETL explanation here.
دولة عادية
حسابات فردية/حالة حاول . يستخدم Erigon تجربة Merkle واحدة لكل من الحسابات والتخزين.
? Staged Sync Readme
معظم مكونات Erigon (txpool، rpcdaemon، snapshots downloader، Sentry، ...) يمكن أن تعمل داخل Erigon وكعملية مستقلة على نفس الخادم (أو خادم آخر). مثال:
make erigon rpcdaemon
./build/bin/erigon --datadir=/my --http=false
# To run RPCDaemon as separated process: use same `--datadir` as Erigon
./build/bin/rpcdaemon --datadir=/my --http.api=eth,erigon,web3,net,debug,trace,txpool --ws
--rpc.batch.concurrency
، --rpc.batch.limit
، --db.read.concurrency
--http.compression
, --ws.compression
? See RPC-Daemon docs
docker compose up prometheus grafana
، مستندات مفصلة.
# please use git branch name (or commit hash). don't use git tags
go mod edit -replace github.com/erigontech/erigon-lib=github.com/erigontech/erigon/erigon-lib@5498f854e44df5c8f0804ff4f0747c0dec3caad5
go get github.com/erigontech/erigon@main
go mod tidy
erigon
عنصر | ميناء | بروتوكول | غاية | ينبغي فضح |
---|---|---|---|---|
محرك | 9090 | برنامج التعاون الفني | خادم جي آر بي سي | خاص |
محرك | 42069 | بروتوكول التعاون الفني وUDP | المزامنة المفاجئة (بتورنت) | عام |
محرك | 8551 | برنامج التعاون الفني | واجهة برمجة تطبيقات المحرك (مصادقة JWT) | خاص |
خفير | 30303 | بروتوكول التعاون الفني وUDP | eth/68 التناظر | عام |
خفير | 30304 | بروتوكول التعاون الفني وUDP | eth/67 التناظر | عام |
خفير | 9091 | برنامج التعاون الفني | اتصالات gRPC الواردة | خاص |
com.rpcdaemon | 8545 | برنامج التعاون الفني | HTTP وWebSockets وGraphQL | خاص |
عادةً ما يكون 30303 و30304 معرضين للإنترنت للسماح باتصالات النظير الواردة. يتم عرض 9090 داخليًا فقط لـ rpcdaemon أو الاتصالات الأخرى، (على سبيل المثال rpcdaemon -> erigon). يتم عرض المنفذ 8551 (مصادقة JWT) داخليًا فقط لاستعلامات Engine API JSON-RPC من عقدة طبقة التوافق.
caplin
عنصر | ميناء | بروتوكول | غاية | ينبغي فضح |
---|---|---|---|---|
الحارس | 4000 | UDP | التناظر | عام |
الحارس | 4001 | برنامج التعاون الفني | التناظر | عام |
لتكوين المنافذ، استخدم:
--caplin.discovery.addr value Address for Caplin DISCV5 protocol (default: "127.0.0.1")
--caplin.discovery.port value Port for Caplin DISCV5 protocol (default: 4000)
--caplin.discovery.tcpport value TCP Port for Caplin DISCV5 protocol (default: 4001)
beaconAPI
عنصر | ميناء | بروتوكول | غاية | ينبغي فضح |
---|---|---|---|---|
استراحة | 5555 | برنامج التعاون الفني | استراحة | عام |
shared
عنصر | ميناء | بروتوكول | غاية | ينبغي فضح |
---|---|---|---|---|
الجميع | 6060 | برنامج التعاون الفني | pprof | خاص |
الجميع | 6061 | برنامج التعاون الفني | المقاييس | خاص |
يمكن تمكين العلامات الاختيارية التي تمكن pprof أو المقاييس (أو كليهما). استخدم --help
مع الثنائي لمزيد من المعلومات.
other
محجوزة للاستخدام المستقبلي: منافذ gRPC : محرك الإجماع 9092
، أداة تنزيل اللقطات 9093
، 9094
TxPool
0.0.0.0/8 "This" Network RFC 1122, Section 3.2.1.3
10.0.0.0/8 Private-Use Networks RFC 1918
100.64.0.0/10 Carrier-Grade NAT (CGN) RFC 6598, Section 7
127.16.0.0/12 Private-Use Networks RFC 1918
169.254.0.0/16 Link Local RFC 3927
172.16.0.0/12 Private-Use Networks RFC 1918
192.0.0.0/24 IETF Protocol Assignments RFC 5736
192.0.2.0/24 TEST-NET-1 RFC 5737
192.88.99.0/24 6to4 Relay Anycast RFC 3068
192.168.0.0/16 Private-Use Networks RFC 1918
198.18.0.0/15 Network Interconnect
Device Benchmark Testing RFC 2544
198.51.100.0/24 TEST-NET-2 RFC 5737
203.0.113.0/24 TEST-NET-3 RFC 5737
224.0.0.0/4 Multicast RFC 3171
240.0.0.0/4 Reserved for Future Use RFC 1112, Section 4
255.255.255.255/32 Limited Broadcast RFC 919, Section 7
RFC 922, Section 7
نفس الشيء في بناء جملة IpTables
systemd
قد يؤدي تشغيل erigon من build/bin
كمستخدم منفصل إلى حدوث خطأ:
error while loading shared libraries: libsilkworm_capi.so: cannot open shared object file: No such file or directory
يجب تثبيت المكتبة لمستخدم آخر باستخدام make DIST=
. يمكنك استخدام $HOME/erigon
أو /opt/erigon
كمسار التثبيت، على سبيل المثال:
make DIST=/opt/erigon install
kill -SIGUSR1
، الحصول على التتبع والإيقاف: kill -6
--pprof
وقم بتشغيلهاgo tool pprof -png http://127.0.0.1:6060/debug/pprof/profile?seconds=20 > cpu.png
--pprof
وقم بتشغيلهاgo tool pprof -inuse_space -png http://127.0.0.1:6060/debug/pprof/heap > mem.png
? Detailed explanation is here.
يستخدم Docker erigon المستخدم مع UID/GID 1000 (لأسباب أمنية). يمكنك رؤية هذا المستخدم يتم إنشاؤه في Dockerfile. يمكن الإصلاح من خلال منح ملكية مستخدم المضيف للمجلد، حيث يكون UID/GID لمستخدم المضيف هو نفس UID/GID لمستخدم عامل الإرساء (1000). مزيد من التفاصيل في آخر
--txpool.nolocals=true
admin
في قائمة --http.api
--http.corsdomain="*"
ممارسة سيئة: قم بتعيين اسم المضيف أو عنوان IP الدقيق--rpc.batch.concurrency
و --rpc.batch.limit
https://github.com/mathMakesArt/Erigon-on-RPi-4
يسمح Docker ببناء وتشغيل Erigon عبر الحاويات. وهذا يخفف من الحاجة إلى تثبيت تبعيات البناء على نظام التشغيل المضيف.
يجب مزامنة UID/GID للمستخدم بين نظام التشغيل المضيف والحاوية حتى تتم كتابة الملفات بالإذن الصحيح.
قد ترغب في إعداد مستخدم/مجموعة مخصصة على نظام التشغيل المضيف، وفي هذه الحالة تتوفر أهداف make
التالية.
# create "erigon" user
make user_linux
# or
make user_macos
يوجد ملف .env.example
في جذر الريبو.
DOCKER_UID
- المعرف الفريد (UID) لمستخدم عامل الإرساءDOCKER_GID
- معرف GID لمستخدم عامل الإرساءXDG_DATA_HOME
- دليل البيانات الذي سيتم تثبيته على حاويات الإرساءإذا لم يتم تحديده، فسيستخدم UID/GID المستخدم الحالي.
الاختيار الجيد لـ XDG_DATA_HOME
هو استخدام الدليل ~erigon/.ethereum
الذي تم إنشاؤه بواسطة الأهداف المساعدة make user_linux
أو make user_macos
.
التحقق من الأذونات: في جميع الحالات، يجب أن يكون XDG_DATA_HOME
(المحدد أو الافتراضي) قابلاً للكتابة بواسطة المستخدم UID/GID في عامل الإرساء، والذي سيتم تحديده بواسطة DOCKER_UID
و DOCKER_GID
في وقت الإنشاء. إذا فشل إنشاء أو بدء تشغيل الخدمة بسبب الأذونات، فتأكد من صحة جميع الدلائل وUID وGID التي تتحكم فيها متغيرات البيئة هذه.
يبدأ الأمر التالي: Erigon على المنفذ 30303، وrpcdaemon على المنفذ 8545، وprometheus على المنفذ 9090، وgrafana على المنفذ 3000.
#
# Will mount ~/.local/share/erigon to /home/erigon/.local/share/erigon inside container
#
make docker-compose
#
# or
#
# if you want to use a custom data directory
# or, if you want to use different uid/gid for a dedicated user
#
# To solve this, pass in the uid/gid parameters into the container.
#
# DOCKER_UID: the user id
# DOCKER_GID: the group id
# XDG_DATA_HOME: the data directory (default: ~/.local/share)
#
# Note: /preferred/data/folder must be read/writeable on host OS by user with UID/GID given
# if you followed above instructions
#
# Note: uid/gid syntax below will automatically use uid/gid of running user so this syntax
# is intended to be run via the dedicated user setup earlier
#
DOCKER_UID= $( id -u ) DOCKER_GID= $( id -g ) XDG_DATA_HOME=/preferred/data/folder DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 make docker-compose
#
# if you want to run the docker, but you are not logged in as the $ERIGON_USER
# then you'll need to adjust the syntax above to grab the correct uid/gid
#
# To run the command via another user, use
#
ERIGON_USER=erigon
sudo -u ${ERIGON_USER} DOCKER_UID= $( id -u ${ERIGON_USER} ) DOCKER_GID= $( id -g ${ERIGON_USER} ) XDG_DATA_HOME= ~ ${ERIGON_USER} /.ethereum DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 make docker-compose
يقوم Makefile بإنشاء الدلائل الأولية لـ erigon وprometheus وgrafana. تتم مشاركة مساحة اسم PID بين erigon وrpcdaemon وهو أمر مطلوب لفتح قاعدة بيانات Erigon من عملية أخرى (الوضع المحلي RPCDaemon). انظر: https://github.com/erigontech/erigon/pull/2392/files
إذا كان تثبيت عامل الإرساء الخاص بك يتطلب تشغيل برنامج عامل الإرساء كجذر (وهذا افتراضيًا)، فستحتاج إلى بادئة الأمر أعلاه بـ sudo
. ومع ذلك، يوصى أحيانًا بتشغيل عامل الإرساء (وبالتالي حاوياته) كمستخدم غير جذر لأسباب أمنية. لمزيد من المعلومات حول كيفية القيام بذلك، راجع هذه المقالة.
بريد
--sync.loop.block.limit=10_000
SNAPSHOT_MADV_RND=false
vmtouch -vdlw /mnt/erigon/snapshots/domain/*bt
ls /mnt/erigon/snapshots/domain/*.kv | parallel vmtouch -vdlw
# if it failing with "can't allocate memory", try:
sync && sudo sysctl vm.drop_caches=3
echo 1 > /proc/sys/vm/compact_memory
يمكن لمستخدمي Windows تشغيل erigon بثلاث طرق ممكنة:
أنشئ ثنائيات قابلة للتنفيذ محليًا لنظام التشغيل Windows باستخدام البرنامج النصي wmake.ps1
PowerShell المتوفر. بناء جملة الاستخدام هو نفس أمر make
لذا عليك تشغيل .wmake.ps1 [-target]
. مثال: .wmake.ps1 erigon
ينشئ erigon قابلاً للتنفيذ. يتم وضع كافة الثنائيات في المجلد الفرعي .buildbin
. هناك بعض المتطلبات لبناء أصلي ناجح على نظام التشغيل Windows:
chocolatey
- راجع النقطة التالية).wmake.ps1 db-tools
) فيجب تثبيت مدير حزم Chocolatey لنظام التشغيل Windows. بواسطة Chocolatey تحتاج إلى تثبيت المكونات التالية: cmake
، make
، mingw
بواسطة choco install cmake make mingw
. تأكد من أن متغير "المسار" لنظام Windows يحتوي على: C:ProgramDatachocolateylibmingwtoolsinstallmingw64bin ملاحظة هامة حول برامج مكافحة الفيروسات أثناء مرحلة الكشف عن المترجم في MinGW، يتم إنشاء بعض الملفات التنفيذية المؤقتة لاختبار قدرات المترجم. تم الإبلاغ عن أن بعض برامج مكافحة الفيروسات تكتشف أن هذه الملفات ربما تكون مصابة بفيروس حصان طروادة Win64/Kryptic.CIS
(أو أحد أشكاله). على الرغم من أن هذه نتائج إيجابية كاذبة، إلا أننا لا نملك السيطرة على أكثر من 100 مورد لمنتجات الأمان لنظام التشغيل Windows وخوارزميات الكشف الخاصة بهم، ونحن ندرك أن هذا قد يجعل تجربتك مع إصدارات Windows غير مريحة. لحل هذه المشكلة، يمكنك إما تعيين استثناءات لبرنامج مكافحة الفيروسات الخاص بك خصيصًا للمجلد الفرعي buildbinmdbxCMakeFiles
الخاص بمستودع الريبو المستنسخ أو يمكنك تشغيل erigon باستخدام الخيارين الآخرين التاليين
استخدم Docker: راجع docker-compose.yml
استخدم WSL (نظام Windows الفرعي لنظام التشغيل Linux) بشكل صارم على الإصدار 2 . ضمن هذا الخيار، يمكنك إنشاء Erigon تمامًا كما تفعل في توزيعة Linux العادية. يمكنك توجيه بياناتك أيضًا إلى أي من أقسام Windows المثبتة (على سبيل المثال /mnt/c/[...]
، /mnt/d/[...]
إلخ) ولكن في مثل هذه الحالة، يُنصح بأن يتأثر الأداء: هذا يرجع ذلك إلى حقيقة أن نقاط التثبيت هذه تستخدم DrvFS
وهو نظام ملفات شبكي، بالإضافة إلى ذلك، يقوم MDBX بتأمين قاعدة البيانات للوصول الحصري مما يعني أن عملية واحدة فقط في كل مرة يمكنها الوصول إلى البيانات. وهذا له عواقب على تشغيل rpcdaemon
الذي يجب تهيئته كقاعدة بيانات عن بعد حتى لو تم تنفيذه على نفس الكمبيوتر. إذا تمت استضافة بياناتك بدلاً من ذلك على نظام ملفات Linux الأصلي، فسيتم تطبيق عدم القيود. يرجى أيضًا ملاحظة أن بيئة WSL2 الافتراضية لها عنوان IP الخاص بها والذي لا يتطابق مع عنوان واجهة الشبكة الخاصة بمضيف Windows: ضع ذلك في الاعتبار عند تكوين NAT للمنفذ 30303 على جهاز التوجيه الخاص بك.
تجري المناقشات الرئيسية على خادم Discord الخاص بنا. للحصول على دعوة، أرسل بريدًا إلكترونيًا إلى bloxster [at] proton.me
يتضمن اسمك ومهنتك وشرحًا موجزًا عن سبب رغبتك في الانضمام إلى Discord وكيف سمعت عن Erigon.
erigon.substack.com
x.com/ErigonEth
أرسل بريدًا إلكترونيًا إلى security [at] torquem.ch
.
htop
استخدامًا غير صحيح للذاكرة قاعدة بيانات Erigon الداخلية (MDBX) باستخدام MemoryMap
- عندما يقوم نظام التشغيل بإدارة جميع عمليات read, write, cache
بدلاً من التطبيق (linux وwindows)
يعرض htop
في العمود res
ذاكرة "التطبيق + نظام التشغيل المستخدم للاحتفاظ بذاكرة التخزين المؤقت للصفحة لتطبيق معين"، ولكنها ليست مفيدة، لأنه إذا قال htop
أن التطبيق يستخدم 90٪ من الذاكرة، فلا يزال بإمكانك تشغيل 3 مثيلات أخرى من التطبيق على نفس الجهاز - لأن معظم تلك الـ 90%
هي "ذاكرة التخزين المؤقت لصفحات نظام التشغيل". يقوم نظام التشغيل تلقائيًا بتحرير ذاكرة التخزين المؤقت هذه في أي وقت يحتاج فيه إلى ذاكرة. قد لا يؤثر "حجم ذاكرة التخزين المؤقت للصفحة" الأصغر على أداء Erigon على الإطلاق.
تعرض الأدوات التالية الاستخدام الصحيح للذاكرة لـ Erigon:
vmmap -summary PID | grep -i "Physical footprint"
. بدون grep
يمكنك رؤية التفاصيلsection MALLOC ZONE column Resident Size
استخدام ذاكرة التطبيق، ويوضح section REGION TYPE column Resident Size
حجم ذاكرة التخزين المؤقت لصفحات نظام التشغيل.Prometheus
ذاكرة تطبيق Go بدون ذاكرة التخزين المؤقت لصفحات نظام التشغيل ( make prometheus
، افتح في المتصفح localhost:3000
، بيانات الاعتماد admin/admin
)cat /proc//smaps
يستخدم Erigon ما يقرب من 4 جيجا بايت من ذاكرة الوصول العشوائي (RAM) أثناء مزامنة التكوين وحوالي 1 جيجا بايت أثناء العمل العادي. يمكن أن تستخدم ذاكرة التخزين المؤقت لصفحات نظام التشغيل مقدارًا غير محدود من الذاكرة.
تحذير: ستلمس مثيلات Erigon المتعددة على نفس الجهاز القرص بشكل متزامن، مما يؤثر على الأداء - أحد تحسينات Erigon الرئيسية: "تقليل الوصول العشوائي إلى القرص". لا تزال "مرحلة تنفيذ الكتل" تقوم بالعديد من القراءات العشوائية - وهذا هو السبب في كونها المرحلة الأبطأ. لا نوصي بتشغيل مزامنة نشأة متعددة على نفس القرص. إذا مرت مزامنة التكوين، فمن الجيد تشغيل مثيلات Erigon متعددة على نفس القرص.
(مثل gp3) قد تقرأ: #1516 (تعليق) باختصار: أقراص الشبكة سيئة لتنفيذ الكتل - لأن تنفيذ الكتل يقرأ البيانات من قاعدة بيانات غير متوازية وغير مجمعة. الحيل: إذا قمت برمي كمية كافية من ذاكرة الوصول العشوائي (RAM) وقمت بتعيين متغير env ERIGON_SNAPSHOT_MADV_RND=false
- فستعمل Erigon بشكل جيد بما يكفي على محركات الأقراص السحابية - بتكلفة إدخال/إخراج أعلى.
على سبيل المثال: خيار إلغاء التجزئة التلقائي الخاص بـ btrfs - قد يزيد من مرات إدخال/إخراج الكتابة 100x
Gnome Tracker - كشف عمال المناجم وقتلهم.
بالنسبة لأي شخص آخر كان يحصل على خطأ BuildKit عند محاولة بدء تشغيل Erigon بالطريقة القديمة، يمكنك استخدام ما يلي...
XDG_DATA_HOME=/preferred/data/folder DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 make docker-compose