## Description
/construction/preprocess:
- Request: May or may not have metadata field and metadata may or may
not have budget field.
- Response: May or may not have options field and options may or may not
have budget field.
/construction/metadata:
- Request: May or may not have options field and options may or may not
have budget field
- Response: Always has metadata field and metadata field always has
budget field. If Request above included budget, this is returned. If
not, computation_cost + storage_cost is used.
/construction/submit:
Dry run the transaction before executing it. On dry-run failure, fail
early and not execute it.
## Test Plan
Added /tests/gas_budget_tests.rs
---
### Type of Change (Check all that apply)
- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration
### Release notes