# sui_getProtocolConfig

> For the complete documentation index, see [llms.txt](/docs/llms.txt).

POST https://sui-mainnet.g.alchemy.com/v2/{apiKey}

Return the protocol config table for the given version number. If the version number is not specified, the node uses the version of the latest epoch it has processed.


Reference: https://www.alchemy.com/docs/chains/sui/sui-api-endpoints/sui-get-protocol-config

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| version | string | No | A protocol version specifier. If omitted, the latest protocol config table for the node will be returned. |

## Result

**result** (object): The protocol config table for the given version number.

## Example

### Response

```json
{
  "jsonrpc": "2.0",
  "result": {
    "minSupportedProtocolVersion": "1",
    "maxSupportedProtocolVersion": "89",
    "protocolVersion": "89",
    "featureFlags": {
      "accept_passkey_in_multisig": false,
      "accept_zklogin_in_multisig": true,
      "additional_multisig_checks": true,
      "advance_epoch_start_time_in_safe_mode": true,
      "advance_to_highest_supported_protocol_version": true,
      "allow_receiving_object_id": true,
      "allow_unbounded_system_objects": true,
      "authority_capabilities_v2": false,
      "ban_entry_init": true,
      "better_adapter_type_resolution_errors": true,
      "bridge": true,
      "commit_root_state_digest": true,
      "consensus_batched_block_sync": true,
      "consensus_distributed_vote_scoring_strategy": true,
      "consensus_linearize_subdag_v2": true,
      "consensus_median_based_commit_timestamp": true,
      "consensus_order_end_of_epoch_last": true,
      "consensus_round_prober": true,
      "consensus_round_prober_probe_accepted_rounds": true,
      "consensus_smart_ancestor_selection": true,
      "consensus_zstd_compression": true,
      "convert_type_argument_error": true,
      "dependency_linkage_error": 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,
      "disallow_self_identifier": true,
      "enable_accumulators": false,
      "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_nitro_attestation": true,
      "enable_nitro_attestation_upgraded_parsing": true,
      "enable_party_transfer": false,
      "enable_poseidon": false,
      "enable_ptb_execution_v2": false,
      "enable_vdf": false,
      "end_of_epoch_transaction_supported": true,
      "enforce_checkpoint_timestamp_monotonicity": true,
      "fresh_vm_on_framework_upgrade": true,
      "hardened_otw_check": true,
      "ignore_execution_time_observations_after_certs_closed": true,
      "include_consensus_digest_in_prologue": true,
      "loaded_child_object_format": true,
      "loaded_child_object_format_type": true,
      "loaded_child_objects_fixed": true,
      "max_ptb_value_size_v2": true,
      "minimize_child_object_mutations": true,
      "missing_type_is_compatibility_error": true,
      "move_native_context": 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,
      "native_charging_v2": true,
      "no_extraneous_module_bytes": true,
      "normalize_ptb_arguments": 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_additional_state_digest_in_prologue": true,
      "record_consensus_determined_version_assignments_in_prologue": true,
      "record_consensus_determined_version_assignments_in_prologue_v2": true,
      "record_time_estimate_processed": 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,
      "resolve_type_input_ids_to_defining_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,
      "type_tags_in_object_runtime": true,
      "uncompressed_g1_group_elements": true,
      "upgraded_multisig_supported": true,
      "validate_identifier_inputs": true,
      "variant_nodes": true,
      "verify_legacy_zklogin_address": true,
      "zklogin_auth": true
    },
    "attributes": {}
  },
  "id": 1
}
```

## Code Examples

### cURL

```bash
curl --request POST \
  --url https://sui-mainnet.g.alchemy.com/v2/docs-demo \
  --header 'Content-Type: application/json' \
  --data '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "sui_getProtocolConfig",
  "params": [
    "string"
  ]
}'
```

### JavaScript

```javascript
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({jsonrpc: '2.0', id: 1, method: 'sui_getProtocolConfig', params: ['string']})
};

fetch('https://sui-mainnet.g.alchemy.com/v2/docs-demo', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
```

### Python

```python
import requests

url = "https://sui-mainnet.g.alchemy.com/v2/docs-demo"

payload = {
    "jsonrpc": "2.0",
    "id": 1,
    "method": "sui_getProtocolConfig",
    "params": ["string"]
}
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
```

