Fraxtal Snapshot Voting

Delegating your combined veFXS for Snapshot

After a proposal is discussed in the Governance Forum, it can be voted on using Snapshot. 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). 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.

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

abi.encodeCall(0x6417e439,(<delegatee address>)

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

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

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:

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

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()

Last updated