> For the complete documentation index, see [llms.txt](https://benchmark-labs.gitbook.io/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://benchmark-labs.gitbook.io/documentation/customize.md).

# Customize

## Consensus List

Set specific addresses to be added to the consensus list, when token TRANSFER from the consensus list address will generate a consensus period. For example, LP contract address, treasury address and so on.

## How to Add Consensus List?

It’s recommended to add consensus list during setup and deployment when possible.

The following is an example of how to add consensus list initially.&#x20;

```solidity
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {ERC7660} from "erc7660/ERC7660.sol";

contract ExampleERC7660 is Ownable, ERC7660 {
  constructor(
    string memory name_,
    string memory symbol_,
    uint256 totalSupply_
  ) ERC7660(name_, symbol_, totalSupply_) {

      
  }

   function addPair(address _pair,bool flag) public onlyOwner {
       _addPair(_pair,flat);
    }
   //_routers
    function addRouter(address _router,bool flag) public onlyOwner {
       _addRouter(_router,flag);
    }

    function setDuration(uint256 _duration) public onlyOwner {
        _setDuration(_duration);
    }
}
```

{% hint style="info" %}
The owner of the smart contract in this example will receive all tokens upon completion of the deployment.
{% endhint %}

In addition to this, if you want to add additional consensus lists after the deployment, you can do so by using the following forge script example.

```solidity
contract Whitelist is Script {
    modifier broadcast(address deployer) {
        vm.startBroadcast(deployer);
        _;
        vm.stopBroadcast();
    }

    function run() external override {
        deploy(address(this));
    }

    function deploy(address deployer) public broadcast(deployer) {
        ExampleERC7660 exampleERC7660 = ExampleERC7660(contractAddress);
        exampleERC7660.addPair(targetAddress, true);
    }
}
```

The address added in the example will be added to the consensus lists. \
\
It represents all tokens transferred from this list of addresses (or smart contracts), and the recipient will receive the transferred amount linearly over a specific period of time.


---

# 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://benchmark-labs.gitbook.io/documentation/customize.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.
