Получите фактическую стоимость газа из вызова метода в частном узле, изменив код 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.

Любая помощь высоко ценится.

0 ответов

Другие вопросы по тегам