एक OpenFiat नोड चलाना
नोड संचालक उस विकेंद्रीकृत बाज़ार को बनाए रखते हैं जो ब्लॉकचेन के ऊपर टिका है। Solana वैलिडेटर चेन को सुरक्षित करते हैं और OpenFiat प्रोग्राम निष्पादित करते हैं; नोड लिस्टिंग, प्रतिष्ठा, संदेश और खोज वहन करते हैं।
नीचे दिए गए कमांड संदर्भ परिनियोजन का उपयोग करते हैं: openfiat-node सेवा, कॉन्फ़िगरेशन के लिए /etc/openfiat और डेटा के लिए /var/lib/openfiat।
हार्डवेयर
न्यूनतम
4 CPU कोर · 16 GB RAM · 250 GB NVMe SSD · स्थिर ब्रॉडबैंड कनेक्शन
प्रोडक्शन के लिए अनुशंसित
8–16 CPU कोर · 32 GB RAM या अधिक · 1 TB NVMe SSD · उच्च बैंडविड्थ, कम विलंबता नेटवर्क · UPS द्वारा विद्युत संरक्षण · अनावश्यक (रिडंडेंट) इंटरनेट कनेक्टिविटी
नोड एक एकल Rust बाइनरी है। libp2p (QUIC, Noise, Yamux) और RocksDB इसके भीतर संकलित हैं — अलग से स्थापित करने को कुछ नहीं है।
इसे कहाँ चलाएँ
AllenHark प्रोटोकॉल का प्रारंभिक विकास संचालित करती है और वे दो चीज़ें बेचती है जिनकी एक नोड को ज़रूरत होती है: एक सर्वर और Solana तक RPC पहुँच। नोड संचालक OpenFiat कार्यक्रम के हिस्से के रूप में दोनों पर 50% छूट पाते हैं।
सर्वर होस्टिंग
फ़्रैंकफ़र्ट, एम्स्टर्डम और शिकागो में 10 Gbps लिंक पर NVMe भंडारण। ऊपर दिए हार्डवेयर के अनुसार आकार दें — भंडारण वही है जिसकी एक पूर्ण नोड को धीरे-धीरे ज़रूरत पड़ती है, इसलिए बताएँ कि आप क्या चला रहे हैं और इसे आपके लिए निर्दिष्ट किया जा सकता है।
मूल्य देखेंSolana RPC और gRPC
स्टेक वाले कनेक्शन, ताकि आपके नोड द्वारा भेजी गई ट्रांज़ैक्शन बाकी सबकी क़तार में पीछे न लगें। पहुँच API कुंजी के बजाय अनुमत IP सूची से दी जाती है। अकाउंट और स्लॉट अपडेट स्ट्रीम करने के लिए Yellowstone gRPC उपलब्ध है।
मूल्य देखेंछूट का दावा करना
कोई कोड दर्ज नहीं करना है। Discord पर या allenhark.com के चैट में पूछें, बताएँ कि आप एक OpenFiat नोड चला रहे हैं, और छूट आपके ऑर्डर पर लागू हो जाती है।
नेटवर्क की सेवा करें, केवल स्वयं की नहीं
एक नोड जो केवल पढ़ता है, वह अतिथि है। एक नोड जिस तक जनता पहुँच सकती है, वह अवसंरचना है — वॉलेट, एक्सप्लोरर और वेब ऐप को *किसी से* बात करनी होती है, और आज ऐसे किसी बहुत कम हैं। हर संचालक जो अपने नोड को TLS के पीछे रखता है और --public-rpc-url सेट करता है, उस समूह को बढ़ाता है, और यही एक ऐसे नेटवर्क के बीच का अंतर है जिसमें कई स्वतंत्र प्रवेश द्वार हैं और एक ऐसे नेटवर्क के बीच जिसमें एक ही विफलता बिंदु है जिस पर सब चुपचाप निर्भर करते हैं। इसकी लागत एक प्रमाणपत्र और एक रिवर्स प्रॉक्सी है। इसका पुरस्कार भी मिलता है: एक पहुँच योग्य नोड वह है जिसे पीयर चुनौती दे सकते हैं और पुरस्कृत कर सकते हैं, और OpenFiat के अपने ऐप भी बाकी सबके साथ आपके नोड का उपयोग करेंगे।
पहले जान लेने योग्य दो बातें। जनता की सेवा करने का मतलब वास्तविक ट्रैफ़िक है, इसलिए मशीन को उसके अनुसार आकार दें और मेट्रिक्स एंडपॉइंट पर नज़र रखें। और एक सार्वजनिक नोड एक सार्वजनिक प्रतिबद्धता है — लोग उस URL के विरुद्ध निर्माण करेंगे जिसे आप प्रकाशित करते हैं, इसलिए इसे चुपचाप नहीं, बल्कि सोच-समझकर हटाएँ।
स्थापना
स्रोत से बनाएँ — प्रोडक्शन के लिए, आज
अभी तक कोई संस्करण टैग नहीं किया गया है, इसलिए फ़िलहाल नोड बाइनरी पाने का यही एकमात्र तरीका है। Rust टूलचेन और RocksDB के लिए एक C टूलचेन चाहिए। बनाएँ, /usr/local/bin में रखें और systemd के तहत चलाएँ — यही वह परिनियोजन है जिसे यह पेज प्रलेखित करता है, और वही जिसे उस नोड के लिए उपयोग करना चाहिए जिस पर दूसरे निर्भर हैं।
# Rust toolchain, then build the node binary
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"
apt install -y build-essential pkg-config libssl-dev clang cmake
git clone https://github.com/OpenFiat-org/openfiat-core.git
cd openfiat-core
cargo build --release --bin openfiat-node
install -m 0755 target/release/openfiat-node /usr/local/bin/पूर्व-निर्मित बाइनरी — जैसे ही कोई संस्करण टैग हो
एक v* टैग पुश करना रिलीज़ workflow चलाता है, जो नेटिव रनर पर openfiat-node बनाता है और GitHub Releases पर linux-x86_64 तथा windows-x86_64 आर्काइव प्रकाशित करता है। अभी तक कुछ टैग नहीं हुआ, इसलिए यह पेज फ़िलहाल खाली है। ध्यान दें कि ये सामान्य रिलीज़ बिल्ड हैं, न स्थिर न हस्ताक्षरित — आप जो डाउनलोड करते हैं उसे उस workflow के विरुद्ध सत्यापित करें जिसने उसे बनाया।
GitHub रिलीज़useradd --system --create-home --home-dir /var/lib/openfiat --shell /usr/sbin/nologin openfiat
install -m 755 openfiat-node /usr/local/bin/openfiat-node
mkdir -p /etc/openfiat
chown -R openfiat:openfiat /var/lib/openfiat
systemctl daemon-reload
systemctl enable --now openfiat-node
journalctl -u openfiat-node -fDocker — केवल परीक्षण के लिए
एक नोड को स्थानीय रूप से आज़माने या एक डिस्पोज़ेबल बहु-नोड क्लस्टर खड़ा करने के लिए इमेज का उपयोग करें — उस नोड को चलाने के लिए नहीं जिस पर नेटवर्क निर्भर है। यह पुनरुत्पादनीय स्थानीय परीक्षण के लिए है; प्रोडक्शन बाइनरी को systemd के तहत चलाता है।
# /opt/openfiat/compose.yaml
# TESTING ONLY. Use this to try a node locally or to bring up a throwaway
# cluster — run a production node from the binary under systemd instead
# (see the unit file further down this page).
services:
node:
image: ghcr.io/openfiat-org/openfiat-node:latest
restart: unless-stopped
# QUIC needs UDP; the same TCP port serves JSON-RPC, WebSocket, REST,
# health, and metrics together — there is no separate metrics port.
ports:
- "4001:4001/udp"
- "7080:7080/tcp"
volumes:
- /var/lib/openfiat:/data
- /etc/openfiat/wallet.json:/data/wallet.json:ro
command:
- --ledger=/data
- --identity=/data/wallet.json
- --rpc-bind-address=0.0.0.0:7080
- --gossip-bind-address=/ip4/0.0.0.0/udp/4001/quic-v1
# Static multiaddr — DNS bootstrap does not resolve (see this
# file's own top comment). Repeat the flag for several.
- --entrypoint=/ip4/84.32.223.111/udp/4001/quic-v1/p2p/12D3KooWK9hQ7TwbfvFiaAxUbRFCkdhS7iEpAJDnewNL1anyREQ1
# Omit to stay GossipOnly, the safe default. Any value opts into
# real Solana devnet connectivity (OFS-4300 §4).
- --solana-rpc-url=https://api.devnet.solana.com
stop_grace_period: 60s
ulimits:
nofile: 65536install -d -m 0750 /var/lib/openfiat
docker compose -f /opt/openfiat/compose.yaml up -d
docker compose -f /opt/openfiat/compose.yaml logs -f nodeपोर्ट
- 4001/UDPपीयरों के बीच ट्रैफ़िक। QUIC मुख्य परिवहन है, इसलिए यह UDP पोर्ट पहुँच योग्य होना चाहिए — वह जिसे लोग खोलना सबसे अधिक भूलते हैं।पहुँच योग्य होना चाहिए
- 7080/TCPJSON-RPC, WebSocket, REST, स्वास्थ्य और मेट्रिक्स — एक ही असली पोर्ट सब कुछ परोसता है, हर सतह के लिए अलग पोर्ट नहीं।पहुँच योग्य होना चाहिए
- 7080/TCPऊपर वाली API जैसा ही पोर्ट (GET /metrics)। यदि आप नहीं चाहते कि यह सार्वजनिक हो, तो फ़ायरवॉल से loopback/एक निजी नेटवर्क तक सीमित करें।निजी रखें
एक नोड को ऑनलाइन लाना
इन चरणों को क्रम में करें। नीचे का हर चरण अपनी आवश्यक कमांड लाता है।
- 01
मशीन तैयार करें
एक अद्यतन Debian या Ubuntu सर्वर, एक फ़ायरवॉल और एक सटीक घड़ी। घड़ी जितनी लगती है उससे अधिक मायने रखती है: रिकॉर्ड टाइमस्टैम्प और समय-सीमा वहन करते हैं, और एक विचलित घड़ी एक नोड को वैध डेटा अस्वीकार करने पर मजबूर करती है।
shell# Debian 12 / Ubuntu 24.04, as root apt update && apt install -y ca-certificates curl gnupg ufw chrony # Clock drift breaks signature and expiry checks — keep NTP running. systemctl enable --now chrony - 02
नोड स्थापित करें
स्रोत से बनाएँ और परिणाम को systemd के तहत चलाएँ — अभी तक कोई संस्करण टैग नहीं किया गया है, इसलिए आज बाइनरी पाने का यही एकमात्र तरीका है, और इस मैनुअल का बाकी हिस्सा यही मानता है। Docker का सहारा केवल स्थानीय परीक्षण या एक डिस्पोज़ेबल क्लस्टर खड़ा करते समय लें।
- 03
नोड वॉलेट उत्पन्न करें
कोई अलग «नोड पहचान» प्रारूप नहीं है — एक नोड की पहचान एक असली Solana CLI wallet.json है, वही फ़ाइल जिसे solana-keygen उत्पन्न करता है। इसका seed नोड की gossip/पीयर पहचान और Solana हस्ताक्षर कुंजी दोनों के लिए पुनः उपयोग होता है। फ़ाइल सुरक्षित रखें — यदि आप इसे खो देते हैं, तो नोड एक अजनबी के रूप में फिर जुड़ता है और शून्य से प्रतिष्ठा बनाना शुरू करता है।
shell# The node's identity IS a Solana CLI-format wallet.json — the same # file "solana-keygen new" produces (its own seed is reused for the # node's gossip/P2P keypair too, see crates/cli's load_or_generate_wallet). # There is no separate "node identity" format or command. solana-keygen new --outfile /etc/openfiat/wallet.json chmod 600 /etc/openfiat/wallet.json solana-keygen pubkey /etc/openfiat/wallet.json - 04
पर्यावरण सेट करें
openfiat-node की अपनी कोई कॉन्फ़िगरेशन फ़ाइल नहीं है — हर सेटिंग एक पर्यावरण चर है, स्टार्टअप पर एक बार पढ़ी जाती है: डेटा कहाँ रहता है, किस पते पर सुनना है, स्टार्ट पर किन पीयरों से जुड़ना है और (वैकल्पिक रूप से) कौन-सा Solana RPC एंडपॉइंट उपयोग करना है। बूटस्ट्रैप पीयर एक स्थिर multiaddr/IP होने चाहिए, कोई होस्टनाम नहीं — DNS बूटस्ट्रैप हल नहीं होता।
shell# There is no config file and no environment variables. Every # setting is a flag on the systemd unit's ExecStart below, so # "systemctl cat openfiat-node" shows exactly what a running node was # given, and "openfiat-node --help" is the whole surface. # # Try it in the foreground first — the node prints the addresses it is # reachable at and whether it reached Solana: openfiat-node \ --ledger /var/lib/openfiat \ --identity /etc/openfiat/wallet.json \ --rpc-bind-address 0.0.0.0:7080 \ --gossip-bind-address /ip4/0.0.0.0/udp/4001/quic-v1 \ --entrypoint /ip4/84.32.223.111/udp/4001/quic-v1/p2p/12D3KooWK9hQ7TwbfvFiaAxUbRFCkdhS7iEpAJDnewNL1anyREQ1 \ --solana-rpc-url https://api.devnet.solana.com # Omit --solana-rpc-url to stay GossipOnly, the safe default: the node # still serves the marketplace, but its on-chain answers come # second-hand from peers. Never put a real endpoint or API key anywhere # version controlled — it belongs in the unit file on the server. # # Add --ipfs-api-url http://127.0.0.1:5001 to pin protocol content and # earn the full reward share, and --retention archival to keep the whole # history instead of a rolling 30 days. - 05
सही पोर्ट खोलें
पीयर नोड तक UDP से पहुँचते हैं क्योंकि QUIC मुख्य परिवहन है — यही वह पोर्ट है जिसे लोग सबसे अधिक भूलते हैं। एक TCP पोर्ट JSON-RPC, WebSocket, REST, स्वास्थ्य और मेट्रिक्स साथ में परोसता है; यदि आप सार्वजनिक रूप से क्लाइंट नहीं परोसना चाहते तो इसे निजी रखें।
shellufw default deny incoming ufw allow 22/tcp # keep your own access ufw allow 4001/udp # libp2p, QUIC — the port people most often forget ufw allow 443/tcp # once nginx terminates TLS in front (see below) ufw allow 7080/tcp # only if the node is exposed directly, without a proxy ufw enable && ufw status verbose - 06
नेटवर्क की सेवा करें: अपने नोड को पहुँच योग्य बनाएँ
यही वह चरण है जो एक नोड को नेटवर्क देखने वाली किसी चीज़ से नेटवर्क वहन करने वाली चीज़ में बदल देता है। सामने nginx रखें और एक प्रमाणपत्र प्राप्त करें, फिर --public-rpc-url से नोड को उसका सार्वजनिक URL बताएँ और वह स्वयं की घोषणा करता है ताकि वॉलेट, एक्सप्लोरर और स्वयं OpenFiat वेब ऐप उसका उपयोग कर सकें। क्रम मायने रखता है: पहले सादे HTTP पर nginx, फिर certbot TLS जोड़ता है — एक कॉन्फ़िगरेशन जो पहले से किसी प्रमाणपत्र का नाम लेती है, वह शुरू नहीं हो सकती, इसलिए certbot उसे जारी कर पाने से पहले ही विफल हो जाता है जो समस्या हल कर देता। एक प्रमाणपत्र कोई वैकल्पिक सजावट नहीं है: HTTPS पर परोसा गया पेज एक सादा HTTP कनेक्शन नहीं खोल सकता, इसलिए इसके बिना एक नोड हर ब्राउज़र के लिए अदृश्य है, चाहे वह कितना भी स्वस्थ हो।
/etc/nginx/sites-available/openfiat-node# /etc/nginx/sites-available/openfiat-node # # HTTP only at this stage, with NO TLS directives. certbot --nginx works # by running "nginx -t" and editing this file, so a config that already # points at a certificate cannot load, nginx will not start, and certbot # fails before it can issue the certificate that would have fixed it. server { listen 80; listen [::]:80; server_name openfiat.example.com; location / { proxy_pass http://127.0.0.1:7080; proxy_http_version 1.1; # The node serves its WebSocket event stream on the same port; # without these the stream downgrades to a plain request and # subscriptions silently never deliver. proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # Do NOT add CORS headers here — the node already sets them, and # two Access-Control-Allow-Origin headers on one response make # browsers reject it while curl sees a clean 200. proxy_read_timeout 300s; } }shell# The A record must already resolve for the world — certbot proves # control of the name over port 80. Check a public resolver, not your # own machine, whose cache can be stale: dig +short @8.8.8.8 openfiat.example.com ln -s /etc/nginx/sites-available/openfiat-node /etc/nginx/sites-enabled/ nginx -t && systemctl reload nginx curl -s http://openfiat.example.com/health # ok, before any certificate apt install -y certbot python3-certbot-nginx certbot --nginx -d openfiat.example.com # certbot edits the server block in place: it adds listen 443 ssl, the # certificate paths, and a redirect from :80. The location block and its # proxy headers carry over. Renewal installs itself as a systemd timer. # Do not hand-write a 443 block afterwards — certbot manages that one. # Then tell the network this node can be reached directly: # openfiat-node --public-rpc-url https://openfiat.example.com - 07
इसे एक सेवा के रूप में चलाएँ
systemd के तहत नोड किसी क्रैश या रीबूट के बाद पुनः शुरू होता है, और उसे इतना लंबा समापन अवधि मिलती है कि डेटाबेस किसी लेखन के बीच मारे जाने के बजाय साफ़-सुथरे ढंग से खाली हो जाए।
openfiat-node.service# /etc/systemd/system/openfiat-node.service [Unit] Description=OpenFiat node Documentation=https://docs.openfiat.network After=network-online.target Wants=network-online.target [Service] Type=simple User=openfiat Group=openfiat ExecStart=/usr/local/bin/openfiat-node \ --ledger /var/lib/openfiat \ --identity /etc/openfiat/wallet.json \ --rpc-bind-address 0.0.0.0:7080 \ --gossip-bind-address /ip4/0.0.0.0/udp/4001/quic-v1 \ --entrypoint /ip4/84.32.223.111/udp/4001/quic-v1/p2p/12D3KooWK9hQ7TwbfvFiaAxUbRFCkdhS7iEpAJDnewNL1anyREQ1 \ --solana-rpc-url https://api.devnet.solana.com WorkingDirectory=/var/lib/openfiat Restart=on-failure RestartSec=5s # openfiat-node handles SIGTERM itself (graceful shutdown) rather than # needing systemd to force-kill it; this gives that shutdown path a # reasonable window before systemd escalates to SIGKILL. TimeoutStopSec=30s NoNewPrivileges=true ProtectSystem=strict ProtectHome=true ReadWritePaths=/var/lib/openfiat PrivateTmp=true # AF_NETLINK is required, not optional: binding a wildcard address makes # libp2p enumerate this host's interfaces, and that goes over a netlink # socket. Without it the QUIC listener fails and the gossip actor panics # while the HTTP thread survives — so systemd reports the unit active # and the node looks healthy while serving nothing. RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX AF_NETLINK [Install] WantedBy=multi-user.targetshelluseradd --system --create-home --home-dir /var/lib/openfiat --shell /usr/sbin/nologin openfiat install -m 755 openfiat-node /usr/local/bin/openfiat-node mkdir -p /etc/openfiat chown -R openfiat:openfiat /var/lib/openfiat systemctl daemon-reload systemctl enable --now openfiat-node journalctl -u openfiat-node -f - 08
इसे पकड़ने दें
पूरे इतिहास को दोहराने के बजाय, एक नया नोड बाज़ार की वर्तमान स्थिति का एक पीयर-घोषित स्नैपशॉट खोज और आयात कर सकता है (OFS-1300) — असली JSON-RPC विधियाँ, कोई अलग उपकरण नहीं: getLatestSnapshot, getCheckpointHeight। हस्ताक्षर, प्रोटोकॉल संस्करण और स्थिति रूट, सभी को भरोसा किए जाने से पहले मेल खाना चाहिए।
shell# Snapshot sync (OFS-1300) is real JSON-RPC, not a separate CLI — # a new node discovers and imports a peer-announced snapshot instead of # replaying all history: curl -s -X POST http://localhost:7080/rpc -H 'content-type: application/json' \ -d '{"jsonrpc":"2.0","id":1,"method":"getLatestSnapshot","params":{}}' curl -s -X POST http://localhost:7080/rpc -H 'content-type: application/json' \ -d '{"jsonrpc":"2.0","id":1,"method":"getCheckpointHeight","params":{}}' - 09
जाँचें कि यह स्वस्थ है
GET /health पुष्टि करता है कि प्रक्रिया चालू है; JSON-RPC से getChainStatus बताता है कि यह GossipOnly है या RpcConnected, और यदि यह नवीनतम है तो इसका वर्तमान blockhash।
shell# Is it up, and which mode is it in? curl -s http://localhost:7080/health # ok curl -s -X POST http://localhost:7080/rpc -H 'content-type: application/json' \ -d '{"jsonrpc":"2.0","id":1,"method":"getChainStatus","params":{}}' # {"jsonrpc":"2.0","id":1,"result":{"mode":"GossipOnly","blockhash":null,"slot":null,"age_ms":null}} # ("RpcConnected" with a real blockhash once --solana-rpc-url is set) # The addresses your node is reachable at are in its own log — give one # of these to another operator as their --entrypoint: journalctl -u openfiat-node | grep "reachable at a new address" - 10
यह पहले से ही नेटवर्क का हिस्सा है
कोई अलग «घोषणा» चरण नहीं है — जैसे ही एक नोड के पास बूटस्ट्रैप पीयर होते हैं, वह gossip करता है और स्वतः प्रसारित होता है; कोई इसे स्वीकृत नहीं करता। स्टेक करना, सेवा रजिस्ट्री में मेटाडेटा प्रकाशित करना, विवादों में शामिल होना और शासन मत डालना — ये अलग, वॉलेट-संचालित क्रियाएँ हैं जिन्हें एक क्लाइंट चालू नोड के विरुद्ध करता है — हर एक के लिए संबंधित भागीदारी गाइड देखें।
एक नोड सक्रिय भागीदार बनने के लिए OPEN स्टेक करता है। पर स्टेक प्रतिष्ठा नहीं खरीदता: खराब प्रदर्शन वाला संचालक अधिक स्टेक करके इसकी भरपाई नहीं कर सकता। प्रभावी प्राथमिकता प्रतिष्ठा, स्टेक और मापे गए नेटवर्क प्रदर्शन को जोड़ती है।
- 11
इस पर नज़र रखें
जो संकेत वास्तव में समस्या की भविष्यवाणी करते हैं वे हैं जुड़े हुए पीयर, चेन मोड (GossipOnly बनाम RpcConnected) और blockhash की आयु। इन पर अलर्ट सेट करें और आप अपने उपयोगकर्ताओं से पहले जान लेंगे।
prometheus.yml# /etc/prometheus/prometheus.yml — same port as everything else, # no separate metrics listener to configure on the node's own side. scrape_configs: - job_name: openfiat-node static_configs: - targets: ["127.0.0.1:7080"] - 12
इसे अद्यतन रखें
रोकें, बाइनरी बदलें, शुरू करें। नोड एक बार में एक अपडेट होते हैं, इसलिए नेटवर्क को कभी समन्वित ठहराव की ज़रूरत नहीं, और छूटी हुई gossip घटनाएँ स्टार्टअप पर दोहराई जाती हैं।
shellsystemctl stop openfiat-node # SIGTERM, lets RocksDB flush # docker: docker compose pull node && docker compose up -d node install -m 0755 ./openfiat-node /usr/local/bin/ systemctl start openfiat-node # Missed gossip events replay automatically on start. journalctl -u openfiat-node -f - 13
जो पुनः उत्पन्न नहीं हो सकता उसका बैकअप लें
बाज़ार स्थिति हमेशा एक स्नैपशॉट से फिर समन्वयित की जा सकती है। वॉलेट पुनः उत्पन्न नहीं किया जा सकता। शेष और कस्टडी Solana पर रहते हैं, आपकी डिस्क पर नहीं।
shell# Back up what cannot be re-derived. Marketplace state can always be # re-synced from a snapshot; the wallet cannot be regenerated. tar czf openfiat-wallet-$(date +%F).tar.gz /etc/openfiat/wallet.json # Authoritative financial state lives on Solana, not on the node's own # RocksDB volume.
जब कुछ गलत हो
कोई पीयर नहीं जुड़ता
UDP 4001 अवरुद्ध है, या --entrypoint ऐसे पते की ओर इंगित करता है जिस तक पीयर वास्तव में नहीं पहुँच सकते — यह एक स्थिर multiaddr/IP होना चाहिए, कोई होस्टनाम नहीं (DNS बूटस्ट्रैप हल नहीं होता)। आपका अपना नोड सुनना शुरू करते ही उन पतों को लॉग करता है जहाँ वह पहुँच योग्य है।
ss -lunp | grep 4001 && journalctl -u openfiat-node -n 100समन्वयन कभी पूरा नहीं होता
स्नैपशॉट आयात (OFS-1300) पूरा नहीं हुआ, या किसी पीयर ने अभी तक पर्याप्त हाल का स्नैपशॉट घोषित नहीं किया — getLatestSnapshot/getCheckpointHeight जाँचें।
journalctl -u openfiat-node -n 200 --no-pager | grep -i snapshotडिस्क उपयोग बढ़ता ही रहता है
RocksDB ने कॉम्पैक्ट नहीं किया।
du -sh /var/lib/openfiat/*हस्ताक्षर या समय-सीमाएँ अस्वीकृत
घड़ी विचलन। रिकॉर्ड टाइमस्टैम्प और समय-सीमा वहन करते हैं, इसलिए होस्ट की घड़ी सही होनी चाहिए।
chronyc trackingएक नोड को क्या उजागर करना चाहिए
नोड आज इतना ही निर्यात करता है — पीयर गणना, चेन मोड और समन्वयन प्रगति अभी Prometheus मेट्रिक्स नहीं हैं, केवल ऐसे मान जिन्हें आप JSON-RPC से पूछ सकते हैं (getChainStatus, getLatestSnapshot, getCheckpointHeight)।
अवसंरचना
CPU · मेमोरी · डिस्क · नेटवर्क थ्रूपुट
प्रोटोकॉल (GET /metrics)
rpc_requests_total · rpc_errors_total
यूज़र इंटरफ़ेस की मेज़बानी
OpenFiat प्रोटोकॉल को उसके इंटरफ़ेस से अलग करता है। कोई भी एक वेब इंटरफ़ेस, एक मोबाइल गेटवे, एक कॉर्पोरेट पोर्टल या एक क्षेत्रीय बाज़ार होस्ट कर सकता है, और उनमें से हर एक उसी बाज़ार तक पहुँचता है।
चाहे कोई भी इंटरफ़ेस उपयोग हो, हर भागीदार उसी विकेंद्रीकृत बाज़ार के साथ अंतःक्रिया करता है।
आधिकारिक वेब इंटरफ़ेस · समुदाय इंटरफ़ेस · व्यापारी इंटरफ़ेस · क्षेत्रीय बाज़ार · कॉर्पोरेट पोर्टल
एक इंटरफ़ेस किससे जुड़ता है
इंटरफ़ेस सीधे चेन से बात नहीं करते। वे एक या अधिक निकटवर्ती OpenFiat नोड से जुड़ते हैं, और यदि कोई अनुपलब्ध हो जाए तो दूसरे नोड पर स्विच कर जाते हैं।
नोड की API सतह
- बाज़ारविज्ञापन प्राप्त करें · विज्ञापन बनाएँ · विज्ञापन अद्यतन करें · विज्ञापन हटाएँ
- व्यापारविज्ञापन आरक्षित करें · व्यापार सत्र समन्वयित करें · भुगतान पुष्टियाँ भेजें
- अवसंरचनापीयर खोज · गेटवे खोज · स्नैपशॉट जानकारी · जोखिम इंटेलिजेंस
- शासनप्रस्ताव खोज · मत प्रस्तुति · ट्रेज़री जानकारी
हर अनुरूप नोड वही API सतह उजागर करता है, इसलिए एक नोड के विरुद्ध लिखा गया इंटरफ़ेस सभी के विरुद्ध काम करता है।