solana-message 0.0.3

Solana transaction message types.
Documentation
Sequences of [`Instruction`]s executed within a single transaction. [`Instruction`]: https://docs.rs/solana-instruction/latest/solana_instruction/struct.Instruction.html In Solana, programs execute instructions, and clients submit sequences of instructions to the network to be atomically executed as [`Transaction`]s. [`Transaction`]: https://docs.rs/solana-sdk/latest/solana-sdk/transaction/struct.Transaction.html A [`Message`] is the compact internal encoding of a transaction, as transmitted across the network and stored in, and operated on, by the runtime. It contains a flat array of all accounts accessed by all instructions in the message, a [`MessageHeader`] that describes the layout of that account array, a [recent blockhash], and a compact encoding of the message's instructions. [recent blockhash]: https://solana.com/docs/core/transactions#recent-blockhash Clients most often deal with `Instruction`s and `Transaction`s, with `Message`s being created by `Transaction` constructors. To ensure reliable network delivery, serialized messages must fit into the IPv6 MTU size, conservatively assumed to be 1280 bytes. Thus constrained, care must be taken in the amount of data consumed by instructions, and the number of accounts they require to function. This module defines two versions of `Message` in their own modules: [`legacy`] and [`v0`]. `legacy` is reexported here and is the current version as of Solana 1.10.0. `v0` is a [future message format] that encodes more account keys into a transaction than the legacy format. The [`VersionedMessage`] type is a thin wrapper around either message version. [future message format]: https://docs.solanalabs.com/proposals/versioned-transactions Despite living in the `solana-program` crate, there is no way to access the runtime's messages from within a Solana program, and only the legacy message types continue to be exposed to Solana programs, for backwards compatibility reasons.