Digamos que hay 2 organizaciones y cada una tiene sus propias cadenas de bloques privadas en una región geográfica diferente.
Ahora necesitan tener una colaboración y compartir parte de los datos entre ellos.
¿Es posible conectar estas 2 cadenas de bloques privadas y tener acceso controlado entre sí?
Bueno, sí, eso es posible, también puede conectar 2 de ellos en paralelo en función de su RAM, pero lo más probable es que obtenga un out of memory error
si pudiera intentar conectar 3 o más en paralelo. Pero no creo que sea posible compartir cadenas de bloques, sus datos entre sí,
¿Cómo puedo crear varias cadenas de bloques conectadas? :
Solo con Ethereum no es posible (todavía), a menos que implemente una solución personalizada.
Pero cuando ejecuta varios geth
procesos para cada cadena de bloques privada en segundo plano, al usarla nodejs
puede tener una conexión con cada cadena de bloques diferente y sus contratos, y pueden enviarse información entre sí.
Sugeriría conectar cada cadena de bloques privada individualmente, cada una tendrá su propia carpeta para almacenar su cadena de bloques.
Primero, en su nodo, debe crear su red ethereum privada en 2 carpetas con nombres diferentes (por ejemplo: -- "datadir="/home/MyEthereumEbloc_1"
y --datadir="/home/MyEthereumEbloc_2"
), esto también creará diferentes geth.ipc
para cada uno. ipc:/home/MyEthereumEbloc_1/geth.ipc
y ipc:/home/MyEthereumEbloc_2/geth.ipc
.
Más tarde, debe ejecutar 2 geth
procesos diferentes con un --port
número diferente --identity
, --networkid
que desea conectar, --rpcport
puerto vacío que podría usar y --bootnode
que le gustaría conectar. Dado que 2 organizaciones tienen su propia cadena de bloques privada, su IP y número de puerto serán únicos para cada una.
Por ejemplo: también puede ejecutar los siguientes comandos entre nohup &
los cuales se ejecutarán geth
en segundo plano.
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
: desde que --rpcport 8545
está vinculado a --bootnodes enode://$id@<ip_1>:<port_1>
y desde que --rpcport 8546
está vinculado a --bootnodes enode://$id@<ip_2>:<port_2>
usted puede acceder a la cadena de bloques que está en su organización creando diferentes variables web3 (web3_1, web3_2) dentro 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");
Tenga en cuenta que si ejecuta 2 procesos geth en una máquina, se recomienda que se requiera un mínimo de 8 GB de RAM, 4 GB de RAM para cada uno. https://ethereum.stackexchange.com/a/9906/4575
Badr Bellaj
mahesh gupta
Badr Bellaj