hashgraph / hedera-sdk-rust

The Hederaβ„’ Rust SDK
Apache License 2.0
26 stars 12 forks source link

Add missing network configurations with `Client` #845

Open RickyLB opened 1 month ago

RickyLB commented 1 month ago

πŸ†•πŸ₯ First Timers Only

This issue is reserved for people who have never contributed to Hedera or any open source project in general. We know that creating a pull request (PR) is a major barrier for new contributors. The goal of this issue and all other issues labeled by 'good first issue' is to help you make your first contribution to Hedera.

πŸ‘Ύ Description of the issue

These SDK methods for the Hedera network are critical for configuring client behavior and ensuring robust network communication. The methods allow for setting and checking transport security (TLS), managing retry attempts for nodes with failed gRPC statuses, and controlling the number of nodes involved in each transaction, which impacts both security and network efficiency.

The Rust SDK is missing the following Client methods that allow developers to configure the Network behavior in client/mod.rs.

impl Client {
    ///
    /// Set if transport security should be used to connect to consensus nodes.
    ///
    pub fn set_transport_security(&self, transport_security: bool) {}

    ///
    /// Is tls enabled for consensus nodes.
    ///
    pub fn is_transport_security(&self) {}

    ///
    /// Max number of times any node in the network can receive a bad gRPC status 
    ///
    pub fn get_max_node_attempts(&self) {}

    ///
    /// Set the max number of times any node in the network can receive a bad gRPC status before being removed from the network.
    ///
    pub fn set_max_node_attempts(&self, max_node_attempts: u32) {}

    ///
    /// Set the max amount of nodes that will be chosen per request. By default, the request will use 1/3rd the network
    /// nodes per request.
    ///
    pub fn set_max_nodes_per_transaction(&self, max_nodes_per_transaction: u32) {}
}

Solution

These methods exist in the Java SDK (sdk/Client.java)

Implementation

  1. Create logic for each method within Impl NetworkData
  2. Expose methods to configure network using Client

πŸ“‹ Step by step guide to do a contribution

If you have never contributed to an open source project at GitHub, the following step-by-step guide will introduce you to the workflow. More information and concrete samples for shell commands for each step can be found in our CONTRIBUTING.md file. A more detailed general documentation of the GitHub PR workflow can be found here.

πŸŽ‰ Contribute to Hacktoberfest

Solve this issue as part of the Hacktoberfest event and get a chance to receive cool goodies like a T-Shirt. 🎽

πŸ€” Additional Information

If you have any questions, just ask us directly in this issue by adding a comment. You can join our community chat at Discord. A general manual about open-source contributions can be found here.

shivaram19 commented 5 days ago

hello , I'm shivaram , I've been working on the rust lately , could you assign me this issue