* Don't use move semantics if not needed (#8793)
* SDK: Deboilerplate `TransportError` with thiserror
* Enable interchange between `TransportError` and `ClientError`
* SDK: Retval consistency between `Client` and `AsyncClient` traits
* Client: Introduce/use `Result` type
* Client: Remove unused `RpcResponseIn` type
* Client: Rename `RpcResponse` to more appropriate `RpcResult`
* Client: Death to `io::Result` return types
* Client: Struct-ify `ClientError`
* Client: Add optional `command` parameter to `ClientError`
* RpcClient: Stop abusing `io::Error` (low-fruit)
* ClientError: Use `thiserror`'s `Display` impl
* Extend `RpcError`'s utility
* RpcClient: Stop abusing `io::Error` (the rest)
* CLI: Shim `main()` so we can `Display` format errors
* claputils: format input validator errors with `Display`
They are intended to be displayed to users
* SDK: `thiserror` for hash and sig parse erros
* Keygen: Shim main to format errors with `Display`
* SDK: `thiserror` for `InstructionError`
* CLI: `thiserror` for `CliError`
* CLI: Format user messages with `Display`
* Client: Tweak `Display` for `ClientError`
* RpcClient: Improve messaging when TX cannot be confirmed
* fu death io res retval
* CLI/Keygen - fix shell return value on error
* Tweak `InstructionError` `Display` messages as per review
* Cleanup hackjob return code fix
* Embrace that which you hate most
* Too much...
Co-authored-by: Jack May <jack@solana.com>
* Add credit-only debit/data check to verify_instruction
* Store credits and pass to accounts_db
* Add InstructionErrors and tests
* Relax account locks for credit-only accounts
* Collect credit-only account credits before passing to accounts_db to store properly
* Convert System Transfer accounts to credit-only, and fixup test
* Functionalize collect_accounts to unit test
* Review comments
* Rebase
* Add credit-only flag to AccountMeta, default to false
* Sort keys by is_credit_only within signed/unsigned groupings
* Process and de-dupe program keys along with other account keys
* Add message helper functions
* Fix test
* Improve comment
* s/is_credit_only/is_debitable
* Add InstructionKeys helper struct, and simplify program_position method
* Add num_readonly_accounts slice
* Impl programs in account_keys
* Emulate current account-loading functionality using program-account_keys (breaks exchange_program_api tests)
* Fix test
* Add temporary exchange faucet id
* Update chacha golden
* Split num_credit_only_accounts into separate fields
* Improve readability
* Move message field constants into Message
* Add MessageHeader struct and fixup comments
Added CompiledInstruction::program_id() so that we don't need to pass
around instruction indexes just for Message::program_id().
Also added Message.program_ids() that returns a slice so that we
can move those pubkeys into Message::account_keys.