Metamask Невозможно отправить транзакции в частную сеть Ethereum

Я использую расширение Metamask.io в Google Chrome. Правильно подключен Metamask.io к частной сети, размещенной на экземпляре AWS EC2, с использованием адреса сокета (IP:номер порта). Базовый контракт был развернут на блокчейне с использованием Remix IDE для программирования надежности. Я могу получить информацию (функция getInstructor). Однако не удалось установить информацию о новом инструкторе.

Шаги -

  1. В Remix IDE я вызываю функцию.
  2. Он открывает всплывающее окно Metamask, и я использую цену на газ по умолчанию.
  3. Транзакция никогда не выполняется.

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

> eth.pendingTransactions
[]

Однако, попробовав это,

web3.eth.getBlock("pending")
{
  difficulty: 25082169,
  extraData: "0xd583010701846765746885676f312e39856c696e7578",
  gasLimit: 4712388,
  gasUsed: 0,
  hash: null,
  logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
  miner: null,
  mixHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
  nonce: null,
  number: 1557557,
  parentHash: "0xf84ce5ff7845f399eb698bfc33abeb24a8e459096d7ad9c097de3eb6130a6360",
  receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
  size: 537,
  stateRoot: "0x017184c9d24daab688c39468af064cd3ab748f5adc9c5b1fd3c5bcc2f3a318a0",
  timestamp: 1523753000,
  totalDifficulty: 0,
  transactions: [],
  transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  uncles: []
}

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

Возможные ошибки -

Согласно этим обсуждениям

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

Вы занимаетесь майнингом в своем узле? т.е. вы бежали mine.start(1)или что-то подобное. Из вашего ожидающего блока у него есть номер 1557557, что довольно много для частной тестовой сети, что eth.blockNumberвозвращает? Вы уверены, что подключаетесь к правильной сети.
Я занимаюсь майнингом в своем узле. Да, я абсолютно уверен, что подключился к правильной сети (моя частная тестовая сеть с соответствующим IP-портом). Вот информация о номере блока -> eth.blockNumber 1558456

Ответы (3)

«Обычная» настройка для разработки заключается в том, чтобы не подключать Metamask к вашему узлу AWS, потому что вы не хотите предоставлять API этому узлу. Я предполагаю, что вы используете POA, верно?

Просто запустите локальный узел на своем компьютере и подключите метамаску к локальному хосту.

По умолчанию узел будет принимать соединения только с локального хоста. Вы можете изменить это, чтобы принимать соединения от любого с: --rpcaddr "0.0.0.0".

Обратите внимание, что каждый раз, когда закрытый ключ разблокирован, любой человек в Интернете может использовать этот ключ, запрашивая ваш rpc-сервер и отправляя транзакции.

Похоже, у вас возникла эта проблема: https://github.com/MetaMask/metamask-extension/issues/1722 .

Попробуйте установить chainIdи networkIdна одно и то же значение, чтобы MetaMask оставался совместимым с EIP-155.

Руководство по использованию пользовательского узла с MetaMask находится здесь: https://github.com/MetaMask/faq/blob/master/USERS.md#using-a-local-node .

Тот факт, что я мог отправлять транзакции ранее, помогает мне сказать, что, скорее всего, у меня нет проблем с тем, чтобы MetaMask оставался совместимым с EIP-155 (поскольку, если бы это было так, я бы не смог отправлять транзакции ранее). Я установил для networkId определенное значение при вращении частной сети, и это выглядит правильно. Я думаю, что проблема, с которой я столкнулся, связана с тем фактом, что в настоящее время только я нахожусь в сети в целях тестирования и пробовал много транзакций. Следовательно, теперь скорость стала проблемой. Не уверен, что я прав на 100%. Но угадайте.
У меня нет блока EIP155, установленного в моем custom-genesis.json, кроме того, что мой сетевой идентификатор равен 1205, установленному во время создания многопользовательской службы geth, которая отличается от настройки chainId = 0 в генезисе.

У меня была аналогичная проблема. По сути, в моем смарт-контракте не было «к оплате» в функции, куда вы отправляете Ethereum. Вы говорите, что все работает правильно, вы можете получить, метамаска открывается, но не отправляет Ethereum. Попробуйте добавить «оплачиваемый» и дайте мне знать, если это сработало, чтобы я знал, что нужно более глубоко изучить вашу проблему.