Я использую web3, чтобы подписать следующую транзакцию и отправить ее на узел с помощью sendSignedTransaction. Однако я продолжаю получать сообщение об ошибке «неверный отправитель».
Я установил идентификатор сети на 6454 в genesis.json, и узел был запущен с тем же идентификатором сети. Я использовал то же самое для подписания транзакции.
{
"to": "0x609be532b4411da754c55295f9a067819d2b563c",
"value": "0xff",
"gas": "0x61a8",
"gasPrice": "0x1e8f1c10800",
"from": "0x55eb76b1d8ff63ffbe211913a7f91a17cb98063c",
"nonce": "0x0",
"chainId": 6454,
"data": ""
}
РЕДАКТИРОВАТЬ; Вот мой genesis.json
{
"config": {
"chainId": 6454,
"homesteadBlock": 1,
"eip150Block": 2,
"eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"eip155Block": 3,
"eip158Block": 3,
"byzantiumBlock": 4,
"clique": {
"period": 1,
"epoch": 30000
}
},
"nonce": "0x0",
"timestamp": "0x5b33af98",
"extraData": "0x0000000000000000000000000000000000000000000000000000000000000000240ebbd4e36bce0071994d62c78319d028fb651bac65b46b5c6257bd7c790fa51eb54d9f68f559d20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"gasLimit": "0x47b760",
"difficulty": "0x1",
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": {
"240ebbd4e36bce0071994d62c78319d028fb651b": {
"balance": "0x500000000000000000000000000000000000000000000000000000000000000"
},
"ac65b46b5c6257bd7c790fa51eb54d9f68f559d2": {
"balance": "0x500000000000000000000000000000000000000000000000000000000000000"
}
},
"number": "0x0",
"gasUsed": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
Наиболее вероятная ошибка заключается в том, что вы использовали неправильный chainId
, или ваша приватная цепочка не настроила номер блока EIP155. Установите номер блока EIP155 равным 1, чтобы исправить это. Кроме того, кошелек, который вы используете для отправки транзакции, должен поддерживать протокол EIP155.
В противном случае вам придется отладить процесс подписания, потому что ваш вопрос не содержит подробной информации, позволяющей сделать более точное предположение.
Из источников:
// Make sure the transaction is signed properly
from, err := types.Sender(pool.signer, tx)
if err != nil {
return ErrInvalidSender
}
Еще одна вещь, которую нужно проверить, — использует ли ваш узел POA ssl, если да, укажите URL-адрес на основе https при подключении узла. У меня была такая же проблема, и я долго боролся с идентификатором цепочки. Затем, в конце концов, проверьте, что URL-адрес узла был https вместо http, и он работал как шарм.
Это похоже на проблему с версией 2.0.0 ethereumjs-tx:
https://github.com/ethereumjs/ethereumjs-tx/issues/165 16
Вам нужно будет построить транзакцию, как показано ниже:
const tx = new Tx(txObject, {chain:'ropsten', hardfork: 'petersburg'})
Шахул Хамид
Нулик
geth
не может получить исходный адрес из вашей подписи. выполните getTransaction() и добавьте вывод к вашему вопросу, возможно, кто-то обнаружит ошибку в ваших полях R, S, V.Нулик