Допустим, есть 2 организации, и у каждой есть свои частные блокчейны в разных географических регионах.
Теперь им нужно наладить совместную работу и поделиться некоторой частью данных между собой.
Можно ли соединить эти 2 частные цепочки блоков и иметь контролируемый доступ друг к другу?
Ну да, это возможно, вы также можете подключить 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
Бадр Беллай
Махеш Гупта
Бадр Беллай