Note: Although a simulate() call wonāt modify the blockchainās state and does not spend resources, the transaction must still meet its requirements to be considered valid.
So it seems that āget_priceā does consume resources. Simulate wonāt spend these resources but will evaluate if you have balance to run the call.
This was introduced in Fuel VM v0.33.0 where script/create transactions require a spendable input to be considered valid - more info here. This was introduced in TS SDK v0.46.0, further TS specific info here.
@sway yes correct, please take a look at our simulate() vs call()documentation:
Although a simulate() call wonāt modify the blockchainās state and does not spend resources, the transaction must still meet its requirements to be considered valid.
This was one of the motivations behind deprecating get(). The fuel specs also echo this information by stating:
No inputs are of type InputType.Coin or InputType.Message with input.dataLength == 0
Meaning a spendable input is required for a valid transaction, even for a readonly transaction.
Are you able to dump the transaction to confirm no spendable inputs?