Как получать уведомления о плохих транзакциях при отправке на сервер JSON-RPC?

С Ubuntu я попробовал Wallet/Mist и MetaMask в тестовой сети Ropsten: они оба уведомляют меня о неверных транзакциях перед вводом моего пароля. Я пытался сделать то же самое с сервером JSON-RPC обычным способом. Сервер продолжает отправлять плохие транзакции без какого-либо уведомления.

Что касается плохих транзакций, есть ли способ добиться того же эффекта, что и Wallet/Mist/MetaMask, с сервером JSON-RPC?

Ответы (1)

Нет. Конечная точка JSON RPC реализует функциональность в соответствии со спецификацией.

Mist/Metamask реализуют проверку транзакций внутри клиента перед отправкой транзакции на поддерживающий узел.

В вашем примере вы отправляете транзакцию непосредственно на узел, и поэтому вам необходимо заранее выполнить соответствующую проверку.

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

РЕДАКТИРОВАТЬ – Дополнительная информация

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

Geth и Parity реализуют [eth_estimateGas](https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_estimategas)конечную точку, которая при вызове с вызовом функции, которая возвращает ошибку.

Затем, если предположить, что сервер может проверять транзакции перед трансляцией, как я могу это сделать? Более того, как я могу самостоятельно подтверждать транзакции? К вашему сведению, в данном случае под «плохими транзакциями» я подразумеваю вызовы функций, которые вызываются/возвращаются модификаторами.
Вы можете позвонить eth_estimateGas. Ответ отредактирован.
Я только что попробовал eth_estimateGas и получил нормальные результаты (без ошибок при выполнении вызовов функций). С другой стороны, eth_call, кажется, работает, при условии, что вызовы функций без выбрасывания возвращают какое-то значение.
Я только что понял, что «нормальные результаты» не такие уж и нормальные: это лимиты газа, которые я допускаю для транзакций.