> For the complete documentation index, see [llms.txt](https://docs.inceptionlrt.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.inceptionlrt.com/developers/modules/restaking-pools.md).

# Restaking Pools

The `restaking-pool` module powers the aggregation and delegation of user assets into curated strategies. These pools act as intermediaries between users and shared security networks like EigenLayer or Symbiotic, enabling scalable and permissionless participation in restaking.

Each pool can be tailored to a specific strategy or validator set. The architecture supports off-chain coordination via a Go SDK and contract bindings, enhancing automation and interoperability with external systems.

## Key Components

#### 1. **Smart Contracts (`contracts/`)**

* Implement pool logic, user deposits, validator coordination, and restaking lifecycle.
* Likely includes access control (e.g., operator, curator), performance tracking, and rewards management.

#### 2. **Off-chain SDK (Go)**

* Located in `abigen/`, `generated/`, and `generation/` folders.
* Provides tools for interacting with smart contracts from Go-based services.
* Includes scripts like `compile_contracts.sh` and `fastgen.py` to build contract bindings and streamline integration.

#### 3. **Deployment & Governance**

* `deploy/` and `deployment/` folders handle deployment logic, potentially using Hardhat or custom scripts.
* `.openzeppelin/` includes metadata for upgradeable deployments.

## Flow Overview

1. **User deposits assets** into a restaking pool smart contract.
2. **Pool logic** routes assets to a target strategy (e.g., EigenLayer restaking).
3. **Rewards and performance data** are tracked.
4. **External validators** or service providers interact via off-chain bindings using the Go SDK.
5. **Withdrawals or reallocation** can be performed by users or orchestrators.

## Cross-Chain & Off-Chain Coordination

* Go modules enable validators or external AVS actors to read from/write to contracts efficiently.
* `abigen.go`, `utils.go`, and `generated.go` provide a bridge between the on-chain pool state and off-chain decision-making.

## Smart Contract Highlights

| Contract Area      | Role                                                   |
| ------------------ | ------------------------------------------------------ |
| Pool Core          | Manages user deposits, withdrawals, strategy routing   |
| Access Roles       | Defines operators/curators and their permissions       |
| Rewards Logic      | Tracks and distributes earned rewards from restaking   |
| Validator Registry | (If present) Registers approved restaking destinations |

## Extensibility

* Supports modular integration with new shared security networks.
* Can be extended with new off-chain agents using the Go SDK.
* Deployment scripts make pool creation repeatable and auditable.

## Notes

* Implements a blend of Solidity and Go for on-chain and off-chain interoperability.
* Ideal for use cases where external actors (e.g., Shared Security Networks, oracles) must participate in pool coordination.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.inceptionlrt.com/developers/modules/restaking-pools.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
