> For the complete documentation index, see [llms.txt](https://igra-labs.gitbook.io/igralabs-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://igra-labs.gitbook.io/igralabs-docs/for-attesters/how-to-check-your-stake.md).

# How to Check Your Stake

Two ways to check your attester stake on Igra Mainnet.

***

## 1. Attester Dashboard (Recommended)

The easiest way is the [Attester Dashboard](https://attester-dashboard.igralabs.com/) dapp.

Open the dashboard with your address:

```
https://attester-dashboard.igralabs.com/?network=mainnet&address=<YOUR_ADDRESS>
```

The dashboard displays:

* **Effective stake** — your stake after any penalties or slashes
* **Staked amount** — your original deposit
* **IGRA rewards** and **iKAS rewards**
* Health bar showing stake integrity

***

## 2. Command Line (Foundry)

Query the Attestation Diamond contract using [Foundry's](https://book.getfoundry.sh/) `cast`:

```bash
# Effective stake (after penalties/slashes)
cast call --rpc-url https://rpc.igralabs.com:8545 \
  0xc24Df70E408739aeF6bF594fd41db4632dF49188 \
  'getEffectiveStake(address)(uint256)' \
  <YOUR_ADDRESS>

# Full attester stats (original deposit, rewards)
cast call --rpc-url https://rpc.igralabs.com:8545 \
  0xc24Df70E408739aeF6bF594fd41db4632dF49188 \
  'getAttesterStats(address)((uint96,uint96,uint96,uint96,uint128),uint256,uint256)' \
  <YOUR_ADDRESS>
```

### Understanding the results

| Method                       | Returns                                                     | Description                                      |
| ---------------------------- | ----------------------------------------------------------- | ------------------------------------------------ |
| `getEffectiveStake(address)` | `uint256`                                                   | Net stake after penalties and slashes            |
| `getAttesterStats(address)`  | `((uint96,uint96,uint96,uint96,uint128), uint256, uint256)` | Attester stats tuple, IGRA rewards, iKAS rewards |

If effective stake equals staked amount, no penalties have been applied.

### Quick check with ethers.js

```javascript
import { JsonRpcProvider, Contract } from "ethers";

const provider = new JsonRpcProvider("https://rpc.igralabs.com:8545");
const diamond = new Contract(
  "0xc24Df70E408739aeF6bF594fd41db4632dF49188",
  [
    "function getEffectiveStake(address) view returns (uint256)",
    "function getAttesterStats(address) view returns (tuple(uint96,uint96,uint96,uint96,uint128),uint256,uint256)"
  ],
  provider
);

const stake = await diamond.getEffectiveStake("YOUR_ADDRESS");
console.log("Effective stake:", stake / 10n ** 18n, "IGRA");
```

***

## Contract Reference

All attester queries go through the **Attestation Diamond** — the single entry point for the attestation system.

| Contract            | Address                                                                                                                          |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| Attestation Diamond | [`0xc24Df70E408739aeF6bF594fd41db4632dF49188`](https://explorer.igralabs.com/address/0xc24Df70E408739aeF6bF594fd41db4632dF49188) |

See [Contract Addresses](/igralabs-docs/for-developers/contract-addresses.md) for the full list of deployed contracts.