### Go

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://sui-mainnet.g.alchemy.com/v2/docs-demo"

	payload := strings.NewReader("{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"sui_getProtocolConfig\",\n  \"params\": [\n    \"string\"\n  ]\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(string(body))

}
```

### Java

```java
HttpResponse<String> response = Unirest.post("https://sui-mainnet.g.alchemy.com/v2/docs-demo")
  .header("Content-Type", "application/json")
  .body("{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"sui_getProtocolConfig\",\n  \"params\": [\n    \"string\"\n  ]\n}")
  .asString();
```

### C#

```csharp
using RestSharp;


var options = new RestClientOptions("https://sui-mainnet.g.alchemy.com/v2/docs-demo");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddJsonBody("{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"sui_getProtocolConfig\",\n  \"params\": [\n    \"string\"\n  ]\n}", false);
var response = await client.PostAsync(request);

Console.WriteLine("{0}", response.Content);

```


## OpenRPC Method Specification

```yaml
name: sui_getProtocolConfig
summary: Get the protocol configuration
description: |
  Return the protocol config table for the given version number. If the version number is not specified, the node uses the version of the latest epoch it has processed.
params:
  - name: version
    required: false
    description: A protocol version specifier. If omitted, the latest protocol config table for the node will be returned.
    schema:
      type: string
result:
  name: result
  description: The protocol config table for the given version number.
  schema:
    type: object
    properties:
      attributes:
        type: object
        description: Has additional fields
      featureFlags:
        type: object
        description: Has additional fields
      maxSupportedProtocolVersion:
        type: string
      minSupportedProtocolVersion:
        type: string
      protocolVersion:
        type: string
examples:
  - name: Get latest protocol config table
    params: []
    result:
      name: result
      value:
        minSupportedProtocolVersion: '1'
        maxSupportedProtocolVersion: '89'
        protocolVersion: '89'
        featureFlags:
          accept_passkey_in_multisig: false
          accept_zklogin_in_multisig: true
          additional_multisig_checks: true
          advance_epoch_start_time_in_safe_mode: true
          advance_to_highest_supported_protocol_version: true
          allow_receiving_object_id: true
          allow_unbounded_system_objects: true
          authority_capabilities_v2: false
          ban_entry_init: true
          better_adapter_type_resolution_errors: true
          bridge: true
          commit_root_state_digest: true
          consensus_batched_block_sync: true
          consensus_distributed_vote_scoring_strategy: true
          consensus_linearize_subdag_v2: true
          consensus_median_based_commit_timestamp: true
          consensus_order_end_of_epoch_last: true
          consensus_round_prober: true
          consensus_round_prober_probe_accepted_rounds: true
          consensus_smart_ancestor_selection: true
          consensus_zstd_compression: true
          convert_type_argument_error: true
          dependency_linkage_error: 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
          disallow_self_identifier: true
          enable_accumulators: false
          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_nitro_attestation: true
          enable_nitro_attestation_upgraded_parsing: true
          enable_party_transfer: false
          enable_poseidon: false
          enable_ptb_execution_v2: false
          enable_vdf: false
          end_of_epoch_transaction_supported: true
          enforce_checkpoint_timestamp_monotonicity: true
          fresh_vm_on_framework_upgrade: true
          hardened_otw_check: true
          ignore_execution_time_observations_after_certs_closed: true
          include_consensus_digest_in_prologue: true
          loaded_child_object_format: true
          loaded_child_object_format_type: true
          loaded_child_objects_fixed: true
          max_ptb_value_size_v2: true
          minimize_child_object_mutations: true
          missing_type_is_compatibility_error: true
          move_native_context: 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
          native_charging_v2: true
          no_extraneous_module_bytes: true
          normalize_ptb_arguments: 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_additional_state_digest_in_prologue: true
          record_consensus_determined_version_assignments_in_prologue: true
          record_consensus_determined_version_assignments_in_prologue_v2: true
          record_time_estimate_processed: 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
          resolve_type_input_ids_to_defining_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
          type_tags_in_object_runtime: true
          uncompressed_g1_group_elements: true
          upgraded_multisig_supported: true
          validate_identifier_inputs: true
          variant_nodes: true
          verify_legacy_zklogin_address: true
          zklogin_auth: true
        attributes: {}
```
