TimelockedDelegator

A LinearTokenTimelock for TRIBE with the ability to sub-delegate locked tokens

Contract

TimelockedDelegator.sol implements ITimelockedDelegator, LinearTokenTimelock

Description

A TRIBE token timelock which allows subdelegation. Managed by the Fei Core Team to distribute vested TRIBE and voting rights to team members and investors.

The contract receives TRIBE tokens that vest linearly over a 4 year schedule to a beneficiary.

Sub-Delegation

During the elected timelock period, any TRIBE in the timelock can be sub-delegated to any address. The TimelockedDelegator creates a proxy delegate contract which escrows the TRIBE and sub-delegates. It can then withdraw voting rights at any time.

The beneficiary decides where to delegate and undelegate. All TRIBE held in the timelock that is not sub-delegated is delegated to the beneficiary.

Events

Delegate
Undelegate
Delegate

delegate TRIBE tokens from timelock

type

param

description

address indexed

_delegatee

delegatee to recieve the TRIBE votes

uint256

_amount

amount of TRIBE delegated

Undelegate

Remove TRIBE votes from delegatee

type

param

description

address indexed

_delegatee

delegatee to remove TRIBE votes

uint256

_amount

amount of TRIBE undelegated

Read-Only Functions

delegateContract

function delegateContract(address delegatee)
external
view
returns (address);

Returns the contract address escrowing and delegating the TRIBE for delegatee.

delegateAmount

function delegateAmount(address delegatee) external view returns (uint256);

Returns the amount of TRIBE delegated in the escrow contract for delegatee

totalDelegated

function totalDelegated() external view returns (uint256);

Returns the total amount of TRIBE delegated in proxy contracts, excluding the TRIBE held natively in the TimelockedDelegator.

tribe

function tribe() external view returns (ITribe);

A reference to the TRIBE contract.

State-Changing Functions

Beneficiary-Only👑

delegate

function delegate(address delegatee, uint256 amount) external;

Delegates amount of TRIBE from the TimelockedDelegator to delegatee by creating a proxy and transferring TRIBE to it.

If delegatee already has delegation, the TimelockedDelegator undelegates it and increments amount before sending to the proxy.

emits Delegate and Undelegate if the delegatee already has some delegated

undelegate

function undelegate(address delegatee) external returns (uint256);

Withdraws all TRIBE from the delegate proxy contract associated with delegatee and returns the amount received.

emits Undelegate

ABIs