Skip to content

Commit

Permalink
[Consensus] use tonic in tests and devnet (MystenLabs#17369)
Browse files Browse the repository at this point in the history
## Description 

Start testing tonic network more, before we decide if it should become
the default.

## Test plan 

CI

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
  • Loading branch information
mwtian authored Apr 29, 2024
1 parent 5c89ccb commit ddfac43
Show file tree
Hide file tree
Showing 9 changed files with 832 additions and 22 deletions.
4 changes: 1 addition & 3 deletions consensus/core/src/authority_service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use bytes::Bytes;
use consensus_config::AuthorityIndex;
use futures::{ready, stream, task, Stream, StreamExt};
use parking_lot::RwLock;
use sui_macros::{fail_point, fail_point_async};
use sui_macros::fail_point_async;
use tokio::{sync::broadcast, time::sleep};
use tokio_util::sync::ReusableBoxFuture;
use tracing::{debug, info, warn};
Expand Down Expand Up @@ -387,8 +387,6 @@ impl<T: 'static + Clone + Send> Stream for BroadcastStream<T> {
let (result, rx) = ready!(self.inner.poll(cx));
self.inner.set(make_recv_future(rx));

fail_point!("consensus-rpc-response");

match result {
Ok(item) => break Some(item),
Err(broadcast::error::RecvError::Closed) => {
Expand Down
2 changes: 1 addition & 1 deletion crates/sui-open-rpc/spec/openrpc.json
Original file line number Diff line number Diff line change
Expand Up @@ -1359,7 +1359,7 @@
"name": "Result",
"value": {
"minSupportedProtocolVersion": "1",
"maxSupportedProtocolVersion": "44",
"maxSupportedProtocolVersion": "45",
"protocolVersion": "6",
"featureFlags": {
"accept_zklogin_in_multisig": false,
Expand Down
10 changes: 9 additions & 1 deletion crates/sui-protocol-config/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ use tracing::{info, warn};

/// The minimum and maximum protocol versions supported by this build.
const MIN_PROTOCOL_VERSION: u64 = 1;
const MAX_PROTOCOL_VERSION: u64 = 44;
const MAX_PROTOCOL_VERSION: u64 = 45;

// Record history of protocol version allocations here:
//
Expand Down Expand Up @@ -120,6 +120,8 @@ const MAX_PROTOCOL_VERSION: u64 = 44;
// Introduce an explicit parameter for the tick limit per package (previously this was
// represented by the parameter for the tick limit per module).
// Version 44: Enable consensus fork detection on mainnet.
// Switch between Narwhal and Mysticeti consensus in tests, devnet and testnet.
// Version 45: Use tonic networking for Mysticeti consensus.

#[derive(Copy, Clone, Debug, Hash, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
pub struct ProtocolVersion(u64);
Expand Down Expand Up @@ -2121,6 +2123,12 @@ impl ProtocolConfig {
cfg.feature_flags.consensus_choice = ConsensusChoice::SwapEachEpoch;
}
}
45 => {
// Use tonic networking for consensus, in tests and devnet.
if chain != Chain::Testnet && chain != Chain::Mainnet {
cfg.feature_flags.consensus_network = ConsensusNetwork::Tonic;
}
}
// Use this template when making changes:
//
// // modify an existing constant.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,264 @@
---
source: crates/sui-protocol-config/src/lib.rs
expression: "ProtocolConfig::get_for_version(cur, *chain_id)"
---
version: 45
feature_flags:
package_upgrades: true
commit_root_state_digest: true
advance_epoch_start_time_in_safe_mode: true
loaded_child_objects_fixed: true
missing_type_is_compatibility_error: true
scoring_decision_with_validity_cutoff: true
consensus_order_end_of_epoch_last: true
disallow_adding_abilities_on_upgrade: true
disable_invariant_violation_check_in_swap_loc: true
advance_to_highest_supported_protocol_version: true
ban_entry_init: true
package_digest_hash_module: true
disallow_change_struct_type_params_on_upgrade: true
no_extraneous_module_bytes: true
narwhal_versioned_metadata: true
zklogin_auth: true
consensus_transaction_ordering: ByGasPrice
simplified_unwrap_then_delete: true
upgraded_multisig_supported: true
txn_base_cost_as_multiplier: true
shared_object_deletion: true
narwhal_new_leader_election_schedule: true
loaded_child_object_format: true
enable_jwk_consensus_updates: true
end_of_epoch_transaction_supported: true
simple_conservation_checks: true
loaded_child_object_format_type: true
receive_objects: true
enable_effects_v2: true
narwhal_certificate_v2: true
verify_legacy_zklogin_address: true
recompute_has_public_transfer_in_execution: true
include_consensus_digest_in_prologue: true
hardened_otw_check: true
allow_receiving_object_id: true
enable_coin_deny_list: true
enable_group_ops_native_functions: true
reject_mutable_random_on_entry_functions: true
zklogin_max_epoch_upper_bound_delta: 30
max_tx_size_bytes: 131072
max_input_objects: 2048
max_size_written_objects: 5000000
max_size_written_objects_system_tx: 50000000
max_serialized_tx_effects_size_bytes: 524288
max_serialized_tx_effects_size_bytes_system_tx: 8388608
max_gas_payment_objects: 256
max_modules_in_publish: 64
max_package_dependencies: 32
max_arguments: 512
max_type_arguments: 16
max_type_argument_depth: 16
max_pure_argument_size: 16384
max_programmable_tx_commands: 1024
move_binary_format_version: 6
binary_module_handles: 100
binary_struct_handles: 300
binary_function_handles: 1500
binary_function_instantiations: 750
binary_signatures: 1000
binary_constant_pool: 4000
binary_identifiers: 10000
binary_address_identifiers: 100
binary_struct_defs: 200
binary_struct_def_instantiations: 100
binary_function_defs: 1000
binary_field_handles: 500
binary_field_instantiations: 250
binary_friend_decls: 100
max_move_object_size: 256000
max_move_package_size: 102400
max_publish_or_upgrade_per_ptb: 5
max_tx_gas: 50000000000
max_gas_price: 100000
max_gas_computation_bucket: 5000000
gas_rounding_step: 1000
max_loop_depth: 5
max_generic_instantiation_length: 32
max_function_parameters: 128
max_basic_blocks: 1024
max_value_stack_size: 1024
max_type_nodes: 256
max_push_size: 10000
max_struct_definitions: 200
max_function_definitions: 1000
max_fields_in_struct: 32
max_dependency_depth: 100
max_num_event_emit: 1024
max_num_new_move_object_ids: 2048
max_num_new_move_object_ids_system_tx: 32768
max_num_deleted_move_object_ids: 2048
max_num_deleted_move_object_ids_system_tx: 32768
max_num_transferred_move_object_ids: 2048
max_num_transferred_move_object_ids_system_tx: 32768
max_event_emit_size: 256000
max_event_emit_size_total: 65536000
max_move_vector_len: 262144
max_move_identifier_len: 128
max_move_value_depth: 128
max_back_edges_per_function: 10000
max_back_edges_per_module: 10000
max_verifier_meter_ticks_per_function: 16000000
max_meter_ticks_per_module: 16000000
max_meter_ticks_per_package: 16000000
object_runtime_max_num_cached_objects: 1000
object_runtime_max_num_cached_objects_system_tx: 16000
object_runtime_max_num_store_entries: 1000
object_runtime_max_num_store_entries_system_tx: 16000
base_tx_cost_fixed: 1000
package_publish_cost_fixed: 1000
base_tx_cost_per_byte: 0
package_publish_cost_per_byte: 80
obj_access_cost_read_per_byte: 15
obj_access_cost_mutate_per_byte: 40
obj_access_cost_delete_per_byte: 40
obj_access_cost_verify_per_byte: 200
gas_model_version: 8
obj_data_cost_refundable: 100
obj_metadata_cost_non_refundable: 50
storage_rebate_rate: 9900
storage_fund_reinvest_rate: 500
reward_slashing_rate: 10000
storage_gas_price: 76
max_transactions_per_checkpoint: 10000
max_checkpoint_size_bytes: 31457280
buffer_stake_for_protocol_upgrade_bps: 5000
address_from_bytes_cost_base: 52
address_to_u256_cost_base: 52
address_from_u256_cost_base: 52
dynamic_field_hash_type_and_key_cost_base: 100
dynamic_field_hash_type_and_key_type_cost_per_byte: 2
dynamic_field_hash_type_and_key_value_cost_per_byte: 2
dynamic_field_hash_type_and_key_type_tag_cost_per_byte: 2
dynamic_field_add_child_object_cost_base: 100
dynamic_field_add_child_object_type_cost_per_byte: 10
dynamic_field_add_child_object_value_cost_per_byte: 10
dynamic_field_add_child_object_struct_tag_cost_per_byte: 10
dynamic_field_borrow_child_object_cost_base: 100
dynamic_field_borrow_child_object_child_ref_cost_per_byte: 10
dynamic_field_borrow_child_object_type_cost_per_byte: 10
dynamic_field_remove_child_object_cost_base: 100
dynamic_field_remove_child_object_child_cost_per_byte: 2
dynamic_field_remove_child_object_type_cost_per_byte: 2
dynamic_field_has_child_object_cost_base: 100
dynamic_field_has_child_object_with_ty_cost_base: 100
dynamic_field_has_child_object_with_ty_type_cost_per_byte: 2
dynamic_field_has_child_object_with_ty_type_tag_cost_per_byte: 2
event_emit_cost_base: 52
event_emit_value_size_derivation_cost_per_byte: 2
event_emit_tag_size_derivation_cost_per_byte: 5
event_emit_output_cost_per_byte: 10
object_borrow_uid_cost_base: 52
object_delete_impl_cost_base: 52
object_record_new_uid_cost_base: 52
transfer_transfer_internal_cost_base: 52
transfer_freeze_object_cost_base: 52
transfer_share_object_cost_base: 52
transfer_receive_object_cost_base: 52
tx_context_derive_id_cost_base: 52
types_is_one_time_witness_cost_base: 52
types_is_one_time_witness_type_tag_cost_per_byte: 2
types_is_one_time_witness_type_cost_per_byte: 2
validator_validate_metadata_cost_base: 52
validator_validate_metadata_data_cost_per_byte: 2
crypto_invalid_arguments_cost: 100
bls12381_bls12381_min_sig_verify_cost_base: 52
bls12381_bls12381_min_sig_verify_msg_cost_per_byte: 2
bls12381_bls12381_min_sig_verify_msg_cost_per_block: 2
bls12381_bls12381_min_pk_verify_cost_base: 52
bls12381_bls12381_min_pk_verify_msg_cost_per_byte: 2
bls12381_bls12381_min_pk_verify_msg_cost_per_block: 2
ecdsa_k1_ecrecover_keccak256_cost_base: 52
ecdsa_k1_ecrecover_keccak256_msg_cost_per_byte: 2
ecdsa_k1_ecrecover_keccak256_msg_cost_per_block: 2
ecdsa_k1_ecrecover_sha256_cost_base: 52
ecdsa_k1_ecrecover_sha256_msg_cost_per_byte: 2
ecdsa_k1_ecrecover_sha256_msg_cost_per_block: 2
ecdsa_k1_decompress_pubkey_cost_base: 52
ecdsa_k1_secp256k1_verify_keccak256_cost_base: 52
ecdsa_k1_secp256k1_verify_keccak256_msg_cost_per_byte: 2
ecdsa_k1_secp256k1_verify_keccak256_msg_cost_per_block: 2
ecdsa_k1_secp256k1_verify_sha256_cost_base: 52
ecdsa_k1_secp256k1_verify_sha256_msg_cost_per_byte: 2
ecdsa_k1_secp256k1_verify_sha256_msg_cost_per_block: 2
ecdsa_r1_ecrecover_keccak256_cost_base: 52
ecdsa_r1_ecrecover_keccak256_msg_cost_per_byte: 2
ecdsa_r1_ecrecover_keccak256_msg_cost_per_block: 2
ecdsa_r1_ecrecover_sha256_cost_base: 52
ecdsa_r1_ecrecover_sha256_msg_cost_per_byte: 2
ecdsa_r1_ecrecover_sha256_msg_cost_per_block: 2
ecdsa_r1_secp256r1_verify_keccak256_cost_base: 52
ecdsa_r1_secp256r1_verify_keccak256_msg_cost_per_byte: 2
ecdsa_r1_secp256r1_verify_keccak256_msg_cost_per_block: 2
ecdsa_r1_secp256r1_verify_sha256_cost_base: 52
ecdsa_r1_secp256r1_verify_sha256_msg_cost_per_byte: 2
ecdsa_r1_secp256r1_verify_sha256_msg_cost_per_block: 2
ecvrf_ecvrf_verify_cost_base: 52
ecvrf_ecvrf_verify_alpha_string_cost_per_byte: 2
ecvrf_ecvrf_verify_alpha_string_cost_per_block: 2
ed25519_ed25519_verify_cost_base: 52
ed25519_ed25519_verify_msg_cost_per_byte: 2
ed25519_ed25519_verify_msg_cost_per_block: 2
groth16_prepare_verifying_key_bls12381_cost_base: 52
groth16_prepare_verifying_key_bn254_cost_base: 52
groth16_verify_groth16_proof_internal_bls12381_cost_base: 52
groth16_verify_groth16_proof_internal_bls12381_cost_per_public_input: 2
groth16_verify_groth16_proof_internal_bn254_cost_base: 52
groth16_verify_groth16_proof_internal_bn254_cost_per_public_input: 2
groth16_verify_groth16_proof_internal_public_input_cost_per_byte: 2
hash_blake2b256_cost_base: 52
hash_blake2b256_data_cost_per_byte: 2
hash_blake2b256_data_cost_per_block: 2
hash_keccak256_cost_base: 52
hash_keccak256_data_cost_per_byte: 2
hash_keccak256_data_cost_per_block: 2
group_ops_bls12381_decode_scalar_cost: 52
group_ops_bls12381_decode_g1_cost: 52
group_ops_bls12381_decode_g2_cost: 52
group_ops_bls12381_decode_gt_cost: 52
group_ops_bls12381_scalar_add_cost: 52
group_ops_bls12381_g1_add_cost: 52
group_ops_bls12381_g2_add_cost: 52
group_ops_bls12381_gt_add_cost: 52
group_ops_bls12381_scalar_sub_cost: 52
group_ops_bls12381_g1_sub_cost: 52
group_ops_bls12381_g2_sub_cost: 52
group_ops_bls12381_gt_sub_cost: 52
group_ops_bls12381_scalar_mul_cost: 52
group_ops_bls12381_g1_mul_cost: 52
group_ops_bls12381_g2_mul_cost: 52
group_ops_bls12381_gt_mul_cost: 52
group_ops_bls12381_scalar_div_cost: 52
group_ops_bls12381_g1_div_cost: 52
group_ops_bls12381_g2_div_cost: 52
group_ops_bls12381_gt_div_cost: 52
group_ops_bls12381_g1_hash_to_base_cost: 52
group_ops_bls12381_g2_hash_to_base_cost: 52
group_ops_bls12381_g1_hash_to_cost_per_byte: 2
group_ops_bls12381_g2_hash_to_cost_per_byte: 2
group_ops_bls12381_g1_msm_base_cost: 52
group_ops_bls12381_g2_msm_base_cost: 52
group_ops_bls12381_g1_msm_base_cost_per_input: 52
group_ops_bls12381_g2_msm_base_cost_per_input: 52
group_ops_bls12381_msm_max_len: 32
group_ops_bls12381_pairing_cost: 52
hmac_hmac_sha3_256_cost_base: 52
hmac_hmac_sha3_256_input_cost_per_byte: 2
hmac_hmac_sha3_256_input_cost_per_block: 2
check_zklogin_id_cost_base: 200
check_zklogin_issuer_cost_base: 200
scoring_decision_mad_divisor: 2.3
scoring_decision_cutoff_value: 2.5
execution_version: 3
consensus_bad_nodes_stake_threshold: 20
max_jwk_votes_per_validator_per_epoch: 240
max_age_of_jwk_in_epochs: 1
random_beacon_reduction_allowed_delta: 800
consensus_max_transaction_size_bytes: 262144
consensus_max_transactions_in_block_bytes: 6291456
Loading

0 comments on commit ddfac43

Please sign in to comment.