> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aultblockchain.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Precompile: Distribution

## Address

`0x0000000000000000000000000000000000000801`

## Supported Methods

### Transactions

| Signature                                             |
| ----------------------------------------------------- |
| `claimRewards(address,uint32)`                        |
| `depositValidatorRewardsPool(address,string,tuple[])` |
| `fundCommunityPool(address,tuple[])`                  |
| `setWithdrawAddress(address,string)`                  |
| `withdrawDelegatorRewards(address,string)`            |
| `withdrawValidatorCommission(string)`                 |

### Queries

| Signature                                      |
| ---------------------------------------------- |
| `communityPool()`                              |
| `delegationRewards(address,string)`            |
| `delegationTotalRewards(address)`              |
| `delegatorValidators(address)`                 |
| `delegatorWithdrawAddress(address)`            |
| `validatorCommission(string)`                  |
| `validatorDistributionInfo(string)`            |
| `validatorOutstandingRewards(string)`          |
| `validatorSlashes(string,uint64,uint64,tuple)` |

## Query Examples

Set the current testnet EVM JSON-RPC endpoint and precompile address:

> Security note:
> Use a keystore or hardware wallet for real operations.
> Do not pass raw private keys directly in shell commands.

```bash theme={null}
export RPC_URL="https://test-json-rpc.cloud.aultblockchain.xyz"
export DISTRIBUTION_PRECOMPILE="0x0000000000000000000000000000000000000801"
```

### Direct call

```bash theme={null}
cast call "$DISTRIBUTION_PRECOMPILE" \
  "communityPool()((string,uint256,uint8)[])" \
  --rpc-url "$RPC_URL"
```

### Call from contract

```solidity theme={null}
address constant DISTRIBUTION = 0x0000000000000000000000000000000000000801;

function queryDistributionCommunityPool() external view returns (bytes memory) {
    (bool ok, bytes memory out) = DISTRIBUTION.staticcall(
        abi.encodeWithSignature("communityPool()")
    );
    require(ok, "precompile call failed");
    return out;
}
```

## Notes

* Validator fields use the `aultvaloper...` format.
* Pool funding methods use coin-list arguments (`tuple[]`).

## ABI

<a href="/assets/abi/distribution_precompile_abi.json" download>
  Download Distribution ABI JSON
</a>
