The Full node protocol ...
Proto files sui.node.v2.proto sui.types.proto google/protobuf/empty.proto google/protobuf/timestamp.proto Scalar Value Types Messages BalanceChange BalanceChanges EffectsFinality ExecuteTransactionOptions ExecuteTransactionRequest ExecuteTransactionResponse FullCheckpointObject FullCheckpointObjects FullCheckpointTransaction GetCheckpointOptions GetCheckpointRequest GetCheckpointResponse GetCommitteeRequest GetCommitteeResponse GetFullCheckpointOptions GetFullCheckpointRequest GetFullCheckpointResponse GetNodeInfoRequest GetNodeInfoResponse GetObjectOptions GetObjectRequest GetObjectResponse GetTransactionOptions GetTransactionRequest GetTransactionResponse UserSignatures UserSignaturesBytes
sui.node.v2.proto
BalanceChange
Fields
BalanceChanges
Fields
EffectsFinality
Fields
ExecuteTransactionOptions
Fields
Include the BalanceChanges in the response.Defaults to false
if not included
Include the sui.types.TransactionEffects message in the response.Defaults to false
if not included
Include the TransactionEffects formatted as BCS in the response.Defaults to false
if not included
Include the sui.types.TransactionEvents message in the response.Defaults to false
if not included
Include the TransactionEvents formatted as BCS in the response.Defaults to false
if not included
ExecuteTransactionRequest
Fields
ExecuteTransactionResponse
Fields
FullCheckpointObject
Fields
The digest of this object
FullCheckpointObjects
Fields
FullCheckpointTransaction
Fields
The digest of this transaction
GetCheckpointOptions
Fields
Include the sui.types.CheckpointContents message in the response.Defaults to false
if not included
Include the CheckpointContents formatted as BCS in the response.Defaults to false
if not included
Include the sui.types.ValidatorAggregatedSignature in the response.Defaults to false
if not included
Include the sui.types.CheckpointSummary in the response.Defaults to false
if not included
Include the CheckpointSummary formatted as BCS in the response.Defaults to false
if not included
GetCheckpointRequest
Fields
GetCheckpointResponse
Fields
The digest of this Checkpoint's CheckpointSummary
The sequence number of this Checkpoint
GetCommitteeRequest
Fields
GetCommitteeResponse
Fields
GetFullCheckpointOptions
Fields
Include the sui.types.CheckpointContents message in the response.Defaults to false
if not included
Include the CheckpointContents formatted as BCS in the response.Defaults to false
if not included
Include the sui.types.TransactionEffects message in the response.Defaults to false
if not included
Include the TransactionEffects formatted as BCS in the response.Defaults to false
if not included
Include the sui.types.TransactionEvents message in the response.Defaults to false
if not included
Include the TransactionEvents formatted as BCS in the response.Defaults to false
if not included
Include the input objects for transactions in the response.Defaults to false
if not included
Include the sui.types.Object message in the response.Defaults to false
if not included
Include the Object formatted as BCS in the response.Defaults to false
if not included
Include the output objects for transactions in the response.Defaults to false
if not included
Include the sui.types.ValidatorAggregatedSignature in the response.Defaults to false
if not included
Include the sui.types.CheckpointSummary in the response.Defaults to false
if not included
Include the CheckpointSummary formatted as BCS in the response.Defaults to false
if not included
Include the sui.types.Transaction message in the response.Defaults to false
if not included
Include the Transaction formatted as BCS in the response.Defaults to false
if not included
GetFullCheckpointRequest
Fields
GetFullCheckpointResponse
Fields
The digest of this Checkpoint's CheckpointSummary
The sequence number of this Checkpoint
GetNodeInfoRequest
GetNodeInfoResponse
Fields
Human readable name of the chain that this Node is on
The chain identifier of the chain that this Node is on
Checkpoint height of the most recently executed checkpoint
Current epoch of the Node based on its highest executed checkpoint
lowest_available_checkpoint
The lowest checkpoint for which checkpoints and transaction data is available
lowest_available_checkpoint_objects
The lowest checkpoint for which object data is available
Unix timestamp of the most recently executed checkpoint
GetObjectOptions
Fields
Include the sui.types.Object message in the response.Defaults to false
if not included
Include the Object formatted as BCS in the response.Defaults to false
if not included
GetObjectRequest
Fields
GetObjectResponse
Fields
The digest of this object
GetTransactionOptions
Fields
Include the sui.types.TransactionEffects message in the response.Defaults to false
if not included
Include the TransactionEffects formatted as BCS in the response.Defaults to false
if not included
Include the sui.types.TransactionEvents message in the response.Defaults to false
if not included
Include the TransactionEvents formatted as BCS in the response.Defaults to false
if not included
Include the set of sui.types.UserSignature's in the response.Defaults to false
if not included
Include the set of UserSignature's encoded as bytes in the response.Defaults to false
if not included
Include the sui.types.Transaction message in the response.Defaults to false
if not included
Include the Transaction formatted as BCS in the response.Defaults to false
if not included
GetTransactionRequest
Fields
GetTransactionResponse
Fields
The digest of this transaction
UserSignatures
Fields
UserSignaturesBytes
Fields
sui.types.proto
ActiveJwk
Fields
Address
Fields
AddressDeniedForCoinError
Fields
Argument
Fields
AuthenticatorStateExpire
Fields
authenticator_object_initial_shared_version
AuthenticatorStateUpdate
Fields
authenticator_object_initial_shared_version
Bcs
Fields
Bn254FieldElement
Fields
CancelledTransaction
Fields
CancelledTransactions
Fields
ChangeEpoch
Fields
System packages (specifically framework and move stdlib) that are written before the newepoch starts. This tracks framework upgrades on chain. When executing the ChangeEpoch txn,the validator must write out the modules below. Modules are provided with the version theywill be upgraded to, their modules in serialized form (which include their package ID), anda list of their transitive dependencies.
The total amount of gas charged for computation during the epoch.
The next (to become) epoch ID.
Unix timestamp when epoch started
non_refundable_storage_fee
The non-refundable storage fee.
The protocol version in effect in the new epoch.
The total amount of gas charged for storage during the epoch.
The amount of storage rebate refunded to the txn senders.
ChangedObject
Fields
CheckpointCommitment
Fields
CheckpointContents
Fields
Fields
CheckpointSummary
Fields
epoch_rolling_gas_cost_summary
total_network_transactions
CheckpointedTransactionInfo
Fields
CircomG1
Fields
CircomG2
Fields
Command
Fields
CommandArgumentError
Fields
Out of bounds access to input or results
invalid_argument_to_private_entry_function
Invalid argument to private entry function. Private entry functions cannot take arguments from other Move functions.
The argument cannot be deserialized into a value of the specified type
Invalid usage of Gas coin. The Gas coin can only be used by-value with a TransferObjects command.
invalid_object_by_mut_ref
Immutable objects cannot be passed by mutable reference, &mut.
Immutable objects cannot be passed by-value.
Invalid usage of result. Expected a single result but found either no return value or multiple.
invalid_usage_of_pure_argument
The argument cannot be instantiated from raw bytes
Invalid usage of move value. Mutably borrowed values require unique usage. Immutably borrowed values cannot be taken or borrowed mutably. Taken values cannot be used again.
secondary_index_out_of_bounds
Out of bounds access to subresult
shared_object_operation_not_allowed
Shared object operations such a wrapping, freezing, or converting to owned are not allowed.
The type of the value does not match the expected type
CongestedObjectsError
Fields
ConsensusCommitPrologue
Fields
consensus_determined_version_assignments
ConsensusDeterminedVersionAssignments
Fields
Digest
Fields
EndOfEpochData
Fields
next_epoch_protocol_version
EndOfEpochTransaction
Fields
EndOfEpochTransactionKind
Fields
authenticator_state_create
Use higher field numbers for kinds which happen infrequently
authenticator_state_expire
Event
Fields
ExecutionStatus
Fields
FailureStatus
Fields
Address is denied for this coin type
Arity mismatch for Move function. The number of arguments does not match the number of parameters
Certificate is on the deny list
circular_object_ownership
Circular Object Ownership
Coin balance overflowed an u64
Coin type is globally paused for use
Post-execution errors Effects from the transaction are too large
execution_cancelled_due_to_randomness_unavailable
Certificate is cancelled because randomness could not be generated this epoch
execution_cancelled_due_to_shared_object_congestion
Certificate is cancelled due to congestion on shared objects
feature_not_yet_supported
Attempted to used feature that is not supported yet
Programmable Transaction Errors Function not found
Requested shared object has been deleted
insufficient_coin_balance
Coin errors Insufficient coin balance for requested operation
invalid_public_function_return_type
Invalid public Move function signature. Unsupported return type for return value
Invalid Transfer Object, object does not have public transfer.
move_primitive_runtime_error
MoveVm Errors Error from a non-abort instruction. Possible causes: Arithmetic error, stack overflow, max value depth, etc."
non_entry_function_invoked
Non Entry Function Invoked. Move Call must start with an entry function.
Move object is larger than the maximum allowed size
Package is larger than the maximum allowed size
publish_error_non_zero_address
Publish/Upgrade errors Publish Error, Non-zero Address. The modules in the package must have their self-addresses set to zero.
publish_upgrade_dependency_downgrade
Publish or Upgrade dependency downgrade. Indirect (transitive) dependency of published or upgraded package has been assigned an on-chain version that is less than the version required by one of the package's transitive dependencies.
publish_upgrade_missing_dependency
Publish or Upgrade is missing dependency
shared_object_operation_not_allowed
The requested shared object operation is not allowed
sui_move_verification_error
Sui Move Bytecode Verification Error.
sui_move_verification_timedout
Sui Move Bytecode verification timed out.
Type arity mismatch for Move function. Mismatch between the number of actual versus expected type arguments.
unused_value_without_drop
Unused result without the drop ability.
MoveVm invariant violation
vm_verification_or_deserialization_error
Bytecode verification error.
written_objects_too_large
Indicates the transaction tried to write objects too large to storage
GasCostSummary
Fields
non_refundable_storage_fee
GasPayment
Fields
GenesisObject
Fields
GenesisTransaction
Fields
I128
Little-endian encoded i128
Fields
Identifier
Fields
Fields
Jwk
Fields
JwkId
Fields
MakeMoveVector
Fields
MergeCoins
Fields
ModifiedAtVersion
Fields
MoveCall
Fields
MoveError
Fields
MoveField
Fields
MoveLocation
Fields
MoveModule
Fields
MovePackage
Fields
MoveStruct
Fields
MoveStructValue
Fields
MoveValue
Fields
MoveVariant
Fields
MoveVector
Fields
MultisigAggregatedSignature
Fields
MultisigCommittee
Fields
MultisigMember
Fields
MultisigMemberPublicKey
Fields
MultisigMemberSignature
Fields
NestedResult
Fields
Object
Fields
ObjectData
Fields
ObjectExist
Fields
ObjectId
Fields
ObjectReference
Fields
ObjectReferenceWithOwner
Fields
ObjectWrite
Fields
Owner
Fields
PackageIdDoesNotMatch
Fields
PackageUpgradeError
Fields
package_id_does_not_match
PackageWrite
Fields
PasskeyAuthenticator
Fields
ProgrammableTransaction
Fields
Publish
Fields
RandomnessStateUpdate
Fields
randomness_object_initial_shared_version
ReadOnlyRoot
Fields
RoaringBitmap
Fields
Fields
SimpleSignature
Fields
SizeError
Fields
SplitCoins
Fields
StructTag
Fields
SystemPackage
Fields
Transaction
Fields
TransactionV1
Fields
TransactionEffects
Fields
TransactionEffectsV1
Fields
ObjectReference and owner of new objects created.
Object Refs of objects now deleted (the new refs).
The set of transaction digests this transaction depends on.
The version that every modified (mutated or deleted) object had before it was modified by this transaction.
ObjectReference and owner of mutated objects, including gas object.
The object references of the shared objects used in this transaction. Empty if no shared objects were used.
ObjectReference and owner of objects that are unwrapped in this transaction. Unwrapped objects are objects that were wrapped into other objects in the past, and just got extracted out.
Object refs of objects previously wrapped in other objects but now deleted.
Object refs of objects now wrapped in other objects.
The epoch when this transaction was executed.
The digest of the events emitted during execution, can be None if the transaction does not emit any event.
The updated gas object reference. Have a dedicated field for convenient access. It's also included in mutated.
The status of the execution
TransactionEffectsV2
Fields
Objects whose state are changed in the object store.
The set of transaction digests this transaction depends on.
Shared objects that are not mutated in this transaction. Unlike owned objects, read-only shared objects' version are not committed in the transaction, and in order for a node to catch up and execute it without consensus sequencing, the version needs to be committed in the effects.
Auxiliary data that are not protocol-critical, generated as part of the effects but are stored separately. Storing it separately allows us to avoid bloating the effects with data that are not critical. It also provides more flexibility on the format and type of the data.
The epoch when this transaction was executed.
The digest of the events emitted during execution, can be None if the transaction does not emit any event.
The updated gas object reference, as an index into the changed_objects
vector. Having a dedicated field for convenient access. System transaction that don't require gas will leave this as None.
The version number of all the written Move objects by this transaction.
The status of the execution
TransactionEvents
Fields
TransactionExpiration
Fields
TransactionKind
Fields
authenticator_state_update
consensus_commit_prologue_v1
consensus_commit_prologue_v2
consensus_commit_prologue_v3
TransferObjects
Fields
TypeArgumentError
Fields
TypeOrigin
Fields
TypeTag
Fields
U128
Little-endian encoded u128
Fields
U256
Little-endian encoded u256
Fields
UnchangedSharedObject
Fields
Upgrade
Fields
UpgradeInfo
Fields
UserSignature
Fields
ValidatorAggregatedSignature
Fields
ValidatorCommittee
Fields
ValidatorCommitteeMember
Fields
VersionAssignment
Fields
ZkLoginAuthenticator
Fields
ZkLoginClaim
Fields
Fields
ZkLoginProof
Fields
ZkLoginPublicIdentifier
Fields
google/protobuf/empty.proto
Empty
A generic empty message that you can re-use to avoid defining duplicated
empty messages in your APIs. A typical example is to use it as the request
or the response type of an API method. For instance:
service Foo {
rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
}
google/protobuf/timestamp.proto
Timestamp
A Timestamp represents a point in time independent of any time zone
or calendar, represented as seconds and fractions of seconds at
nanosecond resolution in UTC Epoch time. It is encoded using the
Proleptic Gregorian Calendar which extends the Gregorian calendar
backwards to year one. It is encoded assuming all minutes are 60
seconds long, i.e. leap seconds are "smeared" so that no leap second
table is needed for interpretation. Range is from
0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z.
By restricting to that range, we ensure that we can convert to
and from RFC 3339 date strings.
See https://www.ietf.org/rfc/rfc3339.txt .
Examples
Example 1: Compute Timestamp from POSIX time()
.
Timestamp timestamp;
timestamp.set_seconds(time(NULL));
timestamp.set_nanos(0);
Example 2: Compute Timestamp from POSIX gettimeofday()
.
struct timeval tv;
gettimeofday(&tv, NULL);
Timestamp timestamp;
timestamp.set_seconds(tv.tv_sec);
timestamp.set_nanos(tv.tv_usec * 1000);
Example 3: Compute Timestamp from Win32 GetSystemTimeAsFileTime()
.
FILETIME ft;
GetSystemTimeAsFileTime(&ft);
UINT64 ticks = (((UINT64)ft.dwHighDateTime) &#lt;&#lt; 32) | ft.dwLowDateTime;
// A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
// is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
Timestamp timestamp;
timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
Example 4: Compute Timestamp from Java System.currentTimeMillis()
.
long millis = System.currentTimeMillis();
Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
.setNanos((int) ((millis % 1000) * 1000000)).build();
Example 5: Compute Timestamp from current time in Python.
timestamp = Timestamp()
timestamp.GetCurrentTime()
JSON Mapping
In JSON format, the Timestamp type is encoded as a string in the
RFC 3339 format. That is, the
format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
where {year} is always expressed using four digits while {month}, {day},
{hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
is required, though only UTC (as indicated by "Z") is presently supported.
For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
01:30 UTC on January 15, 2017.
In JavaScript, one can convert a Date object to this format using the
standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString ]
method. In Python, a standard datetime.datetime
object can be converted
to this format using strftime
with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one
can use the Joda Time's ISODateTimeFormat.dateTime()
to obtain a formatter capable of generating timestamps in this format.
Fields
Non-negative fractions of a second at nanosecond resolution. Negativesecond values with fractions must still have non-negative nanos valuesthat count forward in time. Must be from 0 to 999,999,999inclusive.
Represents seconds of UTC time since Unix epoch1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to9999-12-31T23:59:59Z inclusive.
Scalar Value Types
double
float
int32
Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.
Ruby
Bignum or Fixnum (as required)
int64
Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.
uint32
Uses variable-length encoding.
Ruby
Bignum or Fixnum (as required)
uint64
Uses variable-length encoding.
Ruby
Bignum or Fixnum (as required)
sint32
Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.
Ruby
Bignum or Fixnum (as required)
sint64
Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.
fixed32
Always four bytes. More efficient than uint32 if values are often greater than 2^28.
Ruby
Bignum or Fixnum (as required)
fixed64
Always eight bytes. More efficient than uint64 if values are often greater than 2^56.
sfixed32
Always four bytes.
Ruby
Bignum or Fixnum (as required)
sfixed64
Always eight bytes.
bool
string
A string must always contain UTF-8 encoded or 7-bit ASCII text.
bytes
May contain any arbitrary sequence of bytes.