> For the complete documentation index, see [llms.txt](https://docs.epls.win/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.epls.win/easy-token/quickstart/trustless-by-design.md).

# Trustless by Design

The easy smart contract is deployed on the Base network and operates autonomously after ownership renounced.

**Chainlink Integration**

easy uses Chainlink VRF v2.5 (Verifiable Random Function) for all draw randomness.

| Parameter       | Value        |
| --------------- | ------------ |
| VRF Coordinator | Base Mainnet |
| Subscription ID | TBD          |

{% hint style="info" %}
Every random number request and fulfillment is verifiable on-chain.\
The VRF subscription is funded from the 1% bundle allocation designated for Chainlink operations.
{% endhint %}

{% hint style="info" %} <mark style="color:blue;">**Price Feed**</mark>

The instant draw threshold is calculated in real time using the Chainlink ETH/USD price feed on Base. \
This ensures the prize value remains consistent in USD terms regardless of ETH price movements.
{% endhint %}

***

**Protocol Guarantees**

The easy smart contract is designed so that no single party – including the team – can interfere with the outcome → once deployed and activated, the following guarantees apply:

* **ownership renounced** – after the lottery is activated and limits are removed, the deployer calls `renounceOwnership()`. This permanently removes all admin control. No wallet can modify the contract after this point.
* **permissionless draws** – anyone can trigger a draw by calling `triggerInstantLottery()` or `triggerJackpot()`. The team is not required. The engine runs even if the team is gone.
* **reentrancy protection** – all lottery and payout functions use `nonReentrant` modifiers. Each function can only be executed once per transaction, preventing any attempt to drain funds through repeated calls.
* **VRF timeout** – if Chainlink does not deliver a random number within 1 hour of a draw request, anyone can call `cancelTimedOutDraw()`. The prize is returned to the pool and the draw is cancelled. This prevents the contract from getting stuck.
* **immutable pools** – ETH inside the lottery pools cannot be withdrawn by any address. Funds can only leave the contract through a verified draw settlement.

***

**Verification**

All draws are publicly verifiable:

* find the draw request transaction on Basescan;
* locate the VRF fulfillment callback transaction;
* verify the random seed and winner selection in the contract call data;
* confirm the prize transfer in the same transaction.

Every winner, every prize amount, and every random seed is <mark style="color:blue;">**permanently recorded on the Base blockchain.**</mark>
