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

# Becoming a validator

# Becoming a Validator

Validators are the attesting layer of the Notareum protocol. They approve or reject verification requests, earn NOTA from fee distribution, and put stake at risk through slashing if they misbehave. This guide walks through tier selection, stake deposit, daily limits, and reward mechanics.

## Requirements at a glance

| Tier          | Min stake      | Daily attestations | Reward multiplier | Slash rate |
| ------------- | -------------- | ------------------ | ----------------- | ---------- |
| BASIC         | 10,000 NOTA    | 100                | 1.0x              | 25%        |
| PROFESSIONAL  | 50,000 NOTA    | 500                | 1.5x              | 35%        |
| ENTERPRISE    | 250,000 NOTA   | 2,500              | 2.5x              | 50%        |
| INSTITUTIONAL | 1,000,000 NOTA | unlimited          | 4.0x              | 75%        |

Higher tiers attest more per day and capture a larger share of the fee pool, but expose more stake to slashing. Pick the tier your operational risk appetite supports.

Full economics are on the [Staking and Tiers](../protocol/staking-and-tiers.md) page.

## Prerequisites

* An Ethereum account funded with enough NOTA for the tier you target.
* Native gas for a handful of transactions (approval, stake, later unstake).
* A service or script that subscribes to `VerificationRequested` events and submits attestations programmatically. Validators who attest manually will not survive at higher tiers.

## Step 1: Acquire NOTA

Acquire NOTA on the primary listed DEX/CEX pairs (see [Resources](../resources/community.md) for links to official trading venues). Send the tokens to the operator account you plan to use for attestation.

## Step 2: Approve the staking contract

```typescript theme={"system"}
import { Contract, parseUnits } from "ethers";

const stakeAmount = parseUnits("50000", 18); // PROFESSIONAL tier
const nota = new Contract(
  contracts.notaToken,
  ["function approve(address,uint256) returns (bool)"],
  signer
);
await (await nota.approve(contracts.validatorStaking, stakeAmount)).wait();
```

## Step 3: Stake

```typescript theme={"system"}
const txHash = await ntm.staking.stake(stakeAmount);
console.log("Staked:", txHash);
```

Tier is assigned automatically by the contract based on total staked NOTA. If you add more later, your tier bumps up; you never need to re-stake.

## Step 4: Verify your tier

```typescript theme={"system"}
import { ValidatorTier } from "@notareum/sdk";

const me = await signer.getAddress();
const info = await ntm.staking.getValidatorInfo(me);
console.log(
  `Tier: ${ValidatorTier[info.tier]}, active: ${info.isActive}, slashes: ${info.slashCount}`
);
```

On a fresh stake, `isActive` becomes `true` immediately and `slashCount` is 0.

## Step 5: Run a notary service

Subscribe to `VerificationRequested` events, fetch the referenced `.nota` file, run your policy checks, and submit attestations:

```typescript theme={"system"}
const engine = new Contract(
  contracts.verificationEngine,
  ["event VerificationRequested(bytes32 indexed resourceId, uint256 indexed requestId, uint8 level)"],
  provider
);

engine.on("VerificationRequested", async (resourceId, requestId, level) => {
  const ok = await evaluatePolicy(resourceId, level);
  await ntm.verification.submitAttestation(resourceId, ok);
});
```

Your policy must remain consistent with the quorum's. Voting against the eventual majority on a resolved request is what triggers slashing; see [Slashing](../protocol/slashing.md).

## Daily verification limits

Each tier has a daily attestation budget. The contract enforces it atomically per UTC day:

```typescript theme={"system"}
const remaining = await ntm.staking.getDailyVerificationsRemaining(me);
console.log(`Attestations left today: ${remaining}`);
```

Institutional is unlimited. For other tiers, a validator that exceeds the daily cap cannot attest again until the next UTC midnight.

## Rewards

Attesting with the majority accrues your share of the verification fee pool, multiplied by the tier multiplier. Rewards are distributed in epochs by the `FeeManager`; see [Fee Model](../protocol/fee-model.md) for exact math.

## Exiting

Call `unstake()`, wait out the 14-day unbonding window, then call `claimStake()`:

```typescript theme={"system"}
await ntm.staking.unstake();
// wait 14 days
await ntm.staking.claimStake();
```

During unbonding, you earn no rewards and cannot attest. Pending slashes still apply to unbonding stake.

## Next

* [Slashing](../protocol/slashing.md)
* [Validator Network protocol page](../protocol/validator-network.md)
* [Participating in Governance](participating-in-governance.md) to vote on protocol parameters
