Hosting des Ethereum-Knotens auf VPS

Ich entwickle eine Website (Php/Mysql) für den Handel, die über einen Smart Contract mit der Blockchain kommuniziert. Meine Website wird eine servicebasierte Website sein. Es wird keine stark frequentierte Website sein und hat eingeschränkten Zugriff. Also muss ich die Website irgendwo hosten und auch die Ethereum-Blockchain herunterladen. Ich glaube, das Hosten einer Website und das Erstellen eines Ethereum-Knotens auf demselben Server ist eine gute Idee, damit sich der Code lokal mit der Blockchain verbinden kann. Ich werde go-ethereum client und node.js verwenden.

Ich dachte an die Verwendung eines VPS. Meine Frage ist, was die minimalen Hardwareanforderungen sein sollten (CPU, RAM, Speicher usw.). Irgendwas, worum ich mich kümmern muss? Ist eine AWS EC2-Instanz eine bessere Option?

Antworten (2)

Mindestanforderungen an die Hardware (für die anfängliche Synchronisierung): 4 CPU, 8 GB RAM, 100 GB Festplatte Mindestanforderungen an die Hardware (für normalen Betrieb): 2 CPU, 4 GB RAM, 200 GB Festplatte

Das Hosten einer Website und das Erstellen eines Ethereum-Knotens auf demselben Server ist KEINE gute Idee. Einer wird durch den anderen beeinflusst. Wenn Ihr Webserver überlastet wird, treten Probleme beim Synchronisieren des Knotens auf. Wenn das Ethereum-Netzwerk überlastet ist, treten Probleme mit Ihrem Webserver auf. Verwenden Sie web3 mit node.js (RPC). Wenn Sie Rohtransaktionen senden, möchten Sie möglicherweise einen öffentlichen/privaten Knoten verwenden - https://www.infura.io/ (öffentlich, kostenlos) oder https://www.fosha.org/ (privat, Abonnement) .

Wenn der Datenverkehr nicht so wichtig ist, sollten Sie sich vielleicht mein aktuelles Setup ansehen.

Mein aktuelles Setup ist wie folgt,

- centos
- AWS Instance Type: t2.large: 2 vCPUs, 8GB RAM
- Disk: 80GB (50 GB currently used, expected to grow over time).

Ich verwende Parity mit dem Flag --warp synced, das wird standardmäßig nur die letzten 64 Zustände behalten. Es wird jedoch erwartet, dass es im Laufe der Zeit wächst, wenn auch nicht viel.

Wir haben auch geth mit dem --fast sync-Modus ausprobiert, aber wir haben uns für Parity als unser Hauptnetz entschieden, da es den Ruf hatte, das robusteste und leistungsfähigste zu sein. Siehe hier für die aktuelle Größe von geth --fast sync

Geschenke:

  • Richten Sie einen Nicht-Root-Benutzer mit sudo-Rechten ein
  • Entfernen Sie die Root-Anmeldung über ssh
  • Ich empfehle dringend, den Zugriff auf die JSON-RPC-Schnittstelle einzuschränken. Es gibt so viele Bots da draußen, dass sie leicht in öffentlich gepostete Knoten gelangen und all Ihre hart verdienten Ether von einem freigeschalteten Konto stehlen können.

Richten Sie Parity als Dienst unter systemd ein

Richten Sie den folgenden systemd-Dienst ein:

$ vi /etc/systemd/system/parity.service
[Unit]
Description=Parity

[Service]
Type=simple
User= <your_user_name>
Restart=always
ExecStart=/usr/bin/parity --warp --port 30303 --jsonrpc-port 8545 


[Install]
WantedBy=default.target

Abstimmung der Paritätssynchronisation:

  • Parity bietet kontinuierliche State-Trie-Pruning; – Durch schnelles Pruning werden nur die letzten 64 Status im Client beibehalten. Sein erwartetes Wachstum mit weniger Wachstum. Seine Standardeinstellung mit der neuesten Version?
  • Um die Blockverarbeitung zu beschleunigen, können Sie die Cache-Größe basierend auf Ihrer Speichergröße erhöhen. Wenn Sie 8 GB haben, können Sie 1/2 GB belassen – Cache-Größe 1024. Sie können basierend auf Ihrer Speichernutzung sogar noch weiter erhöhen.
  • Verwenden Sie die Datenbankkomprimierung, wenn Sie die Optimierung mithilfe der folgenden Flags basierend auf Ihrem Festplattentyp durchführen möchten --db-compaction hdd or --db-compaction ssd respectively.

parity --pruning fast --db-compaction ssd --cache-size 1024

Diese Kettendaten müssen entfernt und regelmäßig neu --fast(wenn Sie einen Geth-Client verwenden) oder --warp(wenn Sie einen Parity-Client verwenden) synchronisiert werden, um die Anforderungen an den Speicherplatz gering zu halten.