Разверните контракт из браузера Solidity или geth на внешнем узле (подключенном к частному блокчейну ethereum)

Я пытаюсь развернуть Контракт из браузера Solidity || гет. На моем сервере внутри браузера Solidity || geth я могу развернуть контракт. Но с моего внешнего узла, который подключен к моему частному блокчейну Ethereum; внутри браузера Solidity || geth я не смогу развернуть контракт. Он останавливается и говорит: "Развертывание и подключение необходимых библиотек..."

[В] Как развернуть контракт из браузера Solidity || geth внутри внешнего узла, который подключен к частному блокчейну Эфириума?

На моей клиентской машине, как я подключен к частному блокчейну Ethereum.

sudo ./geth --port 3000 --networkid 23422 --identity node1 --verbosity 3 
--nodiscover --nat none --datadir="/home/avatar/MyEthereumEbloc" 
--rpccorsdomain '*' --rpc --rpcaddr "localhost" 
--rpccorsdomain="*" --rpcport="8545"  --nodiscover --maxpeers=4 
  --bootnodes enode://<enode_id>@<ip>:3000 console

-

> admin.addPeer("enode://<enode_id>@<ip>:3000?discport=0")
true
> net
{
  listening: true,
  peerCount: 1,
  version: "23422",
  getListening: function(callback),
  getPeerCount: function(callback),
  getVersion: function(callback)
}

Когда я нажимаю кнопку «Создать» в браузере Solidity; на моей текущей консоли geth на клиенте => я вижу, что транзакция создана. Но его никогда не добывают. В основном транзакция контракта застревает внутри ожидающих транзакций. Похоже, что одноранговый узел подключен к частному блокчейну, но транзакция так и не проходит.

I1015 19:19:44.002223 eth/api.go:1183] 
Tx(0x2995698a4662ad2cc688471c19b4ce1d8fe0d1536f3548f249dadf7c16431205) 
created: 0x91a81d46ee8844ab9e5dcf38a0aa37dd262fe4dd

введите описание изображения здесь

что такое код контракта? вы используете библиотеку, не так ли?
Я обновил свой вопрос, он не связан с Lib. Тот же контракт был добыт на моем сервере без каких-либо проблем. Ни контракт, ни библиотека не добываются. Просто представьте, что простой контракт обновляет значение хранилища.
Просто к вашему сведению этот вопрос, и ваш ответ может быть полезен другим; Я бы проголосовал за это. Самостоятельные ответы в порядке. Но я уважаю все, что вы решите сделать.
Как соединить два узла? Используете ли вы статический IP-адрес для каждого узла, или каждый раз, когда вы хотите соединить их вместе, вы находите их IP-адрес вручную и указываете его в admin.addPeer() и другой командной строке?

Ответы (1)

Решение 1. Как видите, когда я подключался к своему частному блокчейну Ethereum, я не использовал флаг «—mine». Мой блокчейн был синхронизирован, но клиентский узел не занимался майнингом. Итак, проблема была в том, что я не начал майнинг на своем клиентском узле. Когда я начинаю добычу на своем клиентском узле (miner.start(1) или с флагом «--mine»), я могу развернуть контракт из браузера Solidity, а также из geth.

" Начать добычу

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

Квитанция о транзакции

Ожидание завершения транзакции. Как только мы начали майнинг (или мы знаем, что в сети есть майнеры), мы можем попытаться получить квитанцию ​​о транзакции, она нам понадобится, поскольку она содержит адрес нашего контракта.

Транзакция может быть еще не добыта, поэтому при попытке получить квитанцию ​​она может вернуть нулевое значение, в этом случае мы будем продолжать попытки, пока не получим ненулевой результат.

Остановить майнинг (После того, как мы закончим, мы можем просто остановить майнинг.)» [1]

[1] https://nethereum.readthedocs.io/en/latest/contracts/deploying/

Решение 2. Как вы видите, мой узел подключается к сети с --nodiscoverфлагом, когда я его удалил, проблема была решена.