SUI JSON-RPC read API for system and Move module data
Authentication, rate limits, and error handling
See our JSON-RPC API overview doc.
Reading Move Data
sui_getMoveFunctionArgTypes
Description
Return the argument types of a Move function based on normalized type.
Params
package
:<ObjectID>
- the Move package ID, e.g. '0x2'module
:<string>
- the Move module name, e.g. 'nft_minter'function
:<string>
- the Move function name, e.g. 'mint'
curl https://api.shinami.com/node/v1/<<apiKey>> \
-X POST \
-H 'Content-Type: application/json' \
-d '{ "jsonrpc":"2.0",
"method":"sui_getMoveFunctionArgTypes",
"params":["{{package}}",
"{{module}}",
"{{function}}"],
"id":1}'
Result
Vec<MoveFunctionArgType>
: <[MoveFunctionArgType]>
sui_getNormalizedMoveFunction
Description
Return a structured representation of a Move function. Remember that the API key you use determines the network you query.
Params
package
:<ObjectID>
- the Move package ID, e.g."0x64254dd3675459aae82e063ed6276f99fe23616f75fdb0b683f5d2c6024a0bd7"
module_name
:<string>
- the Move module name, e.g."bird_entries"
function_name
:<string>
- the Move function name, e.g."mineBird"
curl https://api.shinami.com/node/v1 \
-X POST \
-H 'X-API-Key: NODE_SERVICE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc":"2.0",
"method":"sui_getNormalizedMoveFunction",
"params":[
"0x64254dd3675459aae82e063ed6276f99fe23616f75fdb0b683f5d2c6024a0bd7",
"bird_entries",
"mineBird"
],
"id":1
}' | json_pp
import { createSuiClient } from "@shinami/clients/sui";
const nodeClient = createSuiClient(NODE_SERVICE_API_KEY);
const resp = await nodeClient.getNormalizedMoveFunction({
package: "0x64254dd3675459aae82e063ed6276f99fe23616f75fdb0b683f5d2c6024a0bd7",
module: "bird_entries",
function: "mineBird"
});
console.log(resp);
Example Response
{
"id" : 1,
"jsonrpc" : "2.0",
"result" : {
"isEntry" : true,
"parameters" : [
{
"Vector" : "U8"
},
{
"Vector" : "U8"
},
{
"MutableReference" : {
"Struct" : {
"address" : "0x64254dd3675459aae82e063ed6276f99fe23616f75fdb0b683f5d2c6024a0bd7",
"module" : "bird",
"name" : "BirdStore",
"typeArguments" : []
}
}
},
{
"MutableReference" : {
"Struct" : {
"address" : "0x64254dd3675459aae82e063ed6276f99fe23616f75fdb0b683f5d2c6024a0bd7",
"module" : "bird",
"name" : "BirdArchieve",
"typeArguments" : []
}
}
},
{
"Reference" : {
"Struct" : {
"address" : "0x2",
"module" : "clock",
"name" : "Clock",
"typeArguments" : []
}
}
},
{
"Reference" : {
"Struct" : {
"address" : "0x64254dd3675459aae82e063ed6276f99fe23616f75fdb0b683f5d2c6024a0bd7",
"module" : "version",
"name" : "Version",
"typeArguments" : []
}
}
},
{
"MutableReference" : {
"Struct" : {
"address" : "0x2",
"module" : "tx_context",
"name" : "TxContext",
"typeArguments" : []
}
}
}
],
"return" : [],
"typeParameters" : [],
"visibility" : "Public"
}
}
{
visibility: 'Public',
isEntry: true,
typeParameters: [],
parameters: [
{ Vector: 'U8' },
{ Vector: 'U8' },
{ MutableReference: [Object] },
{ MutableReference: [Object] },
{ Reference: [Object] },
{ Reference: [Object] },
{ MutableReference: [Object] }
],
return: []
}
Response fields
Response is of type SuiMoveNormalizedFunction
with fields:
Name | Type | Description |
---|---|---|
isEntry | boolean | Whether or not the function is an entry function |
parameters | SuiMoveNormalizedType[] | The function's parameters. |
return | SuiMoveNormalizedType[] | The function's return values. |
typeParameters | SuiMoveAbilitySet[] | The function's type parameters. |
visibility | SuiMoveVisibility | The function's visibility, e.g. "Private", "Public", or "Friend" |
<SuiMoveNormalizedFunction>
:<[SuiMoveNormalizedFunction]>
- is_entry :
<boolean>
- parameters :
<[SuiMoveNormalizedType]>
- return :
<[SuiMoveNormalizedType]>
- type_parameters :
<[SuiMoveAbilitySet]>
- visibility :
<SuiMoveVisibility>
sui_getNormalizedMoveModule
Description
Return a structured representation of a Move module.
Params
package
:<ObjectID>
- the Move package ID, e.g. '0x2'module_name
:<string>
- the Move module name, e.g. 'nft_minter'
curl https://api.shinami.com/node/v1/<<apiKey>> \
-X POST \
-H 'Content-Type: application/json' \
-d '{ "jsonrpc":"2.0",
"method":"sui_getNormalizedMoveModule",
"params":["{{package}}",
"{{module_name}}",
"id":1}'
Result
<SuiMoveNormalizedModule>
:<[SuiMoveNormalizedModule]>
- address :
<string>
- exposed_functions :
<object>
- file_format_version :
<uint32>
- friends :
<[SuiMoveModuleId]>
- name :
<string>
- structs :
<object>
sui_getNormalizedMoveModulesByPackage
Description
Return the structured representations of all modules in the given package.
Params
package
:<ObjectID>
- the Move package ID, e.g. '0x2'
curl https://api.shinami.com/node/v1/<<apiKey>> \
-X POST \
-H 'Content-Type: application/json' \
-d '{ "jsonrpc":"2.0", "method":"sui_getNormalizedMoveModulesByPackage", "params":["{{package}}"], "id":1}'
Result
BTreeMap<String,SuiMoveNormalizedModule>
: <object>
sui_getNormalizedMoveStruct
Description
Return a structured representation of a Move struct.
Params
package
:<ObjectID>
- the Move package ID, e.g. '0x2'module_name
:<string>
- the Move module name, e.g. 'nft_minter'struct_name
:<string>
- the struct name
curl https://api.shinami.com/node/v1/<<apiKey>> \
-X POST \
-H 'Content-Type: application/json' \
-d '{ "jsonrpc":"2.0",
"method":"sui_getNormalizedMoveStruct",
"params":["{{package}}",
"{{module_name}}",
"{{struct_name}}"],
"id":1}'
Result
<SuiMoveNormalizedStruct>
:<[SuiMoveNormalizedStruct]>
- abilities :
<SuiMoveAbilitySet>
- fields :
<[SuiMoveNormalizedField]>
- type_parameters :
<[SuiMoveStructTypeParameter]>
Reading Name Service Data
suix_resolveNameServiceAddress
Description
Return the address the given name resolves to on the network, if any. Note that there is a different name registry for Testnet and Mainnet, so a name that resolves on one network may not on another.
Request Parameters
Name | Type | Description |
---|---|---|
name | string | The name you want resolved into an address. |
Example Request Template
The TypeScript example uses the Shinami Clients SDK.
curl https://api.shinami.com/node/v1 \
-X POST \
-H 'X-API-Key: YOUR_NODE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc":"2.0",
"method":"suix_resolveNameServiceAddress",
"params":["a-a-ron.sui"],
"id":1
}'
import { createSuiClient } from "@shinami/clients/sui";
const nodeClient = createSuiClient(YOUR_NODE_API_KEY);
await nodeClient.resolveNameServiceAddress({name: "a-a-ron.sui"});
Example Response
{
"id" : 1,
"jsonrpc" : "2.0",
"result" : "0x9b1c32507cbb2dd34dc46fc02550e61434c36d3d1f3830c9903bb61c06d237da"
}
"0x9b1c32507cbb2dd34dc46fc02550e61434c36d3d1f3830c9903bb61c06d237da"
Result value
Type | Description |
---|---|
string || null | The address the name resolves to on the network, if found. |
suix_resolveNameServiceNames
Description
Return the names the given address resolves to on the network, if any. If multiple names are resolved, the first one is the primary name. Note that there is a different name registry for Testnet and Mainnet, so an address that resolves on one network may not on another.
Request Parameters
Name | Type | Description |
---|---|---|
address | string | The Sui address you want resolved into a list of associated names. |
cursor | string | (Optional) The object id to start the results from. Used for paging through the results when multiple requests are needed to get all the associated names. |
limit | integer | (_Optional) _Maximum number of results returned per request. |
(SDK-only) format | string | (Optional) 'at' | 'dot' : the representation you wish to receive. For 'sam' , 'at' = '@sam' and 'dot' = 'sam.sui' |
Example Request Template
The TypeScript example uses the Shinami Clients SDK.
curl https://api.shinami.com/node/v1 \
-X POST \
-H 'X-API-Key: YOUR_NODE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc":"2.0",
"method":"suix_resolveNameServiceNames",
"params":[
"SUI_ADDRESS",
"OPTIONAL_CURSOR",
OPTIONAL_LIMIT,
"OPTIONAL_FORMAT"
],
"id":1
}'
import { createSuiClient } from "@shinami/clients/sui";
const nodeClient = createSuiClient(YOUR_NODE_API_KEY);
await nodeClient.resolveNameServiceNames({
address: "0x9b1c32507cbb2dd34dc46fc02550e61434c36d3d1f3830c9903bb61c06d237da",
cursor: undefined,
limit: undefined,
format: 'at'
});
Example Response
{
"id" : 1,
"jsonrpc" : "2.0",
"result" : {
"data" : [
"a-a-ron.sui"
],
"hasNextPage" : false,
"nextCursor" : null
}
}
{
hasNextPage: false,
nextCursor: null,
data: [ '@a-a-ron' ]
}
Response Fields
Response is of type ResolvedNameServiceNames
with fields:
Name | Type | Description |
---|---|---|
data | string[ ] | The name(s) the address resolves to on the network, if found. |
hasNextPage | boolean | Whether or not there is at least one more page of results. |
nextCursor | string | null | The value to use as the cursor parameter for the next request to get additional results. To be used if hasNextPage == true . |
Reading Sui Network Data
sui_getChainIdentifier
Description
Return the chain's identifier
Params
curl https://api.shinami.com/node/v1/<<apiKey>> \
-X POST \
-H 'Content-Type: application/json' \
-d '{ "jsonrpc":"2.0", "method":"sui_getChainIdentifier", "params":[], "id":1}'
Result
String
:<string>
sui_getCheckpoint
Description
Return a checkpoint's transaction digests and other information.
Request Parameters
Name | Type | Description |
---|---|---|
id | string | The identifier of the checkpoint you want data for. Can use either checkpoint digest, or checkpoint sequence number (without commas) as input. |
Example Request
The TypeScript example uses the Shinami Clients SDK.
curl https://api.shinami.com/node/v1 \
-X POST \
-H 'X-API-Key: YOUR_NODE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc":"2.0",
"method":"sui_getCheckpoint",
"params":["86884878"],
"id":1
}'
import { createSuiClient } from "@shinami/clients/sui";
const nodeClient = createSuiClient(YOUR_NODE_API_KEY);
await nodeClient.getCheckpoint({
id: "CD9Z9kMntQm8EPyaMzoFQgTdTdG4SsmyXFNBQvhzjtgv"
});
Example Response
{
"id" : 1,
"jsonrpc" : "2.0",
"result" : {
"checkpointCommitments" : [],
"digest" : "CD9Z9kMntQm8EPyaMzoFQgTdTdG4SsmyXFNBQvhzjtgv",
"epoch" : "601",
"epochRollingGasCostSummary" : {
"computationCost" : "9172043437591",
"nonRefundableStorageFee" : "1293217708556",
"storageCost" : "130256974544800",
"storageRebate" : "128028553147044"
},
"networkTotalTransactions" : "2743265116",
"previousDigest" : "9UNUjSEWZyLqkVGSdu4RpgnqkvqZ2zm1Fe7MkLjvz8yM",
"sequenceNumber" : "86884878",
"timestampMs" : "1733332731510",
"transactions" : [
"8Xm7Gu5s7MHFbvD95pyNrEFCV7pxCjv641ESJQNY9UFu",
"2Wmc2qMqoNWpKpSWdHGHXtcaQsGj6ovEQRMuHwcz2CYQ",
"ESo81dVEpUXNnCxeEx4D5GADy48843YtExMLg1Ymc72X",
"GMeegZqHMWo3qKVp6TNTtBJC6xjbgNU2qNbcm4fRijXz",
"Dh42UiV8rKFiDZ4c2v8HBvaKexNxGqvyjUuV2CLTyiuP",
"BKuqKyyUnC86k4EZWMVZiA26HdyuPc1M7goyapgzmooS",
"DV9WBwUfNPFP6deXkrThJ8U1NASpGunNkrjVrq2L4ZX5",
"H8sW4B9wNSVcQCn5xGpBrF5ots73DByq4fFaTCaaH99J",
"8KBuKc2ywhBHVrUcw4u4CuUxxkQ8groD8hhmGUYBBsJs",
"8UmxXmvdeCDazRw9qDn27CdEwBBdAL1fZba8tjYjDB3p"
],
"validatorSignature" : "psbYoNGUNzLsmZrlQaJSb8bKUQ1N+vem9sbCgCe9wYzMfk7+7KNEdIP8njGHW/8I"
}
}
{
epoch: '601',
sequenceNumber: '86884878',
digest: 'CD9Z9kMntQm8EPyaMzoFQgTdTdG4SsmyXFNBQvhzjtgv',
networkTotalTransactions: '2743265116',
previousDigest: '9UNUjSEWZyLqkVGSdu4RpgnqkvqZ2zm1Fe7MkLjvz8yM',
epochRollingGasCostSummary: {
computationCost: '9172043437591',
storageCost: '130256974544800',
storageRebate: '128028553147044',
nonRefundableStorageFee: '1293217708556'
},
timestampMs: '1733332731510',
transactions: [
'8Xm7Gu5s7MHFbvD95pyNrEFCV7pxCjv641ESJQNY9UFu',
'2Wmc2qMqoNWpKpSWdHGHXtcaQsGj6ovEQRMuHwcz2CYQ',
'ESo81dVEpUXNnCxeEx4D5GADy48843YtExMLg1Ymc72X',
'GMeegZqHMWo3qKVp6TNTtBJC6xjbgNU2qNbcm4fRijXz',
'Dh42UiV8rKFiDZ4c2v8HBvaKexNxGqvyjUuV2CLTyiuP',
'BKuqKyyUnC86k4EZWMVZiA26HdyuPc1M7goyapgzmooS',
'DV9WBwUfNPFP6deXkrThJ8U1NASpGunNkrjVrq2L4ZX5',
'H8sW4B9wNSVcQCn5xGpBrF5ots73DByq4fFaTCaaH99J',
'8KBuKc2ywhBHVrUcw4u4CuUxxkQ8groD8hhmGUYBBsJs',
'8UmxXmvdeCDazRw9qDn27CdEwBBdAL1fZba8tjYjDB3p'
],
checkpointCommitments: [],
validatorSignature: 'psbYoNGUNzLsmZrlQaJSb8bKUQ1N+vem9sbCgCe9wYzMfk7+7KNEdIP8njGHW/8I'
}
Result value
Type Checkpoint
with fields:
Name | Type | Description |
---|---|---|
checkpointCommitments | CheckpointCommitment[] | Commitments to checkpoint state |
digest | string | Checkpoint digest |
epoch | string | Checkpoint's epoch ID |
endOfEpochData? | EndOfEpochData | null | (optional) Presented only on the final checkpoint of the epoch. |
epochRollingGasCostSummary | GasCostSummary | The running total gas costs of all transactions included in the current epoch so far until this checkpoint. |
networkTotalTransactions | string | Total number of transactions committed since genesis, including those in this checkpoint. |
previousDigest? | string | null | (optional) Digest of the previous checkpoint |
sequenceNumber | string | Checkpoint sequence number. |
timestampMs | string | Timestamp of the checkpoint - number of milliseconds from the Unix epoch Checkpoint timestamps are monotonic, but not strongly monotonic - subsequent checkpoints can have same timestamp if they originate from the same underlining consensus commit |
transactions | string[] | Digests of the transactions in the checkpoint. |
validatorSignature | string | Validator Signature |
sui_getCheckpoints
Description
Return contents of a checkpoint based on checkpoint content digest
Params
cursor
:<BigInt_for_uint64>
- an optional paging cursor. If provided, the query will start from the next item after the specified cursor. Default to start from the first item if not specifiedlimit
:<uint>
- maximum items returned per page, default to maximum limit if not specifieddescending_order
:<boolean>
- query result ordering, default to false (ascending order), oldest record first
curl https://api.shinami.com/node/v1/<<apiKey>> \
-X POST \
-H 'Content-Type: application/json' \
-d '{ "jsonrpc":"2.0",
"method":"sui_getCheckpoints",
"params":[{{cursor}},
{{limit}},
{{descending_order}}],
"id":1}'
Result
CheckpointPage
:<Page_for_Checkpoint_and_BigInt_for_uint64>
sui_getLatestCheckpointSequenceNumber
Description
Return the sequence number of the latest checkpoint of transactions that has been executed by the Fullnode.
Example request
curl https://api.shinami.com/node/v1 \
-X POST \
-H 'X-API-Key: NODE_SERVICE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc":"2.0",
"method":"sui_getLatestCheckpointSequenceNumber",
"params":[],
"id":1
}' | json_pp
import { createSuiClient } from "@shinami/clients/sui";
const nodeClient = createSuiClient(NODE_SERVICE_API_KEY);
const resp = await nodeClient.getLatestCheckpointSequenceNumber();
console.log(resp);
Example response
{
"jsonrpc":"2.0",
"result":"82251747",
"id":1
}
82251895
Response
BigInt<u64>
: The sequence number of the latest checkpoint that has been executed by the Fullnode.
sui_getProtocolConfig
Description
Return the protocol config table for the given version number. If the version number is not specified, If none is specified, the node uses the version of the latest epoch it has processed.
Params
Name | Type | Description |
---|---|---|
version | string | (Optional) Protocol version specifier. If omitted, the latest protocol config table for the node will be returned. |
Example Request
curl https://api.shinami.com/node/v1 \
-X POST \
-H 'X-API-Key: sui_mainnet_78823fb4fde42954c8ec8925fb1f7614' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc":"2.0",
"method":"sui_getProtocolConfig",
"params":["68"],
"id":1
}' | json_pp
import { createSuiClient } from "@shinami/clients/sui";
const nodeClient = createSuiClient(NODE_SERVICE_API_KEY);
const resp = await nodeClient.getProtocolConfig({
version: "68"
});
console.log(resp);
Example Response
{
"id" : 1,
"jsonrpc" : "2.0",
"result" : {
"attributes" : {
"address_from_bytes_cost_base" : {
"u64" : "52"
},
"address_from_u256_cost_base" : {
"u64" : "52"
},
"address_to_u256_cost_base" : {
"u64" : "52"
},
"base_tx_cost_fixed" : {
"u64" : "1000"
},
"base_tx_cost_per_byte" : {
"u64" : "0"
},
"bcs_failure_cost" : {
"u64" : "52"
},
"bcs_legacy_min_output_size_cost" : {
"u64" : "1"
},
"bcs_per_byte_serialized_cost" : {
"u64" : "2"
},
"binary_address_identifiers" : {
"u16" : "100"
},
"binary_constant_pool" : {
"u16" : "4000"
},
"binary_enum_def_instantiations" : null,
"binary_enum_defs" : null,
"binary_field_handles" : {
"u16" : "500"
},
"binary_field_instantiations" : {
"u16" : "250"
},
"binary_friend_decls" : {
"u16" : "100"
},
"binary_function_defs" : {
"u16" : "1000"
},
"binary_function_handles" : {
"u16" : "1500"
},
"binary_function_instantiations" : {
"u16" : "750"
},
"binary_identifiers" : {
"u16" : "10000"
},
"binary_module_handles" : {
"u16" : "100"
},
"binary_signatures" : {
"u16" : "1000"
},
"binary_struct_def_instantiations" : {
"u16" : "100"
},
"binary_struct_defs" : {
"u16" : "200"
},
"binary_struct_handles" : {
"u16" : "300"
},
"binary_variant_handles" : null,
"binary_variant_instantiation_handles" : null,
"bls12381_bls12381_min_pk_verify_cost_base" : {
"u64" : "52"
},
"bls12381_bls12381_min_pk_verify_msg_cost_per_block" : {
"u64" : "2"
},
"bls12381_bls12381_min_pk_verify_msg_cost_per_byte" : {
"u64" : "2"
},
"bls12381_bls12381_min_sig_verify_cost_base" : {
"u64" : "52"
},
"bls12381_bls12381_min_sig_verify_msg_cost_per_block" : {
"u64" : "2"
},
"bls12381_bls12381_min_sig_verify_msg_cost_per_byte" : {
"u64" : "2"
},
"bridge_should_try_to_finalize_committee" : {
"bool" : "true"
},
"buffer_stake_for_protocol_upgrade_bps" : {
"u64" : "5000"
},
"check_zklogin_id_cost_base" : {
"u64" : "200"
},
"check_zklogin_issuer_cost_base" : {
"u64" : "200"
},
"checkpoint_summary_version_specific_data" : {
"u64" : "1"
},
"config_read_setting_impl_cost_base" : {
"u64" : "100"
},
"config_read_setting_impl_cost_per_byte" : {
"u64" : "40"
},
"consensus_bad_nodes_stake_threshold" : {
"u64" : "20"
},
"consensus_gc_depth" : null,
"consensus_max_num_transactions_in_block" : {
"u64" : "512"
},
"consensus_max_transaction_size_bytes" : {
"u64" : "262144"
},
"consensus_max_transactions_in_block_bytes" : {
"u64" : "524288"
},
"crypto_invalid_arguments_cost" : {
"u64" : "100"
},
"debug_print_base_cost" : {
"u64" : "52"
},
"debug_print_stack_trace_base_cost" : {
"u64" : "52"
},
"dynamic_field_add_child_object_cost_base" : {
"u64" : "100"
},
"dynamic_field_add_child_object_struct_tag_cost_per_byte" : {
"u64" : "10"
},
"dynamic_field_add_child_object_type_cost_per_byte" : {
"u64" : "10"
},
"dynamic_field_add_child_object_value_cost_per_byte" : {
"u64" : "10"
},
"dynamic_field_borrow_child_object_child_ref_cost_per_byte" : {
"u64" : "10"
},
"dynamic_field_borrow_child_object_cost_base" : {
"u64" : "100"
},
"dynamic_field_borrow_child_object_type_cost_per_byte" : {
"u64" : "10"
},
"dynamic_field_has_child_object_cost_base" : {
"u64" : "100"
},
"dynamic_field_has_child_object_with_ty_cost_base" : {
"u64" : "100"
},
"dynamic_field_has_child_object_with_ty_type_cost_per_byte" : {
"u64" : "2"
},
"dynamic_field_has_child_object_with_ty_type_tag_cost_per_byte" : {
"u64" : "2"
},
"dynamic_field_hash_type_and_key_cost_base" : {
"u64" : "100"
},
"dynamic_field_hash_type_and_key_type_cost_per_byte" : {
"u64" : "2"
},
"dynamic_field_hash_type_and_key_type_tag_cost_per_byte" : {
"u64" : "2"
},
"dynamic_field_hash_type_and_key_value_cost_per_byte" : {
"u64" : "2"
},
"dynamic_field_remove_child_object_child_cost_per_byte" : {
"u64" : "2"
},
"dynamic_field_remove_child_object_cost_base" : {
"u64" : "100"
},
"dynamic_field_remove_child_object_type_cost_per_byte" : {
"u64" : "2"
},
"ecdsa_k1_decompress_pubkey_cost_base" : {
"u64" : "52"
},
"ecdsa_k1_ecrecover_keccak256_cost_base" : {
"u64" : "52"
},
"ecdsa_k1_ecrecover_keccak256_msg_cost_per_block" : {
"u64" : "2"
},
"ecdsa_k1_ecrecover_keccak256_msg_cost_per_byte" : {
"u64" : "2"
},
"ecdsa_k1_ecrecover_sha256_cost_base" : {
"u64" : "52"
},
"ecdsa_k1_ecrecover_sha256_msg_cost_per_block" : {
"u64" : "2"
},
"ecdsa_k1_ecrecover_sha256_msg_cost_per_byte" : {
"u64" : "2"
},
"ecdsa_k1_secp256k1_verify_keccak256_cost_base" : {
"u64" : "52"
},
"ecdsa_k1_secp256k1_verify_keccak256_msg_cost_per_block" : {
"u64" : "2"
},
"ecdsa_k1_secp256k1_verify_keccak256_msg_cost_per_byte" : {
"u64" : "2"
},
"ecdsa_k1_secp256k1_verify_sha256_cost_base" : {
"u64" : "52"
},
"ecdsa_k1_secp256k1_verify_sha256_msg_cost_per_block" : {
"u64" : "2"
},
"ecdsa_k1_secp256k1_verify_sha256_msg_cost_per_byte" : {
"u64" : "2"
},
"ecdsa_r1_ecrecover_keccak256_cost_base" : {
"u64" : "52"
},
"ecdsa_r1_ecrecover_keccak256_msg_cost_per_block" : {
"u64" : "2"
},
"ecdsa_r1_ecrecover_keccak256_msg_cost_per_byte" : {
"u64" : "2"
},
"ecdsa_r1_ecrecover_sha256_cost_base" : {
"u64" : "52"
},
"ecdsa_r1_ecrecover_sha256_msg_cost_per_block" : {
"u64" : "2"
},
"ecdsa_r1_ecrecover_sha256_msg_cost_per_byte" : {
"u64" : "2"
},
"ecdsa_r1_secp256r1_verify_keccak256_cost_base" : {
"u64" : "52"
},
"ecdsa_r1_secp256r1_verify_keccak256_msg_cost_per_block" : {
"u64" : "2"
},
"ecdsa_r1_secp256r1_verify_keccak256_msg_cost_per_byte" : {
"u64" : "2"
},
"ecdsa_r1_secp256r1_verify_sha256_cost_base" : {
"u64" : "52"
},
"ecdsa_r1_secp256r1_verify_sha256_msg_cost_per_block" : {
"u64" : "2"
},
"ecdsa_r1_secp256r1_verify_sha256_msg_cost_per_byte" : {
"u64" : "2"
},
"ecvrf_ecvrf_verify_alpha_string_cost_per_block" : {
"u64" : "2"
},
"ecvrf_ecvrf_verify_alpha_string_cost_per_byte" : {
"u64" : "2"
},
"ecvrf_ecvrf_verify_cost_base" : {
"u64" : "52"
},
"ed25519_ed25519_verify_cost_base" : {
"u64" : "52"
},
"ed25519_ed25519_verify_msg_cost_per_block" : {
"u64" : "2"
},
"ed25519_ed25519_verify_msg_cost_per_byte" : {
"u64" : "2"
},
"event_emit_cost_base" : {
"u64" : "52"
},
"event_emit_output_cost_per_byte" : {
"u64" : "10"
},
"event_emit_tag_size_derivation_cost_per_byte" : {
"u64" : "5"
},
"event_emit_value_size_derivation_cost_per_byte" : {
"u64" : "2"
},
"execution_version" : {
"u64" : "3"
},
"gas_budget_based_txn_cost_absolute_cap_commit_count" : {
"u64" : "50"
},
"gas_budget_based_txn_cost_cap_factor" : {
"u64" : "400000"
},
"gas_model_version" : {
"u64" : "8"
},
"gas_rounding_step" : {
"u64" : "1000"
},
"groth16_prepare_verifying_key_bls12381_cost_base" : {
"u64" : "52"
},
"groth16_prepare_verifying_key_bn254_cost_base" : {
"u64" : "52"
},
"groth16_verify_groth16_proof_internal_bls12381_cost_base" : {
"u64" : "52"
},
"groth16_verify_groth16_proof_internal_bls12381_cost_per_public_input" : {
"u64" : "2"
},
"groth16_verify_groth16_proof_internal_bn254_cost_base" : {
"u64" : "52"
},
"groth16_verify_groth16_proof_internal_bn254_cost_per_public_input" : {
"u64" : "2"
},
"groth16_verify_groth16_proof_internal_public_input_cost_per_byte" : {
"u64" : "2"
},
"group_ops_bls12381_decode_g1_cost" : {
"u64" : "52"
},
"group_ops_bls12381_decode_g2_cost" : {
"u64" : "52"
},
"group_ops_bls12381_decode_gt_cost" : {
"u64" : "52"
},
"group_ops_bls12381_decode_scalar_cost" : {
"u64" : "52"
},
"group_ops_bls12381_g1_add_cost" : {
"u64" : "52"
},
"group_ops_bls12381_g1_div_cost" : {
"u64" : "52"
},
"group_ops_bls12381_g1_hash_to_base_cost" : {
"u64" : "52"
},
"group_ops_bls12381_g1_hash_to_cost_per_byte" : {
"u64" : "2"
},
"group_ops_bls12381_g1_msm_base_cost" : {
"u64" : "52"
},
"group_ops_bls12381_g1_msm_base_cost_per_input" : {
"u64" : "52"
},
"group_ops_bls12381_g1_mul_cost" : {
"u64" : "52"
},
"group_ops_bls12381_g1_sub_cost" : {
"u64" : "52"
},
"group_ops_bls12381_g1_to_uncompressed_g1_cost" : {
"u64" : "26"
},
"group_ops_bls12381_g2_add_cost" : {
"u64" : "52"
},
"group_ops_bls12381_g2_div_cost" : {
"u64" : "52"
},
"group_ops_bls12381_g2_hash_to_base_cost" : {
"u64" : "52"
},
"group_ops_bls12381_g2_hash_to_cost_per_byte" : {
"u64" : "2"
},
"group_ops_bls12381_g2_msm_base_cost" : {
"u64" : "52"
},
"group_ops_bls12381_g2_msm_base_cost_per_input" : {
"u64" : "52"
},
"group_ops_bls12381_g2_mul_cost" : {
"u64" : "52"
},
"group_ops_bls12381_g2_sub_cost" : {
"u64" : "52"
},
"group_ops_bls12381_gt_add_cost" : {
"u64" : "52"
},
"group_ops_bls12381_gt_div_cost" : {
"u64" : "52"
},
"group_ops_bls12381_gt_mul_cost" : {
"u64" : "52"
},
"group_ops_bls12381_gt_sub_cost" : {
"u64" : "52"
},
"group_ops_bls12381_msm_max_len" : {
"u32" : "32"
},
"group_ops_bls12381_pairing_cost" : {
"u64" : "52"
},
"group_ops_bls12381_scalar_add_cost" : {
"u64" : "52"
},
"group_ops_bls12381_scalar_div_cost" : {
"u64" : "52"
},
"group_ops_bls12381_scalar_mul_cost" : {
"u64" : "52"
},
"group_ops_bls12381_scalar_sub_cost" : {
"u64" : "52"
},
"group_ops_bls12381_uncompressed_g1_sum_base_cost" : {
"u64" : "26"
},
"group_ops_bls12381_uncompressed_g1_sum_cost_per_term" : {
"u64" : "13"
},
"group_ops_bls12381_uncompressed_g1_sum_max_terms" : {
"u64" : "2000"
},
"group_ops_bls12381_uncompressed_g1_to_g1_cost" : {
"u64" : "52"
},
"hash_blake2b256_cost_base" : {
"u64" : "52"
},
"hash_blake2b256_data_cost_per_block" : {
"u64" : "2"
},
"hash_blake2b256_data_cost_per_byte" : {
"u64" : "2"
},
"hash_keccak256_cost_base" : {
"u64" : "52"
},
"hash_keccak256_data_cost_per_block" : {
"u64" : "2"
},
"hash_keccak256_data_cost_per_byte" : {
"u64" : "2"
},
"hash_sha2_256_base_cost" : {
"u64" : "52"
},
"hash_sha2_256_legacy_min_input_len_cost" : {
"u64" : "1"
},
"hash_sha2_256_per_byte_cost" : {
"u64" : "2"
},
"hash_sha3_256_base_cost" : {
"u64" : "52"
},
"hash_sha3_256_legacy_min_input_len_cost" : {
"u64" : "1"
},
"hash_sha3_256_per_byte_cost" : {
"u64" : "2"
},
"hmac_hmac_sha3_256_cost_base" : {
"u64" : "52"
},
"hmac_hmac_sha3_256_input_cost_per_block" : {
"u64" : "2"
},
"hmac_hmac_sha3_256_input_cost_per_byte" : {
"u64" : "2"
},
"max_accumulated_randomness_txn_cost_per_object_in_mysticeti_commit" : {
"u64" : "3700000"
},
"max_accumulated_txn_cost_per_object_in_mysticeti_commit" : {
"u64" : "18500000"
},
"max_accumulated_txn_cost_per_object_in_narwhal_commit" : {
"u64" : "40"
},
"max_age_of_jwk_in_epochs" : {
"u64" : "1"
},
"max_arguments" : {
"u32" : "512"
},
"max_back_edges_per_function" : {
"u64" : "10000"
},
"max_back_edges_per_module" : {
"u64" : "10000"
},
"max_basic_blocks" : {
"u64" : "1024"
},
"max_checkpoint_size_bytes" : {
"u64" : "31457280"
},
"max_deferral_rounds_for_congestion_control" : {
"u64" : "10"
},
"max_dependency_depth" : {
"u64" : "100"
},
"max_event_emit_size" : {
"u64" : "256000"
},
"max_event_emit_size_total" : {
"u64" : "65536000"
},
"max_fields_in_struct" : {
"u64" : "32"
},
"max_function_definitions" : {
"u64" : "1000"
},
"max_function_parameters" : {
"u64" : "128"
},
"max_gas_computation_bucket" : {
"u64" : "5000000"
},
"max_gas_payment_objects" : {
"u32" : "256"
},
"max_gas_price" : {
"u64" : "100000"
},
"max_generic_instantiation_length" : {
"u64" : "32"
},
"max_input_objects" : {
"u64" : "2048"
},
"max_jwk_votes_per_validator_per_epoch" : {
"u64" : "240"
},
"max_loop_depth" : {
"u64" : "5"
},
"max_meter_ticks_per_module" : {
"u64" : "16000000"
},
"max_meter_ticks_per_package" : {
"u64" : "16000000"
},
"max_modules_in_publish" : {
"u32" : "64"
},
"max_move_enum_variants" : null,
"max_move_identifier_len" : {
"u64" : "128"
},
"max_move_object_size" : {
"u64" : "256000"
},
"max_move_package_size" : {
"u64" : "102400"
},
"max_move_value_depth" : {
"u64" : "128"
},
"max_move_vector_len" : {
"u64" : "262144"
},
"max_num_deleted_move_object_ids" : {
"u64" : "2048"
},
"max_num_deleted_move_object_ids_system_tx" : {
"u64" : "32768"
},
"max_num_event_emit" : {
"u64" : "1024"
},
"max_num_new_move_object_ids" : {
"u64" : "2048"
},
"max_num_new_move_object_ids_system_tx" : {
"u64" : "32768"
},
"max_num_transferred_move_object_ids" : {
"u64" : "2048"
},
"max_num_transferred_move_object_ids_system_tx" : {
"u64" : "32768"
},
"max_package_dependencies" : {
"u32" : "32"
},
"max_programmable_tx_commands" : {
"u32" : "1024"
},
"max_publish_or_upgrade_per_ptb" : {
"u64" : "5"
},
"max_pure_argument_size" : {
"u32" : "16384"
},
"max_push_size" : {
"u64" : "10000"
},
"max_serialized_tx_effects_size_bytes" : {
"u64" : "524288"
},
"max_serialized_tx_effects_size_bytes_system_tx" : {
"u64" : "8388608"
},
"max_size_written_objects" : {
"u64" : "5000000"
},
"max_size_written_objects_system_tx" : {
"u64" : "50000000"
},
"max_soft_bundle_size" : {
"u64" : "5"
},
"max_struct_definitions" : {
"u64" : "200"
},
"max_transactions_per_checkpoint" : {
"u64" : "10000"
},
"max_tx_gas" : {
"u64" : "50000000000"
},
"max_tx_size_bytes" : {
"u64" : "131072"
},
"max_txn_cost_overage_per_object_in_commit" : {
"u64" : "18446744073709551615"
},
"max_type_argument_depth" : {
"u32" : "16"
},
"max_type_arguments" : {
"u32" : "16"
},
"max_type_nodes" : {
"u64" : "256"
},
"max_type_to_layout_nodes" : {
"u64" : "512"
},
"max_value_stack_size" : {
"u64" : "1024"
},
"max_verifier_meter_ticks_per_function" : {
"u64" : "16000000"
},
"min_checkpoint_interval_ms" : {
"u64" : "200"
},
"min_move_binary_format_version" : {
"u32" : "6"
},
"move_binary_format_version" : {
"u32" : "7"
},
"obj_access_cost_delete_per_byte" : {
"u64" : "40"
},
"obj_access_cost_mutate_per_byte" : {
"u64" : "40"
},
"obj_access_cost_read_per_byte" : {
"u64" : "15"
},
"obj_access_cost_verify_per_byte" : {
"u64" : "200"
},
"obj_data_cost_refundable" : {
"u64" : "100"
},
"obj_metadata_cost_non_refundable" : {
"u64" : "50"
},
"object_borrow_uid_cost_base" : {
"u64" : "52"
},
"object_delete_impl_cost_base" : {
"u64" : "52"
},
"object_record_new_uid_cost_base" : {
"u64" : "52"
},
"object_runtime_max_num_cached_objects" : {
"u64" : "1000"
},
"object_runtime_max_num_cached_objects_system_tx" : {
"u64" : "16000"
},
"object_runtime_max_num_store_entries" : {
"u64" : "1000"
},
"object_runtime_max_num_store_entries_system_tx" : {
"u64" : "16000"
},
"package_publish_cost_fixed" : {
"u64" : "1000"
},
"package_publish_cost_per_byte" : {
"u64" : "80"
},
"poseidon_bn254_cost_base" : null,
"poseidon_bn254_cost_per_block" : null,
"random_beacon_dkg_timeout_round" : {
"u32" : "3000"
},
"random_beacon_dkg_version" : {
"u64" : "1"
},
"random_beacon_min_round_interval_ms" : {
"u64" : "500"
},
"random_beacon_reduction_allowed_delta" : {
"u16" : "800"
},
"random_beacon_reduction_lower_bound" : {
"u32" : "500"
},
"reward_slashing_rate" : {
"u64" : "10000"
},
"storage_fund_reinvest_rate" : {
"u64" : "500"
},
"storage_gas_price" : {
"u64" : "76"
},
"storage_rebate_rate" : {
"u64" : "9900"
},
"string_check_utf8_base_cost" : {
"u64" : "52"
},
"string_check_utf8_per_byte_cost" : {
"u64" : "2"
},
"string_index_of_base_cost" : {
"u64" : "52"
},
"string_index_of_per_byte_pattern_cost" : {
"u64" : "2"
},
"string_index_of_per_byte_searched_cost" : {
"u64" : "2"
},
"string_is_char_boundary_base_cost" : {
"u64" : "52"
},
"string_sub_string_base_cost" : {
"u64" : "52"
},
"string_sub_string_per_byte_cost" : {
"u64" : "2"
},
"transfer_freeze_object_cost_base" : {
"u64" : "52"
},
"transfer_receive_object_cost_base" : {
"u64" : "52"
},
"transfer_share_object_cost_base" : {
"u64" : "52"
},
"transfer_transfer_internal_cost_base" : {
"u64" : "52"
},
"tx_context_derive_id_cost_base" : {
"u64" : "52"
},
"type_name_get_base_cost" : {
"u64" : "52"
},
"type_name_get_per_byte_cost" : {
"u64" : "2"
},
"types_is_one_time_witness_cost_base" : {
"u64" : "52"
},
"types_is_one_time_witness_type_cost_per_byte" : {
"u64" : "2"
},
"types_is_one_time_witness_type_tag_cost_per_byte" : {
"u64" : "2"
},
"validator_validate_metadata_cost_base" : {
"u64" : "52"
},
"validator_validate_metadata_data_cost_per_byte" : {
"u64" : "2"
},
"vdf_hash_to_input_cost" : null,
"vdf_verify_vdf_cost" : null,
"vector_borrow_base_cost" : {
"u64" : "52"
},
"vector_destroy_empty_base_cost" : {
"u64" : "52"
},
"vector_empty_base_cost" : {
"u64" : "52"
},
"vector_length_base_cost" : {
"u64" : "52"
},
"vector_pop_back_base_cost" : {
"u64" : "52"
},
"vector_push_back_base_cost" : {
"u64" : "52"
},
"vector_push_back_legacy_per_abstract_memory_unit_cost" : {
"u64" : "2"
},
"vector_swap_base_cost" : {
"u64" : "52"
}
},
"featureFlags" : {
"accept_zklogin_in_multisig" : true,
"advance_epoch_start_time_in_safe_mode" : true,
"advance_to_highest_supported_protocol_version" : true,
"allow_receiving_object_id" : true,
"authority_capabilities_v2" : false,
"ban_entry_init" : true,
"bridge" : true,
"commit_root_state_digest" : true,
"consensus_distributed_vote_scoring_strategy" : true,
"consensus_order_end_of_epoch_last" : true,
"consensus_round_prober" : true,
"disable_invariant_violation_check_in_swap_loc" : true,
"disallow_adding_abilities_on_upgrade" : true,
"disallow_change_struct_type_params_on_upgrade" : true,
"disallow_new_modules_in_deps_only_packages" : true,
"enable_coin_deny_list" : true,
"enable_coin_deny_list_v2" : true,
"enable_effects_v2" : true,
"enable_group_ops_native_function_msm" : false,
"enable_group_ops_native_functions" : true,
"enable_jwk_consensus_updates" : true,
"enable_poseidon" : false,
"enable_vdf" : false,
"end_of_epoch_transaction_supported" : true,
"fresh_vm_on_framework_upgrade" : true,
"hardened_otw_check" : true,
"include_consensus_digest_in_prologue" : true,
"loaded_child_object_format" : true,
"loaded_child_object_format_type" : true,
"loaded_child_objects_fixed" : true,
"missing_type_is_compatibility_error" : true,
"mysticeti_fastpath" : false,
"mysticeti_leader_scoring_and_schedule" : true,
"mysticeti_use_committed_subdag_digest" : true,
"narwhal_certificate_v2" : true,
"narwhal_new_leader_election_schedule" : true,
"narwhal_versioned_metadata" : true,
"no_extraneous_module_bytes" : true,
"package_digest_hash_module" : true,
"package_upgrades" : true,
"passkey_auth" : false,
"prepend_prologue_tx_in_consensus_commit_in_checkpoints" : true,
"random_beacon" : true,
"receive_objects" : true,
"recompute_has_public_transfer_in_execution" : true,
"record_consensus_determined_version_assignments_in_prologue" : true,
"reject_mutable_random_on_entry_functions" : true,
"relocate_event_module" : true,
"reshare_at_same_initial_version" : true,
"resolve_abort_locations_to_package_id" : true,
"rethrow_serialization_type_layout_errors" : true,
"scoring_decision_with_validity_cutoff" : true,
"shared_object_deletion" : true,
"simple_conservation_checks" : true,
"simplified_unwrap_then_delete" : true,
"soft_bundle" : true,
"throughput_aware_consensus_submission" : false,
"txn_base_cost_as_multiplier" : true,
"uncompressed_g1_group_elements" : false,
"upgraded_multisig_supported" : true,
"validate_identifier_inputs" : true,
"verify_legacy_zklogin_address" : true,
"zklogin_auth" : true
},
"maxSupportedProtocolVersion" : "68",
"minSupportedProtocolVersion" : "1",
"protocolVersion" : "68"
}
}
{
minSupportedProtocolVersion: '1',
maxSupportedProtocolVersion: '68',
protocolVersion: '68',
featureFlags: {
accept_zklogin_in_multisig: true,
advance_epoch_start_time_in_safe_mode: true,
advance_to_highest_supported_protocol_version: true,
allow_receiving_object_id: true,
authority_capabilities_v2: false,
ban_entry_init: true,
bridge: true,
commit_root_state_digest: true,
consensus_distributed_vote_scoring_strategy: true,
consensus_order_end_of_epoch_last: true,
consensus_round_prober: true,
disable_invariant_violation_check_in_swap_loc: true,
disallow_adding_abilities_on_upgrade: true,
disallow_change_struct_type_params_on_upgrade: true,
disallow_new_modules_in_deps_only_packages: true,
enable_coin_deny_list: true,
enable_coin_deny_list_v2: true,
enable_effects_v2: true,
enable_group_ops_native_function_msm: false,
enable_group_ops_native_functions: true,
enable_jwk_consensus_updates: true,
enable_poseidon: false,
enable_vdf: false,
end_of_epoch_transaction_supported: true,
fresh_vm_on_framework_upgrade: true,
hardened_otw_check: true,
include_consensus_digest_in_prologue: true,
loaded_child_object_format: true,
loaded_child_object_format_type: true,
loaded_child_objects_fixed: true,
missing_type_is_compatibility_error: true,
mysticeti_fastpath: false,
mysticeti_leader_scoring_and_schedule: true,
mysticeti_use_committed_subdag_digest: true,
narwhal_certificate_v2: true,
narwhal_new_leader_election_schedule: true,
narwhal_versioned_metadata: true,
no_extraneous_module_bytes: true,
package_digest_hash_module: true,
package_upgrades: true,
passkey_auth: false,
prepend_prologue_tx_in_consensus_commit_in_checkpoints: true,
random_beacon: true,
receive_objects: true,
recompute_has_public_transfer_in_execution: true,
record_consensus_determined_version_assignments_in_prologue: true,
reject_mutable_random_on_entry_functions: true,
relocate_event_module: true,
reshare_at_same_initial_version: true,
resolve_abort_locations_to_package_id: true,
rethrow_serialization_type_layout_errors: true,
scoring_decision_with_validity_cutoff: true,
shared_object_deletion: true,
simple_conservation_checks: true,
simplified_unwrap_then_delete: true,
soft_bundle: true,
throughput_aware_consensus_submission: false,
txn_base_cost_as_multiplier: true,
uncompressed_g1_group_elements: false,
upgraded_multisig_supported: true,
validate_identifier_inputs: true,
verify_legacy_zklogin_address: true,
zklogin_auth: true
},
attributes: {
address_from_bytes_cost_base: { u64: '52' },
address_from_u256_cost_base: { u64: '52' },
address_to_u256_cost_base: { u64: '52' },
base_tx_cost_fixed: { u64: '1000' },
base_tx_cost_per_byte: { u64: '0' },
bcs_failure_cost: { u64: '52' },
bcs_legacy_min_output_size_cost: { u64: '1' },
bcs_per_byte_serialized_cost: { u64: '2' },
binary_address_identifiers: { u16: '100' },
binary_constant_pool: { u16: '4000' },
binary_enum_def_instantiations: null,
binary_enum_defs: null,
binary_field_handles: { u16: '500' },
binary_field_instantiations: { u16: '250' },
binary_friend_decls: { u16: '100' },
binary_function_defs: { u16: '1000' },
binary_function_handles: { u16: '1500' },
binary_function_instantiations: { u16: '750' },
binary_identifiers: { u16: '10000' },
binary_module_handles: { u16: '100' },
binary_signatures: { u16: '1000' },
binary_struct_def_instantiations: { u16: '100' },
binary_struct_defs: { u16: '200' },
binary_struct_handles: { u16: '300' },
binary_variant_handles: null,
binary_variant_instantiation_handles: null,
bls12381_bls12381_min_pk_verify_cost_base: { u64: '52' },
bls12381_bls12381_min_pk_verify_msg_cost_per_block: { u64: '2' },
bls12381_bls12381_min_pk_verify_msg_cost_per_byte: { u64: '2' },
bls12381_bls12381_min_sig_verify_cost_base: { u64: '52' },
bls12381_bls12381_min_sig_verify_msg_cost_per_block: { u64: '2' },
bls12381_bls12381_min_sig_verify_msg_cost_per_byte: { u64: '2' },
bridge_should_try_to_finalize_committee: { bool: 'true' },
buffer_stake_for_protocol_upgrade_bps: { u64: '5000' },
check_zklogin_id_cost_base: { u64: '200' },
check_zklogin_issuer_cost_base: { u64: '200' },
checkpoint_summary_version_specific_data: { u64: '1' },
config_read_setting_impl_cost_base: { u64: '100' },
config_read_setting_impl_cost_per_byte: { u64: '40' },
consensus_bad_nodes_stake_threshold: { u64: '20' },
consensus_gc_depth: null,
consensus_max_num_transactions_in_block: { u64: '512' },
consensus_max_transaction_size_bytes: { u64: '262144' },
consensus_max_transactions_in_block_bytes: { u64: '524288' },
crypto_invalid_arguments_cost: { u64: '100' },
debug_print_base_cost: { u64: '52' },
debug_print_stack_trace_base_cost: { u64: '52' },
dynamic_field_add_child_object_cost_base: { u64: '100' },
dynamic_field_add_child_object_struct_tag_cost_per_byte: { u64: '10' },
dynamic_field_add_child_object_type_cost_per_byte: { u64: '10' },
dynamic_field_add_child_object_value_cost_per_byte: { u64: '10' },
dynamic_field_borrow_child_object_child_ref_cost_per_byte: { u64: '10' },
dynamic_field_borrow_child_object_cost_base: { u64: '100' },
dynamic_field_borrow_child_object_type_cost_per_byte: { u64: '10' },
dynamic_field_has_child_object_cost_base: { u64: '100' },
dynamic_field_has_child_object_with_ty_cost_base: { u64: '100' },
dynamic_field_has_child_object_with_ty_type_cost_per_byte: { u64: '2' },
dynamic_field_has_child_object_with_ty_type_tag_cost_per_byte: { u64: '2' },
dynamic_field_hash_type_and_key_cost_base: { u64: '100' },
dynamic_field_hash_type_and_key_type_cost_per_byte: { u64: '2' },
dynamic_field_hash_type_and_key_type_tag_cost_per_byte: { u64: '2' },
dynamic_field_hash_type_and_key_value_cost_per_byte: { u64: '2' },
dynamic_field_remove_child_object_child_cost_per_byte: { u64: '2' },
dynamic_field_remove_child_object_cost_base: { u64: '100' },
dynamic_field_remove_child_object_type_cost_per_byte: { u64: '2' },
ecdsa_k1_decompress_pubkey_cost_base: { u64: '52' },
ecdsa_k1_ecrecover_keccak256_cost_base: { u64: '52' },
ecdsa_k1_ecrecover_keccak256_msg_cost_per_block: { u64: '2' },
ecdsa_k1_ecrecover_keccak256_msg_cost_per_byte: { u64: '2' },
ecdsa_k1_ecrecover_sha256_cost_base: { u64: '52' },
ecdsa_k1_ecrecover_sha256_msg_cost_per_block: { u64: '2' },
ecdsa_k1_ecrecover_sha256_msg_cost_per_byte: { u64: '2' },
ecdsa_k1_secp256k1_verify_keccak256_cost_base: { u64: '52' },
ecdsa_k1_secp256k1_verify_keccak256_msg_cost_per_block: { u64: '2' },
ecdsa_k1_secp256k1_verify_keccak256_msg_cost_per_byte: { u64: '2' },
ecdsa_k1_secp256k1_verify_sha256_cost_base: { u64: '52' },
ecdsa_k1_secp256k1_verify_sha256_msg_cost_per_block: { u64: '2' },
ecdsa_k1_secp256k1_verify_sha256_msg_cost_per_byte: { u64: '2' },
ecdsa_r1_ecrecover_keccak256_cost_base: { u64: '52' },
ecdsa_r1_ecrecover_keccak256_msg_cost_per_block: { u64: '2' },
ecdsa_r1_ecrecover_keccak256_msg_cost_per_byte: { u64: '2' },
ecdsa_r1_ecrecover_sha256_cost_base: { u64: '52' },
ecdsa_r1_ecrecover_sha256_msg_cost_per_block: { u64: '2' },
ecdsa_r1_ecrecover_sha256_msg_cost_per_byte: { u64: '2' },
ecdsa_r1_secp256r1_verify_keccak256_cost_base: { u64: '52' },
ecdsa_r1_secp256r1_verify_keccak256_msg_cost_per_block: { u64: '2' },
ecdsa_r1_secp256r1_verify_keccak256_msg_cost_per_byte: { u64: '2' },
ecdsa_r1_secp256r1_verify_sha256_cost_base: { u64: '52' },
ecdsa_r1_secp256r1_verify_sha256_msg_cost_per_block: { u64: '2' },
ecdsa_r1_secp256r1_verify_sha256_msg_cost_per_byte: { u64: '2' },
ecvrf_ecvrf_verify_alpha_string_cost_per_block: { u64: '2' },
ecvrf_ecvrf_verify_alpha_string_cost_per_byte: { u64: '2' },
ecvrf_ecvrf_verify_cost_base: { u64: '52' },
ed25519_ed25519_verify_cost_base: { u64: '52' },
ed25519_ed25519_verify_msg_cost_per_block: { u64: '2' },
ed25519_ed25519_verify_msg_cost_per_byte: { u64: '2' },
event_emit_cost_base: { u64: '52' },
event_emit_output_cost_per_byte: { u64: '10' },
event_emit_tag_size_derivation_cost_per_byte: { u64: '5' },
event_emit_value_size_derivation_cost_per_byte: { u64: '2' },
execution_version: { u64: '3' },
gas_budget_based_txn_cost_absolute_cap_commit_count: { u64: '50' },
gas_budget_based_txn_cost_cap_factor: { u64: '400000' },
gas_model_version: { u64: '8' },
gas_rounding_step: { u64: '1000' },
groth16_prepare_verifying_key_bls12381_cost_base: { u64: '52' },
groth16_prepare_verifying_key_bn254_cost_base: { u64: '52' },
groth16_verify_groth16_proof_internal_bls12381_cost_base: { u64: '52' },
groth16_verify_groth16_proof_internal_bls12381_cost_per_public_input: { u64: '2' },
groth16_verify_groth16_proof_internal_bn254_cost_base: { u64: '52' },
groth16_verify_groth16_proof_internal_bn254_cost_per_public_input: { u64: '2' },
groth16_verify_groth16_proof_internal_public_input_cost_per_byte: { u64: '2' },
group_ops_bls12381_decode_g1_cost: { u64: '52' },
group_ops_bls12381_decode_g2_cost: { u64: '52' },
group_ops_bls12381_decode_gt_cost: { u64: '52' },
group_ops_bls12381_decode_scalar_cost: { u64: '52' },
group_ops_bls12381_g1_add_cost: { u64: '52' },
group_ops_bls12381_g1_div_cost: { u64: '52' },
group_ops_bls12381_g1_hash_to_base_cost: { u64: '52' },
group_ops_bls12381_g1_hash_to_cost_per_byte: { u64: '2' },
group_ops_bls12381_g1_msm_base_cost: { u64: '52' },
group_ops_bls12381_g1_msm_base_cost_per_input: { u64: '52' },
group_ops_bls12381_g1_mul_cost: { u64: '52' },
group_ops_bls12381_g1_sub_cost: { u64: '52' },
group_ops_bls12381_g1_to_uncompressed_g1_cost: { u64: '26' },
group_ops_bls12381_g2_add_cost: { u64: '52' },
group_ops_bls12381_g2_div_cost: { u64: '52' },
group_ops_bls12381_g2_hash_to_base_cost: { u64: '52' },
group_ops_bls12381_g2_hash_to_cost_per_byte: { u64: '2' },
group_ops_bls12381_g2_msm_base_cost: { u64: '52' },
group_ops_bls12381_g2_msm_base_cost_per_input: { u64: '52' },
group_ops_bls12381_g2_mul_cost: { u64: '52' },
group_ops_bls12381_g2_sub_cost: { u64: '52' },
group_ops_bls12381_gt_add_cost: { u64: '52' },
group_ops_bls12381_gt_div_cost: { u64: '52' },
group_ops_bls12381_gt_mul_cost: { u64: '52' },
group_ops_bls12381_gt_sub_cost: { u64: '52' },
group_ops_bls12381_msm_max_len: { u32: '32' },
group_ops_bls12381_pairing_cost: { u64: '52' },
group_ops_bls12381_scalar_add_cost: { u64: '52' },
group_ops_bls12381_scalar_div_cost: { u64: '52' },
group_ops_bls12381_scalar_mul_cost: { u64: '52' },
group_ops_bls12381_scalar_sub_cost: { u64: '52' },
group_ops_bls12381_uncompressed_g1_sum_base_cost: { u64: '26' },
group_ops_bls12381_uncompressed_g1_sum_cost_per_term: { u64: '13' },
group_ops_bls12381_uncompressed_g1_sum_max_terms: { u64: '2000' },
group_ops_bls12381_uncompressed_g1_to_g1_cost: { u64: '52' },
hash_blake2b256_cost_base: { u64: '52' },
hash_blake2b256_data_cost_per_block: { u64: '2' },
hash_blake2b256_data_cost_per_byte: { u64: '2' },
hash_keccak256_cost_base: { u64: '52' },
hash_keccak256_data_cost_per_block: { u64: '2' },
hash_keccak256_data_cost_per_byte: { u64: '2' },
hash_sha2_256_base_cost: { u64: '52' },
hash_sha2_256_legacy_min_input_len_cost: { u64: '1' },
hash_sha2_256_per_byte_cost: { u64: '2' },
hash_sha3_256_base_cost: { u64: '52' },
hash_sha3_256_legacy_min_input_len_cost: { u64: '1' },
hash_sha3_256_per_byte_cost: { u64: '2' },
hmac_hmac_sha3_256_cost_base: { u64: '52' },
hmac_hmac_sha3_256_input_cost_per_block: { u64: '2' },
hmac_hmac_sha3_256_input_cost_per_byte: { u64: '2' },
max_accumulated_randomness_txn_cost_per_object_in_mysticeti_commit: { u64: '3700000' },
max_accumulated_txn_cost_per_object_in_mysticeti_commit: { u64: '18500000' },
max_accumulated_txn_cost_per_object_in_narwhal_commit: { u64: '40' },
max_age_of_jwk_in_epochs: { u64: '1' },
max_arguments: { u32: '512' },
max_back_edges_per_function: { u64: '10000' },
max_back_edges_per_module: { u64: '10000' },
max_basic_blocks: { u64: '1024' },
max_checkpoint_size_bytes: { u64: '31457280' },
max_deferral_rounds_for_congestion_control: { u64: '10' },
max_dependency_depth: { u64: '100' },
max_event_emit_size: { u64: '256000' },
max_event_emit_size_total: { u64: '65536000' },
max_fields_in_struct: { u64: '32' },
max_function_definitions: { u64: '1000' },
max_function_parameters: { u64: '128' },
max_gas_computation_bucket: { u64: '5000000' },
max_gas_payment_objects: { u32: '256' },
max_gas_price: { u64: '100000' },
max_generic_instantiation_length: { u64: '32' },
max_input_objects: { u64: '2048' },
max_jwk_votes_per_validator_per_epoch: { u64: '240' },
max_loop_depth: { u64: '5' },
max_meter_ticks_per_module: { u64: '16000000' },
max_meter_ticks_per_package: { u64: '16000000' },
max_modules_in_publish: { u32: '64' },
max_move_enum_variants: null,
max_move_identifier_len: { u64: '128' },
max_move_object_size: { u64: '256000' },
max_move_package_size: { u64: '102400' },
max_move_value_depth: { u64: '128' },
max_move_vector_len: { u64: '262144' },
max_num_deleted_move_object_ids: { u64: '2048' },
max_num_deleted_move_object_ids_system_tx: { u64: '32768' },
max_num_event_emit: { u64: '1024' },
max_num_new_move_object_ids: { u64: '2048' },
max_num_new_move_object_ids_system_tx: { u64: '32768' },
max_num_transferred_move_object_ids: { u64: '2048' },
max_num_transferred_move_object_ids_system_tx: { u64: '32768' },
max_package_dependencies: { u32: '32' },
max_programmable_tx_commands: { u32: '1024' },
max_publish_or_upgrade_per_ptb: { u64: '5' },
max_pure_argument_size: { u32: '16384' },
max_push_size: { u64: '10000' },
max_serialized_tx_effects_size_bytes: { u64: '524288' },
max_serialized_tx_effects_size_bytes_system_tx: { u64: '8388608' },
max_size_written_objects: { u64: '5000000' },
max_size_written_objects_system_tx: { u64: '50000000' },
max_soft_bundle_size: { u64: '5' },
max_struct_definitions: { u64: '200' },
max_transactions_per_checkpoint: { u64: '10000' },
max_tx_gas: { u64: '50000000000' },
max_tx_size_bytes: { u64: '131072' },
max_txn_cost_overage_per_object_in_commit: { u64: '18446744073709551615' },
max_type_argument_depth: { u32: '16' },
max_type_arguments: { u32: '16' },
max_type_nodes: { u64: '256' },
max_type_to_layout_nodes: { u64: '512' },
max_value_stack_size: { u64: '1024' },
max_verifier_meter_ticks_per_function: { u64: '16000000' },
min_checkpoint_interval_ms: { u64: '200' },
min_move_binary_format_version: { u32: '6' },
move_binary_format_version: { u32: '7' },
obj_access_cost_delete_per_byte: { u64: '40' },
obj_access_cost_mutate_per_byte: { u64: '40' },
obj_access_cost_read_per_byte: { u64: '15' },
obj_access_cost_verify_per_byte: { u64: '200' },
obj_data_cost_refundable: { u64: '100' },
obj_metadata_cost_non_refundable: { u64: '50' },
object_borrow_uid_cost_base: { u64: '52' },
object_delete_impl_cost_base: { u64: '52' },
object_record_new_uid_cost_base: { u64: '52' },
object_runtime_max_num_cached_objects: { u64: '1000' },
object_runtime_max_num_cached_objects_system_tx: { u64: '16000' },
object_runtime_max_num_store_entries: { u64: '1000' },
object_runtime_max_num_store_entries_system_tx: { u64: '16000' },
package_publish_cost_fixed: { u64: '1000' },
package_publish_cost_per_byte: { u64: '80' },
poseidon_bn254_cost_base: null,
poseidon_bn254_cost_per_block: null,
random_beacon_dkg_timeout_round: { u32: '3000' },
random_beacon_dkg_version: { u64: '1' },
random_beacon_min_round_interval_ms: { u64: '500' },
random_beacon_reduction_allowed_delta: { u16: '800' },
random_beacon_reduction_lower_bound: { u32: '500' },
reward_slashing_rate: { u64: '10000' },
storage_fund_reinvest_rate: { u64: '500' },
storage_gas_price: { u64: '76' },
storage_rebate_rate: { u64: '9900' },
string_check_utf8_base_cost: { u64: '52' },
string_check_utf8_per_byte_cost: { u64: '2' },
string_index_of_base_cost: { u64: '52' },
string_index_of_per_byte_pattern_cost: { u64: '2' },
string_index_of_per_byte_searched_cost: { u64: '2' },
string_is_char_boundary_base_cost: { u64: '52' },
string_sub_string_base_cost: { u64: '52' },
string_sub_string_per_byte_cost: { u64: '2' },
transfer_freeze_object_cost_base: { u64: '52' },
transfer_receive_object_cost_base: { u64: '52' },
transfer_share_object_cost_base: { u64: '52' },
transfer_transfer_internal_cost_base: { u64: '52' },
tx_context_derive_id_cost_base: { u64: '52' },
type_name_get_base_cost: { u64: '52' },
type_name_get_per_byte_cost: { u64: '2' },
types_is_one_time_witness_cost_base: { u64: '52' },
types_is_one_time_witness_type_cost_per_byte: { u64: '2' },
types_is_one_time_witness_type_tag_cost_per_byte: { u64: '2' },
validator_validate_metadata_cost_base: { u64: '52' },
validator_validate_metadata_data_cost_per_byte: { u64: '2' },
vdf_hash_to_input_cost: null,
vdf_verify_vdf_cost: null,
vector_borrow_base_cost: { u64: '52' },
vector_destroy_empty_base_cost: { u64: '52' },
vector_empty_base_cost: { u64: '52' },
vector_length_base_cost: { u64: '52' },
vector_pop_back_base_cost: { u64: '52' },
vector_push_back_base_cost: { u64: '52' },
vector_push_back_legacy_per_abstract_memory_unit_cost: { u64: '2' },
vector_swap_base_cost: { u64: '52' }
}
}
Response fields
The response is of typeProtocolConfig
with fields
Name | Type | Description |
---|---|---|
attributes | [key: string]: ProtocolConfigValue | null | An map of the attributes of the current protocol version if present. |
featureFlags | [key: string]: boolean | A map of the feature flags and whether or not they are enabled for the current protocol version. |
maxSupportedProtocolVersion | string | The maximum supported protocol version. |
minSupportedProtocolVersion | string | The minimum supported protocol version. |
protocolVersion | string | The current protocol version. |
suix_getCommitteeInfo
Description
Return the committee information for the epoch of interest.
Params
epoch
:<BigInt_for_uint64>
- the epoch of interest. If None, default to the latest epoch
curl https://api.shinami.com/node/v1/<<apiKey>> \
-X POST \
-H 'Content-Type: application/json' \
-d '{ "jsonrpc":"2.0", "method":"suix_getCommitteeInfo", "params":[{{epoch}}], "id":1}'
Result
SuiCommittee
:<CommitteeInfo>
suix_getLatestSuiSystemState
Return the latest SUI system state object on-chain.
Params
curl https://api.shinami.com/node/v1/<<apiKey>> \
-X POST \
-H 'Content-Type: application/json' \
-d '{ "jsonrpc":"2.0", "method":"suix_getLatestSuiSystemState", "params":[], "id":1}'
Result
SuiSystemStateSummary
:<SuiSystemStateSummary>
- activeValidators :
<[SuiValidatorSummary]>
- The list of active validators in the current epoch. - atRiskValidators :
<[SuiAddress]>
- Map storing the number of epochs for which each validator has been below the low stake threshold. - epoch :
<BigInt_for_uint64>
- The current epoch ID, starting from 0. - epochDurationMs :
<BigInt_for_uint64>
- The duration of an epoch, in milliseconds. - epochStartTimestampMs :
<BigInt_for_uint64>
- Unix timestamp of the current epoch start - inactivePoolsId :
<[ObjectID]>
- ID of the object that maps from a staking pool ID to the inactive validator that has that pool as its staking pool. - inactivePoolsSize :
<BigInt_for_uint64>
- Number of inactive staking pools.
maxValidatorCount :<BigInt_for_uint64>
- Maximum number of active validators at any moment. We do not allow the number of validators in any epoch to go above this. - minValidatorJoiningStake :
<BigInt_for_uint64>
- Lower-bound on the amount of stake required to become a validator. - pendingActiveValidatorsId :
<[ObjectID]>
- ID of the object that contains the list of new validators that will join at the end of the epoch. - pendingActiveValidatorsSize :
<BigInt_for_uint64>
- Number of new validators that will join at the end of the epoch. - pendingRemovals :
<[]>
- Removal requests from the validators. Each element is an index pointing toactive_validators
. - protocolVersion :
<BigInt_for_uint64>
- The current protocol version, starting from 1. - referenceGasPrice :
<BigInt_for_uint64>
- The reference gas price for the current epoch. - safeMode :
<boolean>
- Whether the system is running in a downgraded safe mode due to a non-recoverable bug. This is set whenever we failed to execute advance_epoch, and ended up executing advance_epoch_safe_mode. It can be reset once we are able to successfully execute advance_epoch. - safeModeComputationRewards :
<BigInt_for_uint64>
- Amount of computation rewards accumulated (and not yet distributed) during safe mode. - safeModeNonRefundableStorageFee :
<BigInt_for_uint64>
- Amount of non-refundable storage fee accumulated during safe mode. - safeModeStorageRebates :
<BigInt_for_uint64>
- Amount of storage rebates accumulated (and not yet burned) during safe mode. - safeModeStorageRewards :
<BigInt_for_uint64>
- Amount of storage rewards accumulated (and not yet distributed) during safe mode. - stakeSubsidyBalance :
<BigInt_for_uint64>
- Balance of SUI set aside for stake subsidies that will be drawn down over time. - stakeSubsidyCurrentDistributionAmount :
<BigInt_for_uint64>
- The amount of stake subsidy to be drawn down per epoch. This amount decays and decreases over time. - stakeSubsidyDecreaseRate :
<uint16>
- The rate at which the distribution amount decays at the end of each period. Expressed in basis points. - stakeSubsidyDistributionCounter :
<BigInt_for_uint64>
- This counter may be different from the current epoch number if in some epochs we decide to skip the subsidy. - stakeSubsidyPeriodLength :
<BigInt_for_uint64>
- Number of distributions to occur before the distribution amount decays. - stakeSubsidyStartEpoch :
<BigInt_for_uint64>
- The starting epoch in which stake subsidies start being paid out - stakingPoolMappingsId :
<[ObjectID]>
- ID of the object that maps from staking pool's ID to the sui address of a validator. - stakingPoolMappingsSize :
<BigInt_for_uint64>
- Number of staking pool mappings. - storageFundNonRefundableBalance :
<BigInt_for_uint64>
- The non-refundable portion of the storage fund coming from storage reinvestment, non-refundable storage rebates and any leftover staking rewards. - storageFundTotalObjectStorageRebates :
<BigInt_for_uint64>
- The storage rebates of all the objects on-chain stored in the storage fund. - systemStateVersion :
<BigInt_for_uint64>
- The current version of the system state data structure type. - totalStake :
<BigInt_for_uint64>
- Total amount of stake from all active validators at the beginning of the epoch. - validatorCandidatesId :
<[ObjectID]>
- ID of the object that stores preactive validators, mapping their addresses to theirValidator
structs. - validatorCandidatesSize :
<BigInt_for_uint64>
- Number of preactive validators. - validatorLowStakeGracePeriod :
<BigInt_for_uint64>
- A validator can have stake below the validator_low_stake_threshold for this many epochs before being kicked out. - validatorLowStakeThreshold :
<BigInt_for_uint64>
- Validators with stake amount below validator_low_stake_threshold are considered to have low stake and will be escorted out of the validator set after being below this threshold for more thanvalidator_low_stake_grace_period
number of epochs. - validatorReportRecords :
<[SuiAddress]>
- A map storing the records of validator reporting each other. - validatorVeryLowStakeThreshold :
<BigInt_for_uint64>
- Validators with stake below validator_very_low_stake_threshold will be removed immediately at epoch change, no grace period.
suix_getReferenceGasPrice
Description
Return the reference gas price for the network for the current epoch, in MIST.
Example Request Template
curl https://api.shinami.com/node/v1 \
-X POST \
-H 'X-API-Key: NODE_SERVICE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc":"2.0",
"method":"suix_getReferenceGasPrice",
"params":[],
"id":1
}'
import { createSuiClient } from "@shinami/clients/sui";
const nodeClient = createSuiClient("NODE_SERVICE_API_KEY");
await nodeClient.getReferenceGasPrice();
Example Response
{
"jsonrpc":"2.0",
"result":"750",
"id":1
}
// The reference gas price is 750 MIST, which is 0.00000075 SUI
750n // BigInt<u64>
// The reference gas price is 750 MIST, which is 0.00000075 SUI
Result
BigInt<u64>
: The reference gas price in MIST.
suix_getStakes
Description
Return all delegated stake.
Params
owner
:<SuiAddress>
- the owner's Sui address
curl https://api.shinami.com/node/v1/<<apiKey>> \
-X POST \
-H 'Content-Type: application/json' \
-d '{ "jsonrpc":"2.0", "method":"suix_getStakes", "params":["{{owner}}"], "id":1}'
Result
Vec<DelegatedStake>
:<[DelegatedStake]>
suix_getStakesByIds
Description
Return one or more delegated stake. If a Stake was withdrawn, its status will be Unstaked.
Params
staked_sui_ids
:<[ObjectID]>
curl https://api.shinami.com/node/v1/<<apiKey>> \
-X POST \
-H 'Content-Type: application/json' \
-d '{ "jsonrpc":"2.0", "method":"suix_getStakesByIds", "params":["{{staked_sui_ids}}"], "id":1}'
Result
Vec<DelegatedStake>
:<[DelegatedStake]>
suix_getValidatorsApy
Return the validator APY
Params
curl https://api.shinami.com/node/v1/<<apiKey>> \
-X POST \
-H 'Content-Type: application/json' \
-d '{ "jsonrpc":"2.0", "method":"suix_getValidatorsApy", "params":[], "id":1}'
Result
ValidatorApys
:<ValidatorApys>
- apys :
<[ValidatorApy]>
- epoch :
<BigInt_for_uint64>