Получите фактическую стоимость газа из вызова метода в частном узле, изменив код geth
У меня есть частная сеть ethereum и, используя Geth, чтобы ускорить процесс, я хочу изменить способ оценки газа.
Использование вызова RPC для eth_estimateGas слишком медленное, когда дело доходит до нескольких одновременных операций. Я вижу, что это делается в функции EstimateGas из Internal/ethapi/api.go:
func (ec *Client) EstimateGas(ctx context.Context, msg ethereum.CallMsg) (uint64, error)
Это выполняется в памяти, не затрагивая блокчейн, и вычисляет, сколько газа было использовано, обычно на 20-30% отличается от фактического используемого газа.
Есть ли способ построить функцию, возможно, непосредственно в EVM, чтобы вызывать ее из других источников Go, которые в основном используют тот же код, что и майнер, когда вычисляет точный необходимый газ?
Может быть невозможно прийти к точной сумме (из-за других условий блокировки, когда транзакция выполняется), но по крайней мере мне нужно иметь оценку, близкую к реальной стоимости, не используя вызов RPC.
Любая помощь высоко ценится.