Nehmen wir an, es gibt 2 Organisationen und jede hat ihre eigenen privaten Blockketten in einer anderen geografischen Region.
Jetzt müssen sie zusammenarbeiten und einen Teil der Daten untereinander teilen.
Ist es möglich, diese 2 privaten Blockchains zu verbinden und kontrollierten Zugriff aufeinander zu haben?
Nun ja, das ist möglich, Sie können basierend auf Ihrem RAM auch 2 davon parallel schalten, aber Sie werden höchstwahrscheinlich eine bekommen, out of memory error
wenn Sie versuchen könnten, 3 oder mehr parallel zu schalten. Aber ich glaube nicht, dass es möglich ist, Blockchains, ihre Daten untereinander zu teilen,
Wie kann ich mehrere verbundene Blockchains erstellen? :
Mit Ethereum allein ist es (noch) nicht möglich, es sei denn, Sie implementieren eine benutzerdefinierte Lösung.
Wenn Sie jedoch mehrere geth
Prozesse für jede private Blockchain im Hintergrund ausführen, können nodejs
Sie durch die Verwendung eine Verbindung zu den verschiedenen Blockchains und ihren Verträgen herstellen, und sie können Informationen untereinander senden.
Ich würde vorschlagen, jede private Blockchain einzeln zu verbinden, jede hat ihren eigenen Ordner, um ihre Blockchain zu speichern.
Zuerst müssen Sie auf Ihrem Knoten Ihr privates Ethereum-Netzwerk in 2 unterschiedlich benannten Ordnern erstellen (zum Beispiel: -- "datadir="/home/MyEthereumEbloc_1"
und --datadir="/home/MyEthereumEbloc_2"
), dies wird auch geth.ipc
für jeden einen anderen erstellen. ipc:/home/MyEthereumEbloc_1/geth.ipc
und ipc:/home/MyEthereumEbloc_2/geth.ipc
.
Später sollten Sie 2 verschiedene geth
Prozesse mit unterschiedlicher --port
Nummer ausführen --identity
, --networkid
die Sie verbinden möchten, --rpcport
leeren Port, den Sie verwenden könnten und --bootnode
den Sie verbinden möchten. Da 2 Organisationen ihre eigene private Blockchain haben, sind ihre IP- und Portnummer für jede Organisation einzigartig.
Zum Beispiel: Sie könnten auch folgende Befehle dazwischen nohup &
ausführen geth
, die im Hintergrund ausgeführt werden.
geth --port 3000 --networkid 12345 --identity node1 --nodiscover \
--nat none --datadir="/home/MyEthereumEbloc_1" --rpc --rpcaddr="localhost"\
--rpcport 8545 --rpccorsdomain="*"--ipcapi "admin,eth,net,web3,debug"\
--bootnodes enode://$id@<ip_1>:<port_1>
-
geth --port 3001 --networkid 54321 --identity node2 --nodiscover \
--nat none --datadir="/home/MyEthereumEbloc_2" --rpc --rpcaddr="localhost"\
--rpcport 8546 --rpccorsdomain="*" --ipcapi "admin,eth,net,web3,debug" \
--bootnodes enode://$id@<ip_2>:<port_2>
inside nodejs
: Since --rpcport 8545
is linked to --bootnodes enode://$id@<ip_1>:<port_1>
und Since --rpcport 8546
is linked to --bootnodes enode://$id@<ip_2>:<port_2>
können Sie auf die Blockchain zugreifen, die sich in Ihrer Organisation befindet, indem Sie verschiedene web3-Variablen (web3_1, web3_2) innerhalb erstellen nodejs
.
var web3_1 = new Web3();
web3_1.setProvider(new web3_1.providers.HttpProvider('http://localhost:8545'));
var web3_2 = new Web3();
web3_2.setProvider(new web3_2.providers.HttpProvider('http://localhost:8546'));
if(!web3_1.isConnected()) console.log("not connected");
else console.log("connected");
if(!web3_2.isConnected()) console.log("not connected");
else console.log("connected");
Bitte beachten Sie, dass empfohlen wird, dass mindestens 8 GB RAM erforderlich sind, wenn Sie 2 Geth-Prozesse auf einem Computer ausführen, 4 GB RAM für jeden. https://ethereum.stackexchange.com/a/9906/4575
Badr Bellaj
Mahesh Gupta
Badr Bellaj