Я пытаюсь развернуть Контракт из браузера 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
Решение 1. Как видите, когда я подключался к своему частному блокчейну Ethereum, я не использовал флаг «—mine». Мой блокчейн был синхронизирован, но клиентский узел не занимался майнингом. Итак, проблема была в том, что я не начал майнинг на своем клиентском узле. Когда я начинаю добычу на своем клиентском узле (miner.start(1) или с флагом «--mine»), я могу развернуть контракт из браузера Solidity, а также из geth.
" Начать добычу
Транзакция, которая развернула контракт, должна быть проверена сетью, если мы запускаем частную цепочку с одним узлом, нам нужно будет добывать транзакцию.
Квитанция о транзакции
Ожидание завершения транзакции. Как только мы начали майнинг (или мы знаем, что в сети есть майнеры), мы можем попытаться получить квитанцию о транзакции, она нам понадобится, поскольку она содержит адрес нашего контракта.
Транзакция может быть еще не добыта, поэтому при попытке получить квитанцию она может вернуть нулевое значение, в этом случае мы будем продолжать попытки, пока не получим ненулевой результат.
Остановить майнинг (После того, как мы закончим, мы можем просто остановить майнинг.)» [1]
[1] https://nethereum.readthedocs.io/en/latest/contracts/deploying/
Решение 2. Как вы видите, мой узел подключается к сети с --nodiscover
флагом, когда я его удалил, проблема была решена.
Бадр Беллай
альпер
эт
Ай.