Можем ли мы подключить 2 или более частных блокчейнов? [дубликат]

Допустим, есть 2 организации, и у каждой есть свои частные блокчейны в разных географических регионах.

Теперь им нужно наладить совместную работу и поделиться некоторой частью данных между собой.

Можно ли соединить эти 2 частные цепочки блоков и иметь контролируемый доступ друг к другу?

привет, Бадр.. в сообщении выше говорится, что это пока невозможно с Эфириумом. Есть ли дорожная карта, поддерживающая эту функцию?
вы можете спросить команду в gitter, чтобы получить точный ответ

Ответы (1)

Ну да, это возможно, вы также можете подключить 2 из них параллельно в зависимости от вашей оперативной памяти, но вы, скорее всего, получите, out of memory errorесли попытаетесь подключить 3 или более параллельно. Но я не думаю, что можно обмениваться блокчейнами, его данными друг с другом,

Как я могу создать связанные несколько блокчейнов? :

Только с Ethereum это невозможно (пока), если только вы не реализуете собственное решение.

Но когда вы запускаете несколько gethпроцессов для каждой частной цепочки блоков в фоновом режиме, с помощью nodejsвы можете иметь соединение с каждой отдельной цепочкой блоков и их контрактами, и они могут отправлять информацию друг другу.

Я бы предложил подключать каждый приватный блокчейн отдельно, у каждого будет своя папка для хранения своего блокчейна.

Сначала на вашем узле вы должны создать свою частную сеть ethereum в 2 папках с разными именами (например: -- "datadir="/home/MyEthereumEbloc_1"и --datadir="/home/MyEthereumEbloc_2"), это также создаст разные папки geth.ipcдля каждой. ipc:/home/MyEthereumEbloc_1/geth.ipcи ipc:/home/MyEthereumEbloc_2/geth.ipc.

Позже вы должны запустить 2 разных gethпроцесса с разными --portномерами, --identityкоторые --networkidвы хотите подключить, --rpcportпустой порт, который вы могли бы использовать, и --bootnodeкоторый вы хотели бы подключить. Поскольку 2 организации имеют свой собственный блокчейн, их ip и номер порта будут уникальны для каждой.

Например: вы также можете запустить следующие команды между ними nohup &, которые будут работать gethв фоновом режиме.

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>

внутри nodejs: поскольку --rpcport 8545связан с --bootnodes enode://$id@<ip_1>:<port_1>и так --rpcport 8546как связан с, --bootnodes enode://$id@<ip_2>:<port_2>вы можете получить доступ к блокчейну, который находится в вашей организации, создав различные переменные web3 (web3_1, web3_2) внутри 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");

Обратите внимание, что если вы запускаете 2 процесса geth на одном компьютере, рекомендуется, чтобы требовалось минимум 8 ГБ ОЗУ, по 4 ГБ ОЗУ для каждого. https://эфириум.stackexchange.com/a/9906/4575

мой вопрос не о запуске 2 узлов на машине. речь идет о двух частных блокчейнах, распределенных географически, которые общаются и обмениваются данными.
Я сделал некоторые дополнения, вот и все, что я знаю. Но все же вам нужно запускать разные процессы geth в фоновом режиме, чтобы иметь доступ к разным цепочкам блоков, тогда они могут обмениваться некоторыми данными через контракт на одном и том же узле.