* SDK: Add `NullSigner` implementation
* SDK: Split `Transaction::verify()` to gain access to results
* CLI: Minor refactor of --sign_only result parsing
* CLI: Enable paritial signing
Signers specified by pubkey, but without a matching --signer arg
supplied fall back to a `NullSigner` when --sign-only is in effect.
This allows their pubkey to be used for TX construction as usual,
but leaves their `sign_message()` a NOP. As such, with --sign-only
in effect, signing and verification must be done separately, with
the latter's per-signature results considered
* CLI: Surface/report missing/bad signers to user
* CLI: Suppress --sign-only JSON output
* nits
* Docs for multi-session offline signing
(cherry picked from commit 98228c392e)
Co-authored-by: Trent Nelson <trent@solana.com>
* Accounts hash consistency halting
* Add option to inject account hash faults for testing.
Enable option in local cluster test to see that node halts.
* 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>