# Fraxtal Snapshot Voting

After a proposal is discussed in the [Governance Forum](https://gov.frax.finance/c/governance-proposals/5), it can be voted on using [Snapshot](https://snapshot.org/#/frax.eth). Voting power is the sum of held FXS as well as veFXS from miscellaneous sources. Historically, voting was done on Ethereum, but it since moved to Fraxtal (see [vote](https://snapshot.org/#/frax.eth/proposal/0x60ce169bce5174b399fa09ccc35c14e692a6bb19229d5957e44940f58e89efbc)). Snapshot should pick up all of your voting power sources (Mainnet veFXS, Fraxtal FXS, Fraxtal veFXS, and Fraxtal FPISLocker) **EXCEPT** Mainnet FXS. You would need to bridge your FXS over to Fraxtal to receive the 1:1 votes for it, or lock it in Mainnet veFXS (which has an existing balance proof system on Fraxtal).

## Delegation

Due to Snapshot limitations for the Fraxtal chain, many-to-one delegations will no longer be possible. If you are either 1) Delegating or 2) Unable to access your Mainnet (*delegator*) address on Fraxtal, we deployed a simple 1:1 delegation contract to help.&#x20;

First obtain an address on Fraxtal that you can make arbitrary calls from. It can be a new or existing address. This will be known as the *delegatee* address. You will need to send a cross-chain message to Fraxtal via the L1CrossDomainMessenger (on Ethereum), with the destination contract as DoubleOptInVeFXSDelegation (on Fraxtal). Below are useful addresses and function signatures:

```
// Ethereum
L1CrossDomainMessenger: 0x126bcc31Bc076B3d515f60FBC81FddE0B0d542Ed

// Fraxtal
DoubleOptInVeFXSDelegation: 0x9D269188b741277fF316862B537bd4fce14637b3
    - 0x6417e439: nominateDelegateeCrossChain
    - 0x617075fe: rescindDelegationAsDelegatorCrossChain
```

### Nominate a delegatee

***

Your *delegatee* address on Fraxtal will be able to vote with its own combined voting power as well as the combined voting power of the *delegator*.

#### ***If delegator is on Ethereum only***

1\) Prepare a hex message

{% code overflow="wrap" %}

```
cast calldata "nominateDelegateeCrossChain(address)" "<delegatee address on Fraxtal>"
```

{% endcode %}

2\) Call the following on Ethereum with your *delegator* address:

{% code overflow="wrap" %}

```
L1CrossDomainMessenger.sendMessage(0x9D269188b741277fF316862B537bd4fce14637b3, <hex message>, 500000)
```

{% endcode %}

This calls `DoubleOptInVeFXSDelegation.nominateDelegateeCrossChain` on Fraxtal

3\) Wait a few minutes

4\) With your *delegatee* address on Fraxtal, call:

```
DoubleOptInVeFXSDelegation.acceptDelegation(<delegator address>)
```

#### ***If delegator is on Fraxtal***

1\) With the delegator, call:

```
DoubleOptInVeFXSDelegation.nominateDelegatee(<delegatee address>)
```

2\) With the delegatee, call:

```
DoubleOptInVeFXSDelegation.acceptDelegation(<delegator address>)
```

***

### Rescind a delegatee

Either the delegator or delegatee can unilaterally revoke a delegation at any time.

#### ***If delegator is on Ethereum only***

1\) Call the following on Ethereum with your *delegator* address:

{% code overflow="wrap" %}

```
L1CrossDomainMessenger.sendMessage(0x9D269188b741277fF316862B537bd4fce14637b3, 0x617075fe, 500000)
```

{% endcode %}

This calls `DoubleOptInVeFXSDelegation.rescindDelegationAsDelegatorCrossChain` on Fraxtal

2\) Wait a few minutes, then your delegation on Fraxtal should be rescinded

#### ***As the delegator on Fraxtal***

1\) With the delegator, call:

```
DoubleOptInVeFXSDelegation.rescindDelegationAsDelegator()
```

#### ***As the delegatee on Fraxtal***

1\) With the delegatee, call:

```
DoubleOptInVeFXSDelegation.rescindDelegationAsDelegatee()
```


---

# 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://docs.frax.finance/governance/fraxtal-snapshot-voting.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.
