# Submit Idle Space Proof

Submits an idle proof to the blockchain, verifying that the miner’s storage node was idle yet responsive during the audit challenge period.

***

## Function Definition

```rust
pub async fn submit_idle_proof(
    &self,
    idle_prove: BoundedVec<u8>,
) -> Result<(TxHash, SubmitIdleProof), Box<dyn std::error::Error>>

```

***

## Description

This asynchronous call allows a miner to submit their idle proof to the CESS chain. The idle proof confirms that a miner’s node was properly operating during the challenge but had no active service requests at that time.

After submission, the chain updates the miner’s challenge status accordingly:

* The idle\_prove field is set to Some().
* If both idle and service proofs are submitted, the value of CountedClear is reset.
* A TEE node is then randomly assigned to verify the submitted proof.

***

## Parameters

| Name         | Type             | Description                                                                                                                       |
| ------------ | ---------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `idle_prove` | `BoundedVec<u8>` | The bounded vector of bytes containing the proof of idleness. It must comply with the maximum proof size limits defined on-chain. |

***

## Returns

| Type                            | Description                                                                                                                                |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `Ok((TxHash, SubmitIdleProof))` | Returns a tuple containing the transaction hash and a `SubmitIdleProof` structure representing the on-chain record of the submitted proof. |
| `Err(Error)`                    | Returned if proof submission fails due to network issues, invalid parameters, or runtime errors during transaction execution.              |

***

## Example

```rust
use cess_rust_sdk::{
    chain::audit::transaction::StorageTransaction as AuditTx,
    polkadot::runtime_types::bounded_collections::bounded_vec::BoundedVec,
};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mnemonic = "bottom drive obey lake curtain smoke basket hold race lonely fit walk//Alice";
    let audit_tx = AuditTx::from_mnemonic(mnemonic);

    // Example idle proof data (replace with actual proof bytes)
    let idle_prove: BoundedVec<u8> = BoundedVec(vec![1, 2, 3, 4, 5]);

    // Submit idle proof
    let (tx_hash, proof_record) = audit_tx.submit_idle_proof(idle_prove).await?;

    println!("Transaction hash: {:?}", tx_hash);
    println!("Idle proof submitted: {:?}", proof_record);

    Ok(())
}

```

***

## Notes

* Idle proofs must adhere to the on-chain proof size limit enforced by the runtime.
* Submitting an idle proof is mandatory for miners to remain eligible for continued participation in the network’s storage challenge process.
* The proof is verified by a TEE node, ensuring trustless and tamper-proof validation.
* **Security Recommendation:** Always use a hardware wallet or other secure signing method when submitting transactions to the CESS blockchain. This helps protect your private keys and prevents unauthorized access or malicious signing.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.cess.network/developer/cess-sdk/sdk-rust/chain/audit/submit_idle_proof.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
