# Senate

As we stated earlier, the Senate Contract is the one that connects N members (tokens) with the DAO structure (Chancellor and/or TimeLock).

While in the monolithic structure, the Governor contract call the token directly, in the Light Bulb structure the Chancellor calls the Senate, that keeps his own book with all Senators (owners of members token) voting weight and representation.

{% hint style="info" %}
"Representation" is the list of Members (tokens) that the Senator (token owner) represents.
{% endhint %}

This way Chancellor make just one external call to Senate, that reads his own state to get the information. The cost of keeping the Senate Books updated is diluted between token transfers that uses SenatorVotes extension.

<figure><img src="/files/uCM0UoeNQ5ZRX7UkQqYS" alt=""><figcaption><p>ERC721SenatorVotes Flow</p></figcaption></figure>

Tokens that implements the Votes pattern can be a Member of Senate, but every interaction with Chancellor contract would need one extra external call to the Votes implementer.&#x20;

{% hint style="info" %}
Each Member that implements Votes increases the cost of interacting with the DAO, while SenatorVotes member don't.
{% endhint %}

### New Member Acceptance

If a new member wants to participate in the Senate after it is open, their acceptance must be proposed by an active member of senate and, if the proposal is accepted, the new member begins to participate into the DAO.

Members that implements SenatorVotes and becomes a member after the Senate is open will have to synchronize their owners with the Senate Book, which will increase the acceptance proposal execution cost accordingly to its size.

{% hint style="info" %}
The SenatorVotes extension implements a snapshot function that returns the current voting power distribution.
{% endhint %}

### DAO settings

Different from the Governor pattern, in the Senate/Chancellor pattern the settings of the DAO like voting delay, voting period etc are kept in the Senate Contract using the SenateSettings extension.

To change the parameters after deploy, a proposal to the DAO is needed.

{% hint style="info" %}
In case the values used are static, there is only the need to override the parameter getters
{% endhint %}

### Senate Defense

> “When they call the roll in the Senate, the Senators do not know whether to answer 'Present' or 'Not Guilty'.” ― Theodore Roosevelt

With the flow of new members comes the need to defende the senate against malicious members and senators.

To address this matter, we created two extensions to the Senate:\
1\) The SenateDeputy Extension that creates the Deputy Marshal role, that have limited but essencial power to protect the senate and its members.

2\) The Security extension that exposes to the DAO the quarantine and ban functions.

{% content-ref url="/pages/boUiJCI8GOrHnndXoRAy" %}
[SenateSecurity Extension](/royaldao-contracts/overview/royaldao/senate/senatesecurity-extension.md)
{% endcontent-ref %}

{% content-ref url="/pages/kk1EZEYpRsNGFmKDFCop" %}
[SenateDeputy Extension](/royaldao-contracts/overview/royaldao/senate/senatedeputy-extension.md)
{% endcontent-ref %}


---

# Agent Instructions: 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:

```
GET https://royaldao.gitbook.io/royaldao-contracts/overview/royaldao/senate.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
