Skip to content

Update an existing contract on the account

MarshallBelles edited this page Oct 17, 2021 · 1 revision

Example:

use flow_rust_sdk::*;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut connection = FlowConnection::new("grpc://localhost:3569").await?;

    let payer = "f8d6e0586b0a20c7";
    let payer_private_key = "324db577a741a9b7a2eb6cef4e37e72ff01a554bdbe4bd77ef9afe1cb00d3cec";
    let payer_private_key_id = 0;

    let updated_contract = "
        pub contract HelloWorld {

            // Declare a stored state field in HelloWorld
            //
            pub let greeting: String
        
            // Declare a function that can be called by anyone
            // who imports the contract
            //
            pub fun hello(): String {
                return self.greeting
            }
        
            init() {
                self.greeting = \"Hello World Updated!\"
            }
        }
    ";

    let send_transaction_response = connection.update_contract("HelloWorld", &hex::encode(updated_contract.to_owned()), payer, payer_private_key, payer_private_key_id).await?;

    println!("Transaction sent: {:?}", &send_transaction_response);

    let transaction_result = connection.get_transaction_result(send_transaction_response.id).await?;

    println!("Transaction status: {:?}", &transaction_result.status);
    println!("Transaction code: {:?}", &transaction_result.status_code);
    Ok(())
}