Sui Full Node gRPC Message Definitions
This page lists all message definitions for the Sui Full Node gRPC API. Each message shows its fields, types, labels (optional, repeated), and descriptions. For union fields (oneof), the available variants are listed under the union name.
Messages with more than 4 non-oneof fields show only a summary here. Use the View all fields link for the complete field-level reference, including any hidden union variants.
See also: Enum and Scalar Type Definitions | Methods | Proto source files
sui/rpc/v2/balance_change.proto
The delta, or change, in balance for an address for a particular Coin type.
sui/rpc/v2/checkpoint.proto
CheckpointContents for this checkpoint.transactions.objects field will not be populated.sui/rpc/v2/epoch.proto
sui/rpc/v2/move_package.proto
Describes a Move Datatype.
defining_id is the storage_id of the package version that first introduced or added that type.Descriptor of a field that belongs to a struct or enum variant
Descriptor of a Move function
entry or not.Upgraded package info for the linkage table.
A Move Module.
Representation of a type signature that could appear as a function parameter or return value.
Representation of a type signature that could appear as a field type for a struct or enum
A Move Package
original_id (sometimes also called its runtime_id) is the storage_id of the first version of this package that has been published. The original_id/runtime_id is stable across all versions of the package and does not ever change.storage_id is the Sui ObjectId of the package on-chain. Outside of system packages the storage_id for every package version is different.Identifies a struct and the module it was defined in.
A generic type parameter used in the declaration of a struct or enum.
Descriptor of an enum variant
sui/rpc/v2/query_options.proto
A point in ledger order: the boundary between the items whose keys sort below this position and the items whose keys sort at or above it.
Marker for the final frame of a successful query stream. Every successful
stream sets QueryEnd on exactly one frame, after which no further frames
are sent. That frame always carries the final watermark. For ItemLimit, it
also carries the final matching item; for every other reason it carries no
item. A ScanLimit terminal watermark may repeat the previous frame's cursor
when its authoritative scan frontier was already emitted; this does not
repeat an item.
Cursor-bounded query options.
Progress of a scan, carried on every response frame, whether or not the frame delivers a matching item. Watermarks never regress in the requested ordering, but consecutive frames may carry the same watermark when additional work does not advance the safe resume frontier.
<= checkpoint (strictly greater ones may still hold matches); a descending scan has emitted every matching item in the interval at checkpoints >= checkpoint. This boundary never regresses in the scan direction, but it may repeat while the cursor advances. Unset until the scan's first checkpoint is fully covered. For example, a scan resumed from a cursor that lands mid-checkpoint leaves this unset until the next checkpoint boundary in the scan direction is fully covered. A watermark still has a valid resume cursor while this field is unset.options.after (ascending) or options.before (descending) on the next request to resume from here. The most recently received cursor is always the safe resume point. Pass cursors back unchanged; never compare or inspect them. Cursors that differ can name the same point, and their encoding may change.cursor_position has been delivered. Descending, every match from cursor_position up to (excluding) the request's end has been delivered. On a frame that carries an item, ascending, it is the boundary just past the item, so it is not the item's own key: it is that key with its finest index incremented (event_index for events, transaction_index for transactions, checkpoint for checkpoints). Descending, it is the boundary just before the item, which is the item's key. It never moves before the request's start (ascending) or past its end (descending), so an ascending request that starts beyond what the server has indexed gets its start echoed back: the resume point says where the client is, not where the ledger is. cursor may then name an earlier point; bounds intersect, so resuming with both starts at cursor_position.sui/rpc/v2/transaction_execution_service.proto
An intermediate result/output from the execution of a single command
effects.status,checkpoint.UserSignatures authorizing the execution of the provided transaction.Response message for NodeService.ExecuteTransaction.
google.rpc.ErrorInfo with reason INSUFFICIENT_GAS_BALANCE, or TRANSACTION_EXECUTION_FAILED if the transaction also fails while estimating the budget (see ErrorReason). This option will be ignored if checks is DISABLED.sui/rpc/v2/effects.proto
Input/output state of an object that was changed during execution.
output_state is OUTPUT_OBJECT_STATE_ACCUMULATOR_WRITEObjectId during execution.An entry in an event digest accumulator value.
The effects of executing a transaction.
A consensus object that wasn't changed during execution.
sui/rpc/v2/protocol_config.proto
configs field.configs field.sui/rpc/v2/subscription_service.proto
Request message for SubscriptionService.SubscribeCheckpoints.
cursor is always populated and is not subject to the mask.Response message for SubscriptionService.SubscribeCheckpoints.
cursor has been delivered. Present on every frame and advances monotonically.Request message for SubscriptionService.SubscribeEvents.
Response message for SubscriptionService.SubscribeEvents.
Mirrors ListEventsResponse, except there is no end field: a subscription
stream has no successful end.
Event.Request message for SubscriptionService.SubscribeTransactions.
Response message for SubscriptionService.SubscribeTransactions.
Mirrors ListTransactionsResponse, except there is no end field: a
subscription stream has no successful end.
ExecutedTransaction.transaction_index.sui/rpc/v2/ledger_service.proto
object_id,version,digest.ObjectId of the requested object.object_id,version,digest.mainnet, testnet, and so on.Request message for LedgerService.ListCheckpoints.
Watermark.cursor as options.after (ascending) or options.before (descending) on the next request.Response message for LedgerService.ListCheckpoints.
Request message for LedgerService.ListEvents.
end_transaction_index at which the query ends (exclusive): events of that transaction whose Event.event_index is below this value are also returned. Unset, like 0, returns none of the transaction's events. An index past the transaction's last event returns all of them. Requires end_transaction_index. Servers that predate this field ignore it, as for end_transaction_index.end_checkpoint - 1, at which the query ends (exclusive): within that checkpoint, only events of transactions whose Event.transaction_index is below this value are returned, plus, with end_event_index, the events of the transaction at this index that precede it. Unset ends after the whole checkpoint. An index at or past the checkpoint's transaction count ends after the whole checkpoint. Requires end_checkpoint. A query that stops at this position ends with QUERY_END_REASON_CHECKPOINT_BOUND. When this position leaves events of that checkpoint out, an ascending query does not report it as covered in Watermark.checkpoint. Combines with options.before by intersection: the query ends at whichever of the two is earlier in ledger order. Servers that predate this field ignore it and return the whole checkpoint, so clients must still drop events at or after this position themselves.Response message for LedgerService.ListEvents.
Event.Request message for LedgerService.ListTransactions.
end_checkpoint - 1, at which the query ends (exclusive): within that checkpoint, only transactions whose ExecutedTransaction.transaction_index is below this value are returned, so 0 returns none of it. Unset ends after the whole checkpoint. An index at or past the checkpoint's transaction count ends after the whole checkpoint. Requires end_checkpoint. A query that stops at this position ends with QUERY_END_REASON_CHECKPOINT_BOUND. When this position leaves transactions of that checkpoint out, an ascending query does not report it as covered in Watermark.checkpoint. Combines with options.before by intersection: the query ends at whichever of the two is earlier in ledger order. Servers that predate this field ignore it and return the whole checkpoint, so clients must still drop transactions at or after this position themselves.Watermark.cursor as options.after (ascending) or options.before (descending) on the next request.Response message for LedgerService.ListTransactions.
ExecutedTransaction.transaction_index.sui/rpc/v2/jwk.proto
A JSON web key.
Key to uniquely identify a JWK.
sui/rpc/v2/execution_status.proto
An error with an argument to a command.
Set of objects that were congested, leading to the transaction's cancellation.
An error that can occur during the execution of a transaction.
The status of an executed transaction.
success is false.Location in Move bytecode where an error occurred.
An error with upgrading a package.
A size error.
Type argument error.
sui/rpc/v2/move_package_service.proto
storage_id of any version of the requested package. When no selector is set, the package stored at exactly this id is returned. When a selector is set, package_id only identifies the package's upgrade lineage (via its original id), and the selected version within that lineage is returned.storage_id of any version of the package.1000 entries will be returned. The maximum value is 10000; values above 10000 will be coerced to 10000.ListPackageVersions call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ListPackageVersions must match the call that provided the page token.page_token to retrieve the next page. If this field is omitted, there are no subsequent pages.A simplified representation of a package version
sui/rpc/v2/checkpoint_contents.proto
The committed to contents of a checkpoint.
Transaction information committed to in a checkpoint.
AddressAliases object version, if any, that was used to verify the UserSignature at the same position in signatures. This field is present when CheckpointContents.version is >= 2.sui/rpc/v2/event.proto
An event.
LedgerService.ListEvents); left unset when the event is carried inside its transaction's events list, where the enclosing ExecutedTransaction already provides this context.Events emitted during the successful execution of a transaction.
sui/rpc/v2/filter.proto
Match by any address whose state moved as a side effect of the transaction: object ownership changes (in either direction), prior owners of removed/wrapped objects, and address-balance changes via accumulator events.
Match by changed object ID.
Match by an event's package/module fields, specified as a ::-delimited
Move path. These identify the top-level Move call that triggered the event.
package[::module].DNF filter for events: any term may match, and each term is an AND of signed literals. Sender predicates match all events from matching transactions; emit-module, event-type, and event-stream-head predicates match individual event-space dimensions. An absent filter matches everything. A present filter must have at least one term.
One signed event predicate literal: a predicate, optionally negated.
Match by authenticated event stream head.
One conjunction in an event DNF filter.
Match by event struct type, specified as a Move type string.
address[::module[::Name[<type_params>]]].Match by Move function call, specified as a ::-delimited Move path.
package[::module[::function]].Match transactions that wrote a Move package.
Match by transaction sender address.
DNF filter for transactions: any term may match, and each term is an AND of signed literals. An absent filter matches everything. A present filter must have at least one term.
One signed transaction predicate literal: a predicate, optionally negated.
One conjunction in a transaction DNF filter.
sui/rpc/v2/state_service.proto
Balance information for a specific coin type.
Balance<T> in this address's Address Balance.coin_type in its smallest unit. This is the sum of all spendable amounts of coin_type (address_balance and coin_balance).Coin<T> objects owned by this address.Metadata for a coin type
0x2::coin::CoinMetadata object or 0x2::sui::coin_registry::Currency object (when registered with CoinRegistry).Information about a coin type's 0x2::coin::TreasuryCap and its total available supply
0x2::coin::TreasuryCap object.Request message for LiveDataService.GetBalance.
Response message for LiveDataService.GetBalance.
Return the total coin balance for one coin type, owned by the address owner.
Request message for NodeService.GetCoinInfo.
Response message for NodeService.GetCoinInfo.
0x2::coin::CoinMetadata if it exists and has not been wrapped.0x2::coin::RegulatedCoinMetadata object for coins that have not been migrated to the CoinRegistry If this coin is not known to be regulated, only the coin_regulated_state field will be populated.0x2::coin::TreasuryCap if it exists and has not been wrapped.Request message for LiveDataService.ListBalances.
50 entries will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.ListBalances call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ListBalances must match the call that provided the page token.Response message for LiveDataService.ListBalances.
Return the total coin balance for all coin types, owned by the address owner.
Request message for NodeService.ListDynamicFields
50 entries will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.ListDynamicFields call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ListDynamicFields must match the call that provided the page token.UID of the parent, which owns the collections of dynamic fields.parent,field_id.Response message for NodeService.ListDynamicFields
page_token to retrieve the next page. If this field is omitted, there are no subsequent pages.0x2::coin::Coin will return all Coin<T> objects regardless of the type parameter T. Providing a type with a type param will restrict the returned objects to only those objects that match the provided type parameters, e.g. 0x2::coin::Coin<0x2::sui::SUI> will only return Coin<SUI> objects.50 entries will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.ListOwnedObjects call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ListOwnedObjects must match the call that provided the page token.Information about a regulated coin, which indicates that it makes use of the transfer deny list.
DenyCap object.sui/rpc/v2/system_state.proto
A message that represents a Move 0x2::table::Table or 0x2::bag::Bag
A staking pool embedded in each validator struct in the system state object.
None if the pool is pre-active and Some(<epoch_number>) if active or inactive.None = {pre-active, active}, Some(<epoch_number>) if in-active, and it was de-activated at epoch <epoch_number>.activation_epoch of this pool and contains exchange rates at the beginning of each epoch, i.e., right after the rewards for the previous epoch have been deposited into the pool. key: u64 (epoch number), value: PoolTokenExchangeRateStruct representing the onchain storage fund.
storage_rebate of all objects currently stored on-chain. To maintain this invariant, the only inflow of this balance is storage charges collected from transactions, and the only outflow is storage rebates of transactions, including both the portion refunded to the transaction senders as well as the non-refundable portion taken out and put into non_refundable_balance.Definition of a Validator in the system contracts
Note: fields of ValidatorMetadata are flattened into this type
active_validators it is added to this table so that stakers can continue to withdraw their stake from it. key: address (staking pool Id), value: 0x3::validator_wrapper::ValidatorWrappersui/rpc/v2/object_reference.proto
Reference to an object.
sui/rpc/v2/checkpoint_summary.proto
A commitment made by a checkpoint.
A header for a checkpoint on the Sui blockchain.
CheckpointContents for this checkpoint.Data, which when included in a CheckpointSummary, signals the end of an Epoch.
ValidatorCommittee for the next epoch.sui/rpc/v2/bcs.proto
Bcs contains an arbitrary type that is serialized using the
BCS
format as well as a name that identifies the type of the serialized value.
sui/rpc/v2/name_service.proto
@name as well as name.sui formats.Field<Domain,NameRecord>.sui/rpc/v2/owner.proto
Enum of different types of ownership for an object.
sui/rpc/v2/transaction.proto
A new JWK.
The validators allowed to propose a transaction in consensus.
Proposal by any other validator is byzantine behavior and invalidates the whole block.
proposers indexes into. Committee indices are only meaningful against one committee, so a set recorded for any other epoch is ignored and the transaction is treated as naming no proposers.allowed_proposers entirely to let any validator propose the transaction.Expire old JWKs.
Update the set of valid JWKs.
A transaction that was canceled.
System transaction used to change the epoch.
A single command in a programmable transaction.
forall T: Vec<T> -> vector<T> Given n-values of the same type, it constructs a vector. For non-objects or an empty vector, the type tag must be specified.(&mut Coin<T>, Vec<Coin<T>>) It merges n-coins into the first coin.(&mut Coin<T>, Vec<u64>) -> Vec<Coin<T>> It splits off some amounts into new coins with those amounts.(Vec<forall T:key+store. T>, address) It sends n-objects to the specified address. These objects must have store (public transfer) and either the previous owner must be an address or the object must be newly created.UpgradeTicket that must have been produced from an earlier command in the same programmable transaction.Consensus commit prologue system transaction.
This message can represent V1, V2, and V3 prologue types.
Version assignments performed by consensus.
Set of operations run at the end of the epoch to close out the current epoch and start the next one.
Operation run at the end of an epoch.
Payment information for executing a transaction.
Command to build a Move vector out of a set of individual elements.
Command to merge multiple coins of the same type into a single coin.
Command to call a Move function.
A user transaction.
Contains a series of native commands and Move calls where the results of one command can be used in future commands.
Command to publish a new Move package.
Randomness update.
Command to split a single coin object into multiple coins.
System package.
A transaction.
A TTL for a transaction.
kind is VALIDITY. Leave unset to let any validator propose the transaction.Transaction type.
ChangeEpoch variant is now deprecated (but the ChangeEpoch struct is still used by EndOfEpochTransaction).Command to transfer ownership of a set of objects to an address.
Command to upgrade an already published package.
Object version assignment from consensus.
sui/rpc/v2/input.proto
ObjectId of the allowance object authorizing the withdrawal if source is SENDER_ALLOWANCE.An input to a user transaction.
sui/rpc/v2/signature_verification_service.proto
address is required and the signature must be from a member of address's current AddressAliases set rather than from address itself. An address with no AddressAliases set is its own only alias. Servers that predate this field ignore it, so clients must check address_aliases_checked in the response.PersonalMessage and TransactionData and the Bcs.name must be set to indicate which type of message is being verified.check_address_aliases, whether or not the signature is valid. Unset by servers that predate it.is_valid is false, this is the reason for why the signature verification failed.sui/rpc/v2/argument.proto
An argument to a programmable transaction command.
sui/rpc/v2/object.proto
A rendered JSON blob based on an on-chain template.
null or not set.null, and will be accompanied by a field in errors, explaining the error.An object on the Sui blockchain.
0x2::coin::Coin<T>Set of Objects
(object_id, version).sui/rpc/v2/gas_cost_summary.proto
Summary of gas charges.
sui/rpc/v2/signature.proto
A G1 point.
A G2 point.
Aggregated signature from members of a multisig committee.
A multisig committee.
A member in a multisig committee.
Set of valid public keys for multisig committee members.
A signature from a member of a multisig committee.
PASSKEY.ZKLOGIN.A passkey authenticator.
Either an ed25519, secp256k1, secp256r1 or mldsa65 signature
A signature from a user.
MULTISIG.PASSKEY.ZKLOGIN.An aggregated signature from multiple validators.
ValidatorCommittee from this epoch to verify this signature.The validator set for a particular epoch.
A member of a validator committee.
A zklogin authenticator.
A claim of the iss in a zklogin proof.
A zklogin groth16 proof and the required inputs to perform proof verification.
Public key equivalent for zklogin authenticators.
sui/rpc/v2/executed_transaction.proto
TransactionEffects for this transaction.